Satu hal yang harus dipertimbangkan adalah bagaimana MySQL menggunakan buffer untuk mesin penyimpan utamanya: InnoDB dan MyISAM .
Apa yang terletak di dalam memori sangat berbeda antara mesin penyimpanan ini.
InnoDB menyimpan data dan halaman indeks. Mereka dimuat ke dalam Pool Buffer InnoDB, yang berukuran oleh innodb_buffer_pool_size .
MyISAM hanya menyimpan halaman indeks dan mereka dimuat ke dalam Cache Kunci (Kunci Buffer), yang berukuran oleh key_buffer_size .
Anda harus menggunakan information_schema.tables untuk mendapatkan data dan ukuran indeks yang ditempati pada disk untuk ukuran Pool InnoDB Buffer dan MyISAM Key Cache dengan benar .
Bergantung pada seberapa banyak data yang Anda miliki dan berapa banyak waktu yang Anda izinkan, Anda bisa menghangatkan cache sebagai berikut:
Untuk setiap tabel, TableT
- kebagian setiap indeks NDX
- untuk setiap indeks NDX
- Jalankan SELECT setiap kolom di NDX, setidaknya satu kolom tidak diindeks di TableT dari TableT
Dengan melakukan ini, Anda menjamin bahwa setiap halaman data dan indeks dibaca setidaknya sekali. Mereka akan duduk di cache. Konsep ini dipraktekkan, sebagian dan secara prinsip, oleh Percona . Percona membangun konsep ini menjadi mk-slave-prefetch . Apa yang dilakukan oleh program ini adalah
- baca log relay pada slave di depan slave yang memproses SQL di dalamnya
- mengambil pernyataan SQL dari log relai dan mengubahnya menjadi SELECT menggunakan klausa WHERE, GROUP BY, dan ORDER BY sebagai panduan untuk memilih indeks
- jalankan pernyataan SELECT yang berasal dari SQL yang dikonversi
Ini memaksa budak untuk memiliki 99,99% dari data yang dibutuhkan oleh budak untuk memproses SQL dengan cepat. Ini juga membuat budak dipersiapkan jika Anda secara manual failover ke budak dan mempromosikannya ke master SIAPA CACHES HANYA TENTANG SAMA SEBAGAI MASTER YANG ANDA GAGAL LEBIH DARI.
KESIMPULAN
Tidak ada yang mengalahkan cache yang siap, mau, dan dapat Anda gunakan di lingkungan INSERTS, UPDATE, dan DELETE yang berat.
Cobalah !!!
CAVEAT
Dengan lahirnya produk-produk seperti memcached, beberapa telah menjauh dari kebutuhan untuk melakukan penyetelan MySQL yang benar. Memang, banyak situs mendapat manfaat dari peningkatan pengambilan data yang disediakan dengan mengendalikan perilaku caching data karena pengembang dengan cepat melihat dengan memcached. Banyak situs lain, hanya dengan mengganti mesin penyimpanan atau mengkonfigurasi MySQL dengan benar, telah menyadari manfaat kinerja yang sama. Sebelum menyerah pada basis data dan menggunakannya secara ketat sebagai repositori, manfaatkan sebagian besar basis data Anda. Ikuti uji tuntas dan Anda mungkin akan terkejut apa yang akan dilakukan MySQL untuk Anda.