MYSQL

Optimasi Konfigurasi Storage engine MyISAM

シックス , MYSQL
0
143

Mulai MySQL versi 8 dukungan terhadap engine MyISAM mulai berkurang (dengan mulai dikuranginya fitur pada MyISAM) dan sepertinya akan dihentikan di versi berikutnya, namun demikian, engine ini masih layak untuk diperhitungkan, terutama jika kita menggunakan MySQL versi 5.7 atau versi sebelumnya.

Selain itu, MariaDB versi 10.3 juga masih mendukung penuh engine ini dan sepertinya kedepan dukungan terhadap engine ini akan terus berkembang. Dengan demikian, tidak ada salahnya jika kita mempelajari berbagai konfigurasi yang dapat kita gunakan untuk melakukan optimasi engine MyISAM.

1. key_buffer_size

Key_buffer_size merupakan konfigurasi pada engine MYISAM unuk menentukan besarnya index buffer yang dapat disimpan di memory (RAM), index buffer ini berpengaruh terhadap kecepatan membaca index. Ingat kembali bahwa MyISAM dan InnoDB berbeda dalam cara mencache data. MyISAM hanya mencache key(index) dan menyerahkan pengelolaan cache data ke OS, sedangkan InnoDB mencache semuanya baik index maupun data, sehingga proses cache data lebih dapat diandalkan.

Untuk mengetahui besarnya nilai key_buffer_size, jalankan perintah berikut:


MariaDB  [(none)]>  SHOW  variables  LIKE  "%key_buffer_size%";

+-----------------------+------------+
|  Variable_name	|  Value     |
+-----------------------+------------+
|  key_buffer_size      |  16777216  |
+-----------------------+------------+
1	row  in  set  (0.002  sec)

Pada contoh diatas terlihat bahwa nilai key_buffer_size adalah 16M, nilai tersebut adalah nilai default pada MariaDB

Berapa nilai yang ideal?

Untuk menentukan nilai ideal dari konfigurasi ini, cara terbaik adalah membandingkan nilai key_read_request yang merupakan total request (permintaan) untuk membaca index dan nilai key_reads yang merupakan nilai banyaknya request yang dieksekusi dengan membaca index dari hardisk dengan formula key_reads/key_read_request. Untuk mengetahui kedua nilai ini, jalankan perintah berikut:


MariaDB  [(none)]>  SHOW  STATUS  LIKE  '%key_read%';

+-----------------------+--------------+
|  Variable_name	|  Value       |
+-----------------------+--------------+
|  Key_read_requests    |  33997631188 |
|  Key_reads	        |  28948755    |
+-----------------------+--------------+
2	rows  in  set  (0.327  sec)

Note: Contoh diatas diambil dari website wordpress standar dengan kunjungan rata-rata 2.500 pengunjung/hari dimana nilai key_buffer_size nya telah disesuaikan menjadi 137M

Semakin kecil nilai rasio maka semakin baik, nilai maksimal yang dapat diterima adalah 1:100 (0,01), lebih rendah lebih bagus, misal 1:1000 (0,001) Pada contoh diatas, terlihat bahwa nilai rasio adalah 0,000851493 atau sekitar 1:10000 sehingga sudah optimal.

Jika kita tidak menggunakan storage engine MyISAM sama sekali maka kita dapat memberi nilai konfigurasi ini serendah mungkin, misal 64K.

2. myisam_max_sort_file_size

Konfigurasi ini mengatur ukuran maksimal temporary file yang akan digunakan ketika MySQL membuat ulang index pada engine MyISAM (seperti ketika menjalankan perintah REPAIR TABLE, ALTER TABLE, atau LOAD DATA INFILE). Jika ukuran tabel lebih besar dari nilai ini, maka index akan dibuat menggunakan key cache, yang memakan waktu lebih lama.

Nilai default untuk konfigurasi ini sudah besar yaitu 2G baik pada MySQL maupuan MariaDB


mysql>  SHOW  VARIABLES  LIKE  "%myisam_max_sort_file_size%";

+-----------------------------+--------------+
|  Variable_name	      |  Value	     |
+-----------------------------+--------------+
|  myisam_max_sort_file_size  |  2146435072  |
+-----------------------------+--------------+
1  row  in  set  (0.00  sec)

Karena sudah besar, maka kita dapat menggunakan nilai default konfigurasi ini, tidak perlu mengubahnya.

3. myisam_sort_buffer_size

myisam_sort_buffer_size merupakan ukuran buffer yang dialokasikan ketika engine MyISAM melakukan sorting index, yaitu saat menjalankan perintah REAPAIR TABLE atau ketika membuat index (saat menjalankan perintah CREATE INDEX, ALTER TABLE)

Nilai default untuk konfigurasi ini adalah 8M pada MySQL dan 134M pada MariaDB


mysql>  SHOW  VARIABLES  LIKE  "%myisam_sort_buffer_size%";

+---------------------------+-----------+
|  Variable_name	    |  Value	|
+---------------------------+-----------+
|  myisam_sort_buffer_size  |  8388608  |
+---------------------------+-----------+
1  row  in  set  (0.60  sec)

Agar proses dapat optimal, kita dapat memberi nilai besar pada konfigurasi ini, misal 128M.

0 Comments

×