Advertisement:

Author Topic: [Performans] Tablolarınızı InnoDB'ye Çevirin  (Read 15755 times)

Online Antes

  • Evil Black Cat
  • SMF Friend
  • SMF Hero
  • *
  • Posts: 8,646
  • Gender: Male
  • Black cat rulz!
    • Antes on GitHub
    • merta on LinkedIn
    • @antesistan on Twitter
    • Lunarfall
[Performans] Tablolarınızı InnoDB'ye Çevirin
« on: April 04, 2010, 11:54:15 AM »
MySQL iki büyük veritabanı saklama motorunu/sistemini (artık siz hangisini daha çok severseniz) destekler: MyISAM ve   InnoDB.  MyISAM daha geçmişte yayımlanmıştır, varsayılandır ve SMF yüklemesi içinde varsayılandır.  Ve bu iyi bir sebepten dolayıdır:   MyISAM, InnoDBye göre tabloları daha hızlı okur.

Ancak, InnoDBnin MyISAM karşısında bazı önemli avantajları vardır.  İlki, bu önemlidir çünkü sorgunun nasıl çalıştığını dair temel anlamlara sahiptir. Diyelim ki ben sorguyu şu şekilde çalıştırdım:

SELECT   ID_MSG
FROM smf_messages
WHERE subject = 'Tabloları InnoDBye Çevir'
LIMIT 1;

MySQL belirli bir konuya bakarken (ki bu biraz zaman alır, konu sütunu bir içeriğe sahip değilse) kimseler o tabloya yazamaz. Bu da şu demektir, kimse tabloya ileti atamaz. Mesaj tablosu için, bu o kadar da büyük bir sorun değildir - ve TamMetin ( FULLTEXT ) içerik olması için zaten MyISAM olmalıdır.

Ancak, bu durumun topics, log_topics, ve friends tabloları için daha fazla önemsenmesi gereklidir. Örneğin, her konu görüntülediğinizde şu gerçekleşmektedir:

UPDATE smf_topics
SET numViews   = numViews + 1
WHERE ID_TOPIC = ###
LIMIT 1;

Eğer bir tablo kilitlenmişse, beklemesi gerekir... artık her ne oluyor veya bitmesi gerekiyorsa. Aynı şey bir çok kişinin aynı konuyu ( aynı anda ) görüntülediğinde de gerçekleşir. Bu konu tablolarının doğrultusunda hazır olana kadar beklemek zorundadır.

Bu InnoDB için doğru değildir.  Eğer iki kişi aynı konuyu görüntülüyorsa, evet... numViews güncellemesini beklemeleri gerekmektedir. Fakat iki farklı konuyu görüntülüyorlarsa, anında.  Bu büyük bir farktır, ve beklentilerinizin üstünde bir farklılık yaratabilir, bu biraz da sunucunuza bağlıdır.  Fakat, unutmayın... Bir ceza da olabilir.  MyISAM kötü bir şekilde kilitlenebilir, fakat yinede daha hızlı okur. Çok fazla değişmeyen tablolar içinse, kategoriler gibi, genellikle InnoDB kullanmak için bir sebep yoktur.

Örneğin, status.php'ye bakıp şöyle bi şey görebilirsiniz:

95 (87 uyuyor, 2 çalışıyor, 6 kilitli)

Bu şu demek çalışan sorgular diğer sorguları kilitliyor ve beklemelerine neden oluyor. Bu şuna işaret eder bazı tablolarda InnoDB kullanmanız gerekiyor ama kullanmıyorsunuz, fakat her zaman bu anlama gelmez. SMF ile, forumunuzdaki aktivite bir noktaya ulaştığında, şu sorguyu çalıştırarak tablolarınızı InnoDB'ye çevirebilirsiniz:

Bu kod SMF2 RC3 için tarafımca düzeltilmiştir ( log_search bölümü )
Code: [Select]
ALTER TABLE smf_attachments
TYPE=InnoDB;
ALTER TABLE smf_collapsed_categories
TYPE=InnoDB;
ALTER TABLE smf_log_actions
TYPE=InnoDB;
ALTER TABLE smf_log_boards
TYPE=InnoDB;
ALTER TABLE smf_log_errors
TYPE=InnoDB;
ALTER TABLE smf_log_karma
TYPE=InnoDB;
ALTER TABLE smf_log_mark_read
TYPE=InnoDB;
ALTER TABLE smf_log_online
TYPE=InnoDB;
ALTER TABLE smf_log_search_messages
TYPE=InnoDB;
ALTER TABLE smf_log_search_results
TYPE=InnoDB;
ALTER TABLE smf_log_search_subjects
TYPE=InnoDB;
ALTER TABLE smf_log_search_topics
TYPE=InnoDB;
ALTER TABLE smf_log_topics
TYPE=InnoDB;
ALTER TABLE smf_members
TYPE=InnoDB;
ALTER TABLE smf_pm_recipients
TYPE=InnoDB;
ALTER TABLE smf_sessions
TYPE=InnoDB;
ALTER TABLE smf_settings
TYPE=InnoDB;
ALTER TABLE smf_topics
TYPE=InnoDB;

Orjinal Hali Budur...
Code: [Select]
ALTER TABLE smf_attachments
TYPE=InnoDB;
ALTER TABLE   smf_collapsed_categories
TYPE=InnoDB;
ALTER TABLE smf_log_actions
TYPE=InnoDB;
ALTER   TABLE smf_log_boards
TYPE=InnoDB;
ALTER TABLE smf_log_errors
TYPE=InnoDB;
ALTER   TABLE smf_log_karma
TYPE=InnoDB;
ALTER TABLE smf_log_mark_read
TYPE=InnoDB;
ALTER   TABLE smf_log_online
TYPE=InnoDB;
ALTER TABLE smf_log_search
TYPE=InnoDB;
ALTER   TABLE smf_log_topics
TYPE=InnoDB;
ALTER TABLE smf_members
TYPE=InnoDB;
ALTER   TABLE smf_pm_recipients
TYPE=InnoDB;
ALTER TABLE smf_sessions
TYPE=InnoDB;
ALTER   TABLE smf_settings
TYPE=InnoDB;
ALTER TABLE smf_topics
TYPE=InnoDB;

Extradan, log_floodcontrol 'ün MEMORY/HEAP olmasını isteyebilirsiniz

Code: [Select]
DROP TABLE smf_log_floodcontrol;
CREATE TABLE smf_log_floodcontrol (
    ip char(16) NOT NULL,
  logTime int(10) unsigned NOT NULL default   '0',
  PRIMARY KEY (ip),
  KEY logTime (logTime)
) TYPE=HEAP;

Her şeyden önce, forumunuzu bakım moduna alıp bu işlem(i)(leri) öyle gerçekleştirin. Eğer phpmyadmin konusunda bilginiz yoksa buraya(ingilizce) tıklamanız yeterli olacaktır. Eğer bir problem ile karşılaşırsanız buraya(ingilizce) tıklayarak repair_settings.php denilen garip php dosyasını indirebilirsiniz :)
Active Project(s): [ SimpleDesk ] # [ Lunarfall ] # [ CoreStore ]

Past Project(s): [ ezPortal ]

Offline Alpay

  • Local Moderator
  • SMF Hero
  • *
  • Posts: 3,594
  • Gender: Male
  • test
    • Personal Web Page
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #1 on: April 04, 2010, 12:55:38 PM »
Bende bayadır InnoDB ye geçmek istiyorum ancak halen araştırıyorum :P 1 senedir kadar sanırsam bu üşengeçliğide geçti =))) Teşekkür ederiz arkadaşım.

Offline grafitus

  • SMF Hero
  • ******
  • Posts: 3,034
    • beratdogan on GitHub
    • beratdogan on LinkedIn
    • @beratdgan on Twitter
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #2 on: April 04, 2010, 01:13:53 PM »
Harika bir çeviri! Birçok kişinin işine yarıyacak bir şey bu. Yalnız status.php'de ne ola ki?

Offline Yağız...

  • SMF Super Hero
  • *******
  • Posts: 10,809
  • Gender: Male
    • MMO Browser

Offline grafitus

  • SMF Hero
  • ******
  • Posts: 3,034
    • beratdogan on GitHub
    • beratdogan on LinkedIn
    • @beratdgan on Twitter
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #4 on: April 04, 2010, 03:21:55 PM »
http://download.simplemachines.org/index.php?thanks;filename=status.php
Mmm.. Güzel dosyaymış. Windows'ta çalıştırdığım dosyaları bile gösterdi. :)

Online Antes

  • Evil Black Cat
  • SMF Friend
  • SMF Hero
  • *
  • Posts: 8,646
  • Gender: Male
  • Black cat rulz!
    • Antes on GitHub
    • merta on LinkedIn
    • @antesistan on Twitter
    • Lunarfall
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #5 on: April 04, 2010, 03:38:05 PM »
Bunların hepsi daha başlangıç ne kadar döküman varsa elden geçirip ( performans hakkında ) çevirip sunucam , ayrıca bu kadar kısa sürede onayladığınız için tekrar teşekkür ederim :)

Yanlız status.php 'yi bu performans işlemini uygulamadan önce çalıştırıp bazı detayları not edin , uyguladıktan sonra tekrar çalıştırın , böylece ne kadar hız farkı olduğunu bizede söylemiş olursunuz
Active Project(s): [ SimpleDesk ] # [ Lunarfall ] # [ CoreStore ]

Past Project(s): [ ezPortal ]

Offline rölyef

  • Jr. Member
  • **
  • Posts: 271
  • Gender: Male
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #6 on: April 11, 2010, 12:07:55 PM »
Çeviri için teşekkürler. Fakat, bu çeviri ileri seviyede kullanıcılara hitap ediyor. Başlancıç seviyesinde ve orta seviyede kullanıcılar buradan bir şey anlamıyor. Daha açıklayıcı bir çeviri ütfen.

Online Antes

  • Evil Black Cat
  • SMF Friend
  • SMF Hero
  • *
  • Posts: 8,646
  • Gender: Male
  • Black cat rulz!
    • Antes on GitHub
    • merta on LinkedIn
    • @antesistan on Twitter
    • Lunarfall
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #7 on: April 11, 2010, 01:21:29 PM »
Çeviri için teşekkürler. Fakat, bu çeviri ileri seviyede kullanıcılara hitap ediyor. Başlancıç seviyesinde ve orta seviyede kullanıcılar buradan bir şey anlamıyor. Daha açıklayıcı bir çeviri ütfen.

üzgünüm ama bu en basit anlatım ve orjinal metne sağdık kalınarak çeviri yapıldı.
Active Project(s): [ SimpleDesk ] # [ Lunarfall ] # [ CoreStore ]

Past Project(s): [ ezPortal ]

Offline gevv

  • Full Member
  • ***
  • Posts: 519
  • Gender: Male
  • 320volt.com elektronik ve biraz daha fazlası
    • Elektronik projeler uygulamalar bilgiler web grafik
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #8 on: April 15, 2010, 05:15:12 PM »
Teşekkürler

merak ettim  simplemachines.org hanisini kullanıyor acaba  :)    birde   çevirmeyi deneyen oldumu
320volt.com elektronik ve biraz daha fazlası

Online Antes

  • Evil Black Cat
  • SMF Friend
  • SMF Hero
  • *
  • Posts: 8,646
  • Gender: Male
  • Black cat rulz!
    • Antes on GitHub
    • merta on LinkedIn
    • @antesistan on Twitter
    • Lunarfall
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #9 on: April 17, 2010, 04:43:49 PM »
Teşekkürler
merak ettim  simplemachines.org hanisini kullanıyor acaba  :)    birde   çevirmeyi deneyen oldumu

SMF kullanıyo mu bilmem ama ben kullanıyorum, sonuç olarak bu konuyu yazan adam SMF'nin kurucusu :)
Active Project(s): [ SimpleDesk ] # [ Lunarfall ] # [ CoreStore ]

Past Project(s): [ ezPortal ]

Offline Haghi

  • Newbie
  • *
  • Posts: 8
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #10 on: June 25, 2010, 08:36:27 AM »
Teşekkür ederiz arkadaşım.Önemli bir bilgi. :D

Offline kagan1243

  • Semi-Newbie
  • *
  • Posts: 28
    • Zayıflama lida fx15 ve biber hapı zlfvb
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #11 on: July 06, 2010, 05:34:30 PM »
performans tabloları önemli :)

Offline ersinoksuz

  • Newbie
  • *
  • Posts: 2
Re: [Performans] Tablolarınızı InnoDB'ye Çevirin
« Reply #12 on: November 26, 2017, 08:16:40 AM »
süper