Anasayfa Makale MySQL Performansı Nasıl Artırılır?

MySQL Performansı Nasıl Artırılır?

Bu yazımızda, MySQL veritabanını daha verimli ve etkili kullanmak için başvurabileceğiniz yöntemlere bakıyoruz.

MySQL ile yaygın yapılan yapılandırma hataları, ciddi performans sorunlarına neden olabilir. Aslında birçok yapılandırma parametresinden sadece birini yanlış yapılandırırsanız bile, veritabanının performansı düşürebilir. Elbette, MySQL’nin performansı genellikle MySQL sorgularınızın verimliliğine bağlıdır. Başka seçeneklere bakmadan önce, performans sorunlarınızın, kötü yazılmış MySQL sorgularından kaynaklanmadığından emin olmanız önemlidir. Bunun için MySQL’nin Slow Query Mode, log_queries_not_using_indexes veya Datadog, Instrumental, Panopta, Site24x7, Solarwinds gibi APM tabanlı izleme araçlarını ve daha birçok aracı, MySQL sorgularınızın verimliliğini değerlendirmek için kullanabilirsiniz.

MySQL’in ayarlanması ve ince ayarları, oldukça kapsamlı bir konudur. Bu nedenle, bugün buraya herhangi bir önerilen yapılandırma satırı, değer veya ayar yerleştirmeye çalışmayacağız. Önerilen ayarlara dayalı makalelerde çok dikkatli olmak gerekir. Bu makale ise, sorgularınızı zaten optimize ettiğinizi ve şimdi MySQL için en iyi performans yapılandırma seçeneklerini (ör. My.cnf) seçerek, rehberlik aradığınızı varsayarak hazırlanmıştır. Herkese uyan, sihirli tek bir öneri çok az ve bazen neredeyse imkansız olduğundan, öneriler durumdan duruma göre büyük ölçüde değişebilir. Bu nedenle, yazıyı faydalı linklerle destekleyeceğiz.

En güncel MySQL sunucu sürümleriyle performansı koruma

MySQL’in her yeni sürümüyle birlikte, önceki sürümlere göre önemli performans artışı ve özellik geliştirmeleri gelir. Bu yüzden en önemli tavsiye, her zaman en güncel sürümü kullanmanız olacaktır. Burada, bazı sürümlerin performans karşılaştırmalarına bu adresten bir göz atalım.

MySQL performans ayarları için öneriler

Aşağıda listelenen ayar komut dosyaları dışında, mysql.com yoluyla veya doğrudan MySQL, Pecona’nın veya MariaDB makalelerine / belgelerine referans vermedikçe, internetteki tavsiyelerden kaçınmaya çalışın. İnternette birbiriyle çelişen bir sürü tavsiye ve görüş bulunmakta. Bu nedenle bizim tavsiyemiz, yapılandırma değişikliklerinizi, her zaman resmi belgelerle çapraz bir şekilde kontrol etmenizdir. Bu, burada bahsedeceğimiz konular için de geçerlidir. Aslında, MySQL’in varsayılanlarını değiştirmeye çalışırken, değişiklikler için bir temeliniz yoksa, onu olduğu gibi bırakmak en iyisidir. Şüphe duyduğunuzda, varsayılanlara bağlı kalın. Değişikliklerinizi her zaman kıyaslamalara, karşılaştırmalara ve zaman içinde test edilmiş ilk elden verilere dayandırın. Bu sayede, hem ideal olana ulaşmış olursunuz, hem de veritabanınızı kendi ellerinizle mahvetmenin önüne geçmiş olursunuz.

MySQL Depolama Motorunu (Storage Engine) Ayarlama

Bu, basit bir konu. InnoDB’yi kullanın ve mümkün olduğunda MyISAM’den kaçının. Sebebi, bu nedenlerden dolayı:

  • MySQL 5.5 ve daha sonraki sürümleri, bilgi tutarlılığı kısıtlamaları ve daha yüksek eşzamanlılık sağlamak için InnoDB motoruna geçmiştir.
  • InnoDB’de daha iyi çökme kurtarma (crash recovery) özelliği vardır.
  • InnoDB, row-level locking (satır düzeyinde kilitleme) özelliğine sahiptir. MyISAM yalnızca full table-level (tüm tablodüzeyinde) kilitleme yapabilir.
  • MyISAM gibi, InnoDB de artık MySQL 5.6’dan itibaren FULLTEXT arama dizinlerine sahip
  • InnoDB işlemleri, yabancı anahtarları ve ilişki kısıtlamalarını destekler, MyISAM ise desteklemez.

MySQL performansını komut dosyalarıyla ayarlama

Profesyonel MySQL ayarını komut dosyalarıyla değiştiremezsiniz. Komut dosyaları temel kılavuzlar olarak hizmet eder, bazen yerinde olur ancak çoğu zaman yalnızca en kötü yapılandırılmış parametreleri çözecek gevşek kılavuzlardan ibarettirler. Bunları bir başlangıç noktası olarak kullanmak en iyisidir. Yani, MySQL’i ayarlamak için bir profesyonelle iletişime geçmeden önce, bu “ayarlama komut dosyalarını” kullanın, böylece en azından my.cnf dosyanızda, -sözde- utanç verici ya da saçma bir yapılandırma bulunmaz. Örneğin, join_buffer_size parametresi, toplam veritabanı boyutu 1GB’den az olduğunda 4GB olarak ayarlanır.

Şimdi, MySQL performans ayarı için mevcut olan popüler komut dosyalarına ve araçlara bakalım:

  • MySQLTuner,
  • Tuning-Primer,
  • MySQLreport,
  • Percona Toolkit,
  • phpMyAdmin Advisor.

MySQLTuner

MySQL yapılandırmanızda size yardımcı olacak ve daha yüksek performans ve kararlılık için önerilerde bulunacak, Perl’de yazılmış bir komut dosyasıdır.

MySQL

MySQLTuner GitHub sayfası

Tuning-Primer

Bu komut dosyası, sunucu değişkenlerini ayarlamak amacıyla mantıklı öneriler üretmek için “SHOW STATUS LIKE…” ve “SHOW VARIABLES LIKE…” değerlerinden bilgileri alır. MySQL 3.23 ve üstü (5.1 dahil) tüm sürümleriyle uyumludur.

Percona Toolkit

Percona Toolkit, manuel olarak gerçekleştirilmesi çok zor veya karmaşık olan çeşitli MySQL görevlerini gerçekleştirmek için geliştirilmiş, DBA’larınızı kendi hedeflerinize ulaşmanıza yardımcı olacak işler için serbest bırakan, gelişmiş, açık kaynaklı, komut satırı araçları koleksiyonudur.

Yararlı araçlar şunları içerir:

pt-align, pt-archiver, pt-config-diff, pt-deadlock-logger, pt-diskstats, pt-duplicate-key-checker, pt-fifo-split, pt-find, pt-fingerprint, pt-fk-error-logger, pt-heartbeat, pt-index-usage, pt-ioprofile, pt-kill, pt-mext, pt-mongodb-query-digest, pt-mongodb-summary, pt-mysql-summary, pt-online-schema-change, pt-pg-summary, pt-pmp, pt-query-digest, pt-secure-collect, pt-show-grants, pt-sift, pt-slave-delay, pt-slave-find, pt-slave-restart, pt-stalk, pt-summary, pt-table-checksum, pt-table-sync, pt-table-usage, pt-upgrade, pt-variable-advisor and pt-visual-explain.

phpMyAdmin Advisor

Advisr sistemi, MySQL durum değişkenlerini analiz ederek, sunucu değişkenleri hakkında size öneriler sunar.

MySQL

phpMyAdmin, MySQL’in Web üzerinden yönetimini gerçekleştirmeyi amaçlayan PHP’de yazılmış ücretsiz bir yazılım aracıdır.

Mysqlreport

MySQL

Mysqlreport, SHOW STATUS’daki değerleri MySQL’in ne kadar iyi çalıştığının derinlemesine anlaşılmasını sağlayan, okunması kolay bir rapora dönüştürür. Ayrıca, SHOW STATUS’u manuel olarak yorumlamak için daha iyi bir alternatiftir. Aslında, pratik olan da tek alternatiftir.