Saya mencari bantuan untuk memahami apa yang terjadi ketika baris perintah berikut dijalankan:
root@prodn$ service mysqld stop
Ya, itu menutup server MySQL sehingga akses ke sana tidak lagi tersedia sampai layanan dimulai lagi. Namun, lebih khusus lagi, apakah ada hal lain yang terjadi ketika layanan dihentikan? Maafkan pemula saya di sini tetapi ketika mysqld restart, apakah itu berarti bahwa log dihapus, beberapa memori dibebaskan, cache dikosongkan, dll?
Alasan saya bertanya adalah sebagai berikut:
Data warehouse DB kami adalah DB MySQL dan dalam 4 bulan terakhir, dibutuhkan rata-rata 8,5 jam.
Rabu lalu, saya menghentikan layanan mysql, dan kemudian memulai kembali setelah 30 menit. Sejak itu, saya mulai melihat peningkatan besar pada kinerja keseluruhan - proses SELECT / INSERT / UPDATE / DELETE lebih efisien. DW selesai hampir 4 jam sebelumnya dengan jumlah baris data yang sama
Namun, setiap hari, 15-20 menit ditambahkan ke waktu selesai. Jadi, saya curiga saya harus me-restart layanan mingguan.
Apakah ada penjelasan untuk perilaku ini? Saya tidak tahu pertanyaan lain apa yang relevan tetapi akan sangat bagus untuk mengetahui apa yang terjadi ketika mysqld
layanan dimulai kembali.
Adakah yang bisa menjelaskan ini?
sumber
Jawaban:
Ketika Anda mengeluarkan
service mysql stop
, lebih banyak terjadi daripada hanya memotong Konektivitas DB. Tautan dalam komentar dari @ethrbunny sudah menjelaskan hal-hal apa yang terjadi.Saya ingin fokus pada satu aspek tertentu: The InnoDB Buffer Pool. InnoDB harus menyiram halaman kotor InnoDB Buffer Pool. Jika Anda ingin tahu berapa banyak, jalankan ini sebelum shutdown:
Ini akan memberi tahu Anda berapa banyak data yang perlu disiram dari Pool Buffer InnoDB.
Harap diingat bahwa InnoDB memiliki banyak bagian yang bergerak di tablespace sistem (file
ibdata1
). Klik di sini untuk melihat Representasi Pictorial dari seluruh Infrastruktur InnoDB .Beberapa informasi transaksional ditulis sedemikian rupa sehingga Crash Recovery dilakukan ketika Anda menjalankan
service mysql start
.PILIHAN
Anda bisa mendapatkan semua data memerah dan semua transaksi dilakukan dengan bersih dari ibdata1 dan Transaction Logs (
ib_logfile0
,ib_logfile1
) dengan menjalankan inisebelum berlari
Cobalah !!!
UPDATE 2013-04-24 07:17 EDT
Karena Anda memiliki MyISAM sebagai mesin penyimpanan utama, maka satu-satunya hal yang terjadi adalah pembilasan perubahan indeks ke semua
.MYI
file yang memiliki perubahan yang tertunda.Saya juga ingin merekomendasikan bahwa Anda mematikan mysqld berikutnya, jalankan ini sebelumnya di sesi lain:
dan perhatikan pesan-pesan yang lewat dan melihatnya memberi tahu Anda apa yang dilakukan mysqld dengan mesin penyimpanan apa pun. Jika Anda sama sekali tidak memiliki tabel InnoDB yang digunakan, maka Anda harus mempertimbangkan untuk menonaktifkan InnoDB
karena ini akan membuat startup lebih cepat dan mungkin shutdown lebih cepat.
sumber