aktifkan log permintaan untuk basis data tunggal

8

Saya memiliki banyak skema database di server mysql 5.6, sekarang masalahnya di sini adalah bahwa saya ingin menangkap pertanyaan hanya untuk satu skema.

Saya tidak dapat mengaktifkan log kueri untuk seluruh server karena salah satu skema saya sangat dimuat dan itu akan berdampak pada server.

Apakah cara mereka, alat apa pun di mana saya hanya bisa mencatat pertanyaan dengan skema tunggal.

Saya menemukan grafik pembandingan yang menunjukkan dampak pada transaksi / detik ketika kueri log diaktifkan.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Suyash Jain
sumber
Bisakah Anda menggunakan log permintaan lambat? Dan kemudian parsing log itu dengan pt-query-digest? Jika tidak, Anda dapat mencoba output tcpdump diuraikan oleh pt-query-digest
jerichorivera

Jawaban:

1

Pertanyaan menarik dan +1. Saya tertarik dengan ini karena saya dapat melihat beberapa use case untuk fungsi ini.

Sayangnya, untuk kasus Anda di mana Anda tidak dapat mengaktifkan pencatatan umum, hanya ada satu, solusi yang tidak memadai.

Yaitu dengan menggunakan variabel SQL_LOG_OFF untuk menonaktifkan logging untuk koneksi yang diberikan. Solusi ideal adalah memiliki variabel "SQL_LOG_ON" seperti yang bisa dilakukan orang di Oracle (setara) - mungkin Anda bisa mencoba dan mematikan log off untuk semua kecuali koneksi yang diminati?

Selanjutnya, dan sayangnya, ini membutuhkan SUPERhak istimewa. Sekali lagi, ini mungkin tidak (bahkan mungkin tidak) dalam kasus Anda.

Bergantung pada keparahan masalah Anda, jam kerja dan beban server pada waktu tertentu, Anda mungkin dapat menemukan penggunaan untuk pt-query-digest Percona yang dapat membantu dengan analisis log. Kenyamanan kecil, tetapi seperti biasa PostgreSQL lebih unggul dari MySQL ( 1 , 2 ).

Jika Anda ingin mengajukan permintaan fitur, saya akan senang untuk menindaklanjuti dengan "saya juga" jika Anda memposting tautan kembali ke sini.

Vérace
sumber
1

Jika Anda sangat dekat dengan keeling sehingga Anda tidak dapat mengaktifkan log Umum ke FILE, Anda memiliki masalah yang lebih buruk; mereka perlu diperbaiki.

Saya curiga, tanpa pengetahuan nyata, bahwa slowlog akan memiliki dampak yang sama, terutama dengan long_query_time = 0.

5.7 memiliki fitur "query rewrite". Beberapa trik mungkin digunakan di sana. (Tapi, sekali lagi, ada beberapa overhead, yang harus diperbandingkan.)

Berapa lama Anda ingin menangkap kueri? Apakah Anda hanya mencari sumber satu tindakan nakal? Atau apakah Anda mencoba mengumpulkan kueri untuk membangun tolok ukur yang realistis untuk tabel itu? Atau sesuatu yang lain?

Apakah Anda memiliki replikasi dihidupkan? Apakah Anda tertarik membaca? Atau menulis? Atau keduanya?

Berapa banyak utas yang aktif secara bersamaan? Patokan yang Anda tunjukkan menunjukkan bahwa untuk 1, log memiliki overhead rendah. Ini adalah kunci tabel pada MyISAM atau CSV yang mematikan pemrosesan untuk konkurensi tinggi.

Grafik kedua Anda menunjukkan bahwa klien harus benar-benar dibatasi pada sekitar 5-8 koneksi bersamaan - jika tidak, throughput sebenarnya menurun! Apa max_connectionsdan Max_used_connectionsuntuk grafik itu?

Rick James
sumber
Hai, saya ingin menangkap kueri selama sekitar 2 hari dan grafik ini tidak terkait dengan tolok ukur saya ... Saya menempelkannya hanya untuk pengetahuan. Aplikasi yang saya inginkan kueri adalah konsumen sumber daya rendah. Tcpdump tidak akan memberikan statistik waktu.
Suyash Jain