Cara Menghapus Cache MySQL: Praktik Terbaik untuk Jenis Cache Berdasarkan Versi

目次

1. Pendahuluan

MySQL adalah basis data representatif yang digunakan oleh banyak layanan web dan sistem di seluruh dunia. Untuk meningkatkan performa dan mengurangi beban server, MySQL menyediakan berbagai mekanisme caching. Namun, di lingkungan pengembangan atau operasional, Anda mungkin mengalami masalah seperti “data terbaru tidak tercermin karena cache” atau “cache lama menghalangi saat mengubah pengaturan atau debugging”.

Dalam skenario seperti itu, operasi “menghapus (menghapus atau mereset) cache MySQL” menjadi berguna. Misalnya, ketika Anda ingin segera memverifikasi pembaruan data di lingkungan uji, menghapus semua cache sebelum mengambil snapshot, atau memaksa mereset cache yang tersisa secara tidak sengaja, operasi ini sangat efektif.

Dalam artikel ini, kami akan menjelaskan secara jelas bagi mereka yang tertarik dengan “mysql cache clear” berdasarkan jenis cache, bagaimana cara membersihkan setiap jenis cache. Kami juga akan membahas perbedaan spesifikasi cache berdasarkan versi MySQL, peringatan operasional, dan pertanyaan sering diajukan beserta solusinya.

Dengan memahami sepenuhnya mekanisme cache dan metode pembersihannya, Anda seharusnya dapat menggunakan MySQL lebih stabil dan efisien.

2. Arsitektur Cache berdasarkan Versi MySQL

Fungsi caching MySQL berbeda secara signifikan dalam konten dan perilaku tergantung pada versinya. Terutama antara MySQL 5.7 dan sebelumnya dengan MySQL 8.0 dan setelahnya, filosofi desain caching itu sendiri telah berubah. Di sini kami mengatur jenis cache utama yang umum digunakan di MySQL dan perbedaan berdasarkan versi.

2.1 Query Cache (MySQL 5.7 dan Sebelumnya)

Pada versi MySQL sebelum 5.7, fungsi bernama “Query Cache” menjadi standar. Mekanisme ini menyimpan pernyataan SELECT yang dieksekusi dan set hasilnya di memori, dan ketika kueri yang sama muncul, ia mengembalikan hasil dengan cepat. Ini efektif untuk layanan web sederhana, tetapi di lingkungan dengan banyak pembaruan data, cache sering di-invalidasi dan malah dapat menyebabkan penurunan performa.

2.2 InnoDB Buffer Pool (MySQL 5.5 ke atas → 8.0)

Mulai dari MySQL 5.5 ke atas, dan khususnya di MySQL 8.0, “InnoDB Buffer Pool” telah menjadi fungsi caching inti. Mekanisme ini memungkinkan mesin penyimpanan InnoDB menyimpan data dan informasi indeks di memori, mengurangi I/O disk dan mempercepat performa. Berbeda dengan query cache, buffer pool menyimpan data tingkat tabel atau baris, sehingga performa yang stabil dapat diharapkan bahkan di sistem besar atau sistem dengan pembaruan sering.

3. Table Cache dan Cache Lainnya

Selain itu, MySQL memiliki beberapa cache seperti “table cache (table_open_cache)”, “thread cache”, “user-variable cache”. Khususnya, “table cache” berperan dalam mengelola tabel yang sering diakses secara efisien, dan digunakan di semua versi.

2.4 Ringkasan Spesifikasi Cache berdasarkan Versi

  • MySQL 5.7 dan sebelumnya : Query Cache + InnoDB Buffer + Table Cache
  • MySQL 8.0 dan setelahnya : Query Cache dihentikan, InnoDB Buffer Pool sebagai utama, Table Cache tetap

Dengan demikian, karena jenis dan peran cache berubah tergantung pada versi MySQL, penting untuk mengetahui langkah-langkah yang tepat untuk versi yang Anda gunakan.

3. Cara Membersihkan Query Cache (untuk MySQL 5.7 dan Sebelumnya)

Jika Anda menggunakan MySQL 5.7 atau sebelumnya, fitur “Query Cache” sering diaktifkan. Pada bagian ini kami menjelaskan secara detail mekanisme query cache, metode untuk membersihkannya, dan peringatan.

3.1 Apa itu Query Cache?

Query Cache menyimpan pernyataan SELECT dan set hasilnya di memori serta mengembalikan hasil secara instan ketika kueri yang sama dieksekusi lagi. Ini efektif untuk situs web yang merujuk banyak data statis atau aplikasi skala kecil, tetapi di lingkungan dengan frekuensi pembaruan data tinggi, kegunaan cache menurun, sehingga perlu kehati-hatian.

3.2 Perintah untuk Membersihkan Query Cache

Untuk membersihkan query cache, dua perintah berikut biasanya digunakan.

  • RESET QUERY CACHE; Menghapus semua entri di cache query. Jika Anda ingin sepenuhnya menghilangkan pengaruh cache, ini efektif.
  • FLUSH QUERY CACHE; Menghapus hanya entri di cache yang “tidak terpakai”. Cocok ketika Anda ingin membersihkan hanya entri lama yang sudah tidak valid.

3.3 Cara Menjalankan Perintah

Dari klien MySQL atau alat manajemen (seperti phpMyAdmin), jalankan perintah sebagai berikut:

RESET QUERY CACHE;

Atau

FLUSH QUERY CACHE;

Hak istimewa administrator mungkin diperlukan, jadi jika Anda mendapatkan kesalahan izin jalankan kembali dengan hak istimewa administrator (seperti root).

3.4 Pencegahan dan Praktik Terbaik

  • Membersihkan cache query memengaruhi seluruh server, jadi lakukan dengan hati-hati di lingkungan produksi.
  • Ketika cache dibersihkan, kinerja dapat menurun sementara.
  • Di MySQL 8.0 dan seterusnya, fungsi cache query telah dihapus, sehingga perintah ini tidak dapat digunakan.

Dengan membersihkan cache query secara efektif, Anda dapat mencegah efek cache yang tidak diinginkan, memungkinkan refleksi data terbaru, dan verifikasi perilaku yang akurat.

4. Membersihkan Cache Tabel dan Cache Terkait

MySQL memiliki berbagai fungsi caching selain cache query. Khususnya, “cache tabel” digunakan untuk mengelola tabel yang sering diakses secara efisien. Bab ini menjelaskan cara membersihkan cache tabel dan cache terkait.

4.1 Apa itu Cache Tabel?

Cache tabel (table_open_cache) adalah mekanisme di mana MySQL menjaga tabel terbuka secara internal dan menghindari overhead membaca dari disk setiap kali akses terjadi. Ini meningkatkan kinerja ketika ada banyak akses bersamaan dari banyak pengguna atau aplikasi.

4.2 Cara Membersihkan Cache Tabel

Untuk membersihkan cache tabel, Anda terutama menggunakan perintah FLUSH TABLES.

FLUSH TABLES;

Menjalankan perintah ini menutup semua tabel terbuka, dan bila diperlukan mereka akan dibuka kembali. Ini mengatur ulang konten cache tabel, sehingga membantu ketika definisi tabel berubah atau masalah terkait cache muncul.

4.3 Membersihkan Cache Terkait Lainnya

Di MySQL, perintah untuk membersihkan berbagai cache selain cache tabel disediakan. Misalnya:

  • FLUSH TABLES WITH READ LOCK; Menutup semua tabel dan mengunci mereka untuk digunakan dalam cadangan, dll.
  • FLUSH PRIVILEGES; Membersihkan cache informasi pengguna/privilege untuk segera mencerminkan perubahan hak istimewa.
  • FLUSH STATUS; Mengatur ulang informasi statistik dari berbagai variabel status (dapat dilihat melalui SHOW STATUS, dll.).

4.4 Membersihkan Beberapa Cache Bersama-sama

Karena perintah pembersihan berbeda menurut jenis cache, jika Anda ingin mengatur ulang beberapa cache sekaligus, jalankan setiap perintah secara berurutan. Misalnya, di lingkungan pengembangan atau pengujian di mana Anda ingin “reset semua cache sekaligus”:

FLUSH TABLES;
RESET QUERY CACHE;

Gunakan kombinasi semacam ini (※ Catatan: di MySQL 8.0 atau lebih baru RESET QUERY CACHE tidak dapat digunakan).

4.5 Pencegahan

  • Membersihkan cache tabel dapat sementara memengaruhi kinerja di sistem dengan banyak tabel terbuka.
  • Untuk lingkungan produksi jalankan hanya setelah memeriksa ruang lingkup pengaruh.
  • Beberapa perintah mungkin tidak dapat dijalankan tergantung pada hak istimewa. Jika muncul kesalahan, jalankan kembali sebagai pengguna dengan hak istimewa yang sesuai.

Dengan membersihkan cache tabel dan cache terkait secara tepat, Anda dapat mempermudah operasi stabil MySQL dan pemecahan masalah.

5. Cara “Membersihkan” Buffer Pool InnoDB (untuk MySQL 8.0 dan Selanjutnya)

Mulai MySQL 8.0, fitur cache query telah dihapus, dan Buffer Pool InnoDB mengambil peran sentral untuk caching. Namun, berbeda dengan cache query, Buffer Pool InnoDB tidak dapat “dibersihkan” dengan satu perintah. Bab ini menjelaskan pendekatan dan pencegahan untuk membersihkan atau mengatur ulang Buffer Pool InnoDB secara efektif.

5.1 Apa itu Buffer Pool InnoDB?

Buffer Pool InnoDB menyimpan data tabel, indeks, dan halaman data yang sering diakses di memori, mengurangi I/O disk dan memungkinkan kinerja lebih cepat. Di MySQL 8.0, buffer pool ini merupakan komponen kinerja utama.

5.2 Metode dan Alternatif untuk Membersihkan Buffer Pool

InnoDB Buffer Pool tidak menyediakan perintah standar untuk langsung “membersihkannya”. Metode utama adalah sebagai berikut:

  • Restart server MySQL Dengan menghentikan dan memulai ulang server, Anda secara efektif menginisialisasi isi buffer pool, mencapai pembersihan penuh. Namun, di lingkungan produksi ini memerlukan operasi yang hati-hati.
  • Mengubah ukuran buffer-pool sementara Dengan mengurangi pengaturan innodb_buffer_pool_size, memulai ulang MySQL, lalu mengembalikannya ke nilai aslinya dan memulai ulang lagi, Anda juga dapat menginisialisasi buffer pool.
  • Mengflush halaman buffer-pool individu Dengan perintah berikut Anda dapat menulis keluar halaman yang berubah (dirty pages) dari buffer pool ke disk, tetapi ini tidak sepenuhnya membersihkan cache itu sendiri.
  FLUSH TABLES;

5.3 Contoh Pembersihan Buffer Pool dalam Praktik

Misalnya, ketika Anda ingin membersihkan buffer pool di lingkungan uji, lakukan langkah-langkah berikut:

  1. Hentikan server MySQL
  2. Sesuaikan innodb_buffer_pool_size (jika diperlukan)
  3. Mulai ulang server MySQL

Ini mengatur ulang buffer pool memori dan menghasilkan keadaan di mana semua informasi cache dihapus.

5.4 Precautions dan Tips Operasional

  • Menginisialisasi buffer pool (melalui restart server) menghasilkan downtime layanan sementara. Di lingkungan produksi, perencanaan dan pengumuman yang matang sangat penting.
  • Segera setelah membersihkan buffer pool, akses disk meningkat dan kinerja dapat menurun sementara. Berhati-hatilah terutama di sistem dengan lalu lintas tinggi.
  • Jika restart tidak memungkinkan, siapkan lingkungan uji atau pengembangan terpisah dan lakukan pekerjaan verifikasi di sana dengan aman.

Dengan memahami secara menyeluruh operasi InnoDB Buffer Pool dan mengeksekusi operasi pembersihan atau reset pada waktu yang tepat, Anda dapat mencapai operasi yang stabil bahkan di lingkungan MySQL 8.0 dan seterusnya.

6. Kontrol Cache dengan Alat Pihak Ketiga

Manajemen cache di MySQL menjadi lebih efisien dan terlihat tidak hanya dengan perintah standar tetapi juga dengan menggunakan berbagai alat pihak ketiga atau utilitas. Di sini kami memperkenalkan alat representatif dan contoh penggunaannya.

6.1 Pemantauan dan Optimasi Cache dengan MySQLTuner

“MySQLTuner” adalah alat diagnostik terkenal yang menganalisis status server MySQL dan secara otomatis memberikan saran untuk peningkatan kinerja. Alat ini juga menampilkan status penggunaan cache (query cache, InnoDB buffer pool, table cache, dll.) dan memberikan saran untuk pengaturan optimal.

Usage steps for MySQLTuner:

  1. Instal MySQLTuner di server (distribusi sebagai skrip Perl).
  2. Jalankan perintah berikut untuk diagnosis.
   perl mysqltuner.pl
  1. Hasil eksekusi menampilkan item diagnostik seperti “Query cache” dan “InnoDB Buffer Pool”, serta memberikan rekomendasi tentang penyesuaian parameter atau menonaktifkan fitur cache yang tidak perlu.

6.2 Pemanfaatan Percona Toolkit

“Percona Toolkit” adalah rangkaian alat yang berguna untuk operasi MySQL dan analisis kinerja. Misalnya, alat ini dapat menghasilkan laporan dengan satu perintah tentang status penggunaan buffer pool atau table cache, memudahkan pemahaman situasi dalam operasi skala besar.

6.3 Contoh Alat Pemantauan / Visualisasi

  • phpMyAdmin · MySQL Workbench Alat manajemen ini juga memungkinkan Anda melihat status cache saat ini dan mengeksekusi beberapa perintah FLUSH dari GUI. Mereka ramah pengguna bagi pemula dan cocok untuk pemantauan status atau kontrol cache minor.
  • Zabbix atau Prometheus Anda dapat memvisualisasikan penggunaan memori server atau penggunaan InnoDB buffer pool secara real-time, memantau perilaku cache dan tekanan sumber daya, mendeteksi anomali lebih awal, dan mengatur peringatan otomatis.

6.4 Precautions Saat Menggunakan Alat Pihak Ketiga

  • Menjalankan alat mungkin memerlukan hak administrator atau hak pengguna MySQL tertentu.
  • Penggunaan alat di lingkungan produksi disarankan hanya setelah diuji di lingkungan staging.
  • Beberapa alat dapat meningkatkan beban server sementara, jadi pertimbangkan untuk mengeksekusi selama jam off-peak atau penggunaan rendah.

Dengan memanfaatkan alat pihak ketiga secara terampil, Anda dapat memvisualisasikan status cache MySQL dan melakukan operasi pembersihan atau optimisasi pada waktu yang tepat.

7. Risiko dan Pencegahan

Pembersihan cache MySQL sangat berguna, namun jika dilakukan pada waktu yang salah atau dengan cara yang salah, dapat menyebabkan masalah tak terduga atau penurunan kinerja. Pada bab ini kami menjelaskan risiko dan pencegahan yang harus Anda ketahui saat melakukan pembersihan cache.

7.1 Dampak pada Kinerja

Pembersihan cache dapat menyebabkan beban server melonjak setelah operasi. Terutama ketika cache besar seperti InnoDB buffer pool atau table cache dibersihkan, semua data di memori hilang, sehingga I/O disk akan terjadi untuk setiap permintaan yang dapat secara signifikan memperlambat waktu respons.

7.2 Berhati-hatilah di Lingkungan Produksi

Saat melakukan pembersihan cache pada sistem yang sedang digunakan secara live di produksi, kehati-hatian sangat diperlukan. Menjalankan selama jam lalu lintas tinggi dapat memengaruhi kinerja seluruh sistem, menyebabkan gangguan layanan atau penundaan respons. Di produksi Anda harus melakukan pengujian, persiapan yang memadai, dan mempertimbangkan waktu serta cadangan sebelumnya.

7.3 Pertimbangan untuk Pembaruan Data dan Integritas

Waktu pembersihan cache dapat menyebabkan perilaku aplikasi yang tidak terduga atau ketidaksesuaian data. Misalnya, jika Anda membersihkan cache selama perubahan struktur tabel atau selama pemrosesan batch, hasil kueri atau logika aplikasi dapat berperilaku tidak terduga.

7.4 Hindari Pembersihan Cache yang Tidak Perlu

Sikap operasi “mari kita bersihkan cache saja” harus dihindari. Cache MySQL awalnya dirancang untuk mengurangi beban server dan mempercepat pemrosesan. Pembersihan yang sering dapat malah menyebabkan ketidakstabilan kinerja. Fokus pada “hanya bersihkan bila diperlukan”.

7.5 Pertimbangan Hak Akses dan Keamanan

Perintah atau penggunaan alat untuk membersihkan cache memerlukan hak akses yang cukup. Menjalankan sebagai pengguna dengan hak penuh tanpa kehati-hatian dapat memengaruhi pengaturan penting atau data lain, jadi Anda harus menggunakan pengguna dengan hak minimum, mencatat riwayat eksekusi, dan mempertimbangkan keamanan juga.

Dengan memahami risiko dan pencegahan ini, Anda akan dapat melakukan operasi pembersihan cache dengan aman dan efisien, sehingga menjaga kinerja MySQL yang stabil dan operasi yang lancar.

8. Ringkasan Prosedur (Tabel Referensi Cepat)

Di sini kami merangkum prosedur pembersihan cache MySQL yang telah diperkenalkan sejauh ini berdasarkan jenis cache dan versi dalam tabel referensi cepat. Ini membantu Anda dengan cepat mengidentifikasi perintah dan tujuan untuk operasi aktual atau pemecahan masalah.

Operasi Sasaran

MySQL Version

Contoh Perintah / Metode

Efek

Cache Query

5.7 dan sebelumnya

RESET QUERY CACHE; FLUSH QUERY CACHE;

Hapus semua cache kueri atau hapus hanya entri yang tidak digunakan

Table Cache

All versions

FLUSH TABLES;

Bersihkan cache tabel terbuka

Cache Hak Akses

All versions

FLUSH PRIVILEGES;

Bersihkan cache informasi hak istimewa

Statistik Status

All versions

FLUSH STATUS;

Reset statistik SHOW STATUS

InnoDB Buffer

8.0 dan seterusnya

Restart server
Perubahan sementara ukuran buffer pool

Inisialisasi buffer pool (cache memori)

Cache Komprehensif

All versions

Gabungkan perintah di atas

Bersihkan cache secara menyeluruh

Penjelasan Singkat:

  • RESET QUERY CACHE; Reset semua cache kueri (hanya MySQL 5.7 dan sebelumnya).
  • FLUSH QUERY CACHE; Hapus hanya cache kueri yang tidak valid dan tidak digunakan.
  • FLUSH TABLES; Tutup semua tabel terbuka sekaligus dan reset cache tabel.
  • FLUSH PRIVILEGES; Gunakan ketika Anda ingin segera mencerminkan perubahan hak pengguna.
  • FLUSH STATUS; Reset berbagai statistik status. Berguna untuk analisis kinerja.
  • Inisialisasi InnoDB Buffer Pool Dicapai secara tidak langsung dengan memulai ulang server atau mengubah innodb_buffer_pool_size (MySQL 8.0 dan seterusnya).

Dengan menggunakan tabel ini, Anda dapat dengan cepat memutuskan prosedur pembersihan cache yang tepat sesuai versi dan tujuan di lingkungan Anda.

9. FAQ (Pertanyaan yang Sering Diajukan)

Di sini kami mengumpulkan pertanyaan yang sering diajukan oleh insinyur lapangan dan operator tentang pembersihan cache MySQL, beserta jawabannya. Gunakan ini sebagai referensi selama operasi aktual.

Q1. Apakah Query Cache dan InnoDB Buffer Pool sama?

A. Tidak, mereka adalah mekanisme yang berbeda. Query Cache menyimpan set hasil kueri SQL, sementara InnoDB Buffer Pool menyimpan data tabel, indeks, dan sebagainya di memori. Karena penggunaan dan mekanismenya sepenuhnya berbeda, mereka tidak boleh disamakan.

Q2. Seberapa besar penurunan performa setelah cache dibersihkan?

A. Performa menurun sementara. Terutama di lingkungan dengan cache besar, akses disk meningkat pada eksekusi kueri pertama dan waktu respons dapat turun secara signifikan. Namun, performa pulih secara bertahap saat cache dibangun kembali.

Q3. Apakah aman membersihkan cache di lingkungan produksi?

A. Umumnya tidak disarankan. Membersihkan cache di produksi dapat langsung memengaruhi performa dan stabilitas layanan, sehingga pengujian, persiapan, dan penyesuaian waktu yang memadai sangat penting. Jika Anda harus melakukannya, jangan lupa mengumumkan dan melakukan cadangan sebelum eksekusi.

Q4. Bisakah saya mengaktifkan Query Cache di MySQL 8.0?

A. Tidak. Di MySQL 8.0 fitur Query Cache telah dihapus sepenuhnya. Jika Anda ingin menggunakan Query Cache, Anda harus menggunakan MySQL 5.7 atau sebelumnya.

Q5. Bisakah Anda membersihkan cache di layanan cloud seperti AWS RDS atau Cloud SQL?

A. Mungkin saja, namun perintah atau hak operasi yang tersedia berbeda-beda tergantung layanan. Misalnya, di RDS beberapa perintah FLUSH atau operasi restart server mungkin dibatasi, jadi periksa dokumentasi resmi atau panduan konsol manajemen saat bekerja.

Q6. Apakah ada cara otomatis untuk membersihkan cache?

A. Bisa menggunakan skrip shell atau cron job untuk secara berkala mengeksekusi perintah FLUSH. Namun, pembersihan cache yang sering tidak disarankan. Gunakan hanya pada waktu yang diperlukan atau saat pemeliharaan.

Merujuk pada FAQ ini memungkinkan Anda mengatasi kekhawatiran atau keraguan di lapangan sebelumnya dan membuat operasi pembersihan cache MySQL lebih andal.

10. Kesimpulan dan Praktik Terbaik

Membersihkan cache MySQL adalah operasi penting di lingkungan pengembangan atau produksi. Dalam artikel ini kami membahas jenis cache berdasarkan versi MySQL, metode pembersihan, tindakan pencegahan, dan pertanyaan yang sering diajukan. Akhirnya, kami merangkum praktik terbaik.

10.1 Aktif menggunakan pembersihan cache di lingkungan pengujian

Saat melakukan pengujian, verifikasi, atau debugging, Anda sering ingin menghilangkan pengaruh cache dan memastikan “perilaku sebenarnya”. Gunakan perintah pembersihan cache sesuai kebutuhan untuk meningkatkan reproduktibilitas dan akurasi konfirmasi perilaku.

10.2 Gunakan operasi hati-hati di lingkungan produksi

Membersihkan cache di lingkungan produksi dapat memiliki dampak besar pada performa dan stabilitas layanan. Sebelum eksekusi selalu evaluasi ruang lingkup dampak, waktu, beri tahu pemangku kepentingan, dan lakukan cadangan. Hindari sekadar membersihkan cache secara sembarangan; fokus pada “eksekusi hanya bila benar-benar diperlukan”.

10.3 Pahami versi dan jenis cache dengan benar

Fungsi caching MySQL bervariasi per versi, jadi penting untuk memahami secara akurat cache mana dan metode pembersihan yang berlaku untuk lingkungan Anda. Selain itu, karena perintah dan dampak berbeda per jenis cache, pilih prosedur optimal tergantung pada kasus penggunaan.

10.4 Manfaatkan alat pihak ketiga dan alat pemantauan

Alat seperti MySQLTuner atau Percona Toolkit memungkinkan evaluasi objektif status server dan tingkat penggunaan cache. Manfaatkan visualisasi dan otomatisasi untuk mendukung operasi lanjutan dan pemecahan masalah preventif.

10.5 Ringkasan

Jika Anda melakukan pembersihan cache MySQL dengan tepat, hal itu akan sangat mendukung operasi stabil, pemecahan masalah, dan peningkatan performa basis data Anda. Gunakan artikel ini sebagai referensi, terapkan metode yang sesuai untuk lingkungan dan penggunaan Anda, dan kejar operasi sistem berkualitas tinggi.