Kesinlikle bir MySQL Bakış Açısından, bir MySQL Örneği için verilerin / dizinlerin önbelleğe alınmasının nasıl geliştirileceğine dair önerilerim var.
MySQL için iki büyük Depolama Motoru olduğunu unutmayın
Önbellekleme mekanizmaları farklıdır. Seçtiğiniz Depolama Motorunu ayarlamak için yapabileceğiniz bir şey var.
MyISAM
MyISAM yalnızca dizin sayfalarını önbelleğe alır. Verileri asla önbelleğe almaz. MyISAM tabloları için G / Ç geliştirmek için iki şey yapabilirsiniz.
MyISAM Geliştirme # 1
VARCHAR sütunları olan herhangi bir MyISAM tablosu, ilk tasarıma dokunmadan dahili olarak CHAR'a dönüştürülebilir. Mydb.mytable adlı bir tablonuz olduğunu ve bunun için G / Ç'yi geliştirmek istediğinizi varsayalım:
ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;
Bu, tablonun boyutunu% 60 -% 100 artıracak, ancak başka bir şey değiştirmeden G / Ç'de% 20-30 performans artışı sağlayacaktır . Bu konuda daha önce DBA StackExchange yazdı:
MyISAM Geliştirme # 2
MyISAM Anahtar Önbelleğini artırmanız gerekir ( key_buffer_size boyutunda ). Bu sorguyu çalıştırın, lütfen:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;
Bu, mevcut veri kümenize göre ideal key_buffer_size değerini gösterir.
InnoDB'nin
InnoDB hem verileri hem de dizinleri önbelleğe alır. Tüm verilerinizi InnoDB'ye dönüştürdüyseniz ve şu anda tüm InnoDB veritabanından WordPress çalıştırıyorsanız, InnoDB Buffer Pool'unuzu ( innodb_buffer_pool_size ile boyutlandırılmış ) boyutlandırmanız gerekir . Bu sorguyu çalıştırın, lütfen:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
Bu, mevcut veri kümenize göre ideal key_buffer_size değerini gösterir.
projeksiyonlar
Veri kümenizin 20 kat daha fazla büyüyeceğini tahmin ederseniz, bu sorgunun 20 ile önerdiğini katlayın. MyISAM veri kümenizin 15 MB ve 3 MB’nin dizinlerinizin toplamı olduğunu varsayalım. 20 kat daha fazla veriye sahip olacağınızı tahmin ediyorsanız, key_buffer_size değerini /etc/my.cnf içinde bunun gibi 60 MB olarak ayarlayın:
[mysqld]
key_buffer_size=60M
ardından MySQL'i yeniden başlatın. Aynı şey InnoDB Buffer Pool için de geçerlidir.
Tüm verileriniz InnoDB ise, StackOverflow'da yayınladığım InnoDB altyapınızın tam bir Temizlemesini gerçekleştirmeniz gerekir .