Saya cuba menjalankan pertanyaan yang sama beberapa kali pada pangkalan data dan jadual mysql 8 yang sama.
Saya perlu mencuba untuk menentukan sama ada penalaan pertanyaan dan/atau jadual itu sendiri boleh meningkatkan prestasi. Walau bagaimanapun, selepas percubaan pertama, masa tindak balas adalah lebih cepat, saya fikir kerana data dicache.
mysql 8 innodb
Apakah pilihan yang saya ada untuk mengosongkan cache untuk mendapatkan data dari awal.
Nampaknya jawapan yang dicadangkan sebelum ini semuanya berkaitan dengan mysql 5, bukan mysql 8. Kebanyakan arahan nampaknya telah ditamatkan sekarang.
Kosongkan cache pertanyaan MySQL tanpa memulakan semula pelayan
Jika pertanyaan adalah pertanyaan yang kerap dijalankan dalam pengeluaran, maka saya rasa matlamat anda ketinggalan. Saya cadangkan anda harus menjalankan pertanyaan dua kali dan menggunakan masa pertanyaan kedua. Dengan cara ini, ia lebih dekat dengan pengeluaran yang akan dilihat - data sudah ada dalam cache.
(Bill menerangkan bahawa "cache pertanyaan" tidak penting, "kolam penampan" tidak penting.)
Ini adalah teknik yang saya suka untuk menguji pertanyaan tanpa perlu membina jadual yang cukup besar untuk melihat perubahan dari semasa ke semasa:
Nombor ini ialah bilangan sebenar bacaan/tulisan data atau baris indeks. Nombor itu mungkin kelihatan seperti bilangan baris keluaran, bilangan baris dalam jadual, dsb. Ini memberitahu anda jika terdapat, sebagai contoh, imbasan jadual penuh (atau indeks). Nilai "Handler_write%" bukan sifar menunjukkan bahawa jadual (atau jadual) sementara diperlukan.
Lihat juga
EXPLAIN ANALYZE
jika versi anda tersedia.Lagi Petua:Resipi Indeks
Soalan yang anda pautkan adalah mengenai cache pertanyaan, yang telah dialih keluar dalam MySQL 8.0, jadi tidak perlu mengosongkannya lagi.
Perkataan anda mencadangkan anda bertanya tentang kumpulan penimbal, yang berbeza daripada cache pertanyaan. Kolam penimbal menyimpan data dan halaman indeks, manakala cache pertanyaan (jika ada) menyimpan hasil pertanyaan.
Tiada arahan untuk mengosongkan kolam penimbal tanpa memulakan semula pelayan MySQL. Halaman kekal dicache dalam kumpulan penimbal sehingga diusir oleh halaman lain.
Kolam penimbal terletak dalam RAM, jadi jika proses pelayan MySQL dimulakan semula, kandungannya akan dikosongkan. Oleh itu, jika anda ingin bermula dari awal, anda perlu memulakan semula proses (anda tidak perlu memulakan semula keseluruhan sistem pengendalian, hanya mulakan semula perkhidmatan MySQL).
Perlu diingat bahawa dalam MySQL 8.0, kandungan kumpulan penimbal tidak akan dikosongkan sepenuhnya apabila dimulakan semula. Peratusan kandungan kumpulan penimbal disimpan semasa penutupan dan dimuat semula secara automatik semasa permulaan. Ciri ini didayakan secara lalai, tetapi anda boleh memilih untuk melumpuhkannya.
Ketahui lebih lanjut tentang ini: