Yang sering tidak digunakan tetapi lebih banyak bertele-tele
TAMPILKAN PROSESLIS PENUH
berguna, tetapi tidak sebagus analisa permintaan non-perusahaan yang mengagumkan - aktifkan seperti itu
mysql> set profiling = 1;
Kueri OK, 0 baris terpengaruh (0,00 dtk)
Keduanya adalah permintaan sampah untuk mengisi tabel profil,
mysql> select * from _test.customers;
GALAT 1146 (42S02): Tabel '_test.customers' tidak ada
mysql> pilih * dari batas test.customers 0;
Set kosong (0,00 dtk)
Dapatkan daftar semua kueri yang diprofilkan dan durasinya
mysql> tampilkan profil;
+ ---------- + ------------ + ------------------------- ------ +
| Query_ID | Durasi | Pertanyaan |
+ ---------- + ------------ + ------------------------- ------ +
| 1 | 0,00013400 | pilih * dari _test.customers |
| 2 | 0,01546500 | pilih * dari test.customers |
+ ---------- + ------------ + ------------------------- ------ +
Tampilkan info untuk kueri terakhir hanya akan "tampilkan profil" - atau Anda dapat menentukan kueri
mysql> tampilkan profil untuk kueri 2;
+ ---------------------- + ---------- +
| Status | Durasi |
+ ---------------------- + ---------- +
| mulai | 0,000053 |
| memeriksa izin | 0,000007 |
| Tabel pembukaan | 0,000014 |
| Kunci sistem | 0,000006 |
| Kunci meja | 0,000008 |
| init | 0,000065 |
| mengoptimalkan | 0,000003 |
| mengeksekusi | 0,000201 |
| akhir | 0,000003 |
| permintaan akhir | 0,000002 |
| membebaskan item | 0,000020 |
| masuk kueri lambat | 0,000002 |
| membersihkan | 0,000004 |
+ ---------------------- + ---------- +
13 baris dalam set (0,00 dtk)
Anda juga dapat meminta info spesifik seperti CPU, BLOCK IO dan SWAPS antara lain ( semua di halaman manual )
mysql> tampilkan cpu profil untuk kueri 2;
+ ---------------------- + ---------- + ---------- + ---- -------- +
| Status | Durasi | CPU_user | CPU_system |
+ ---------------------- + ---------- + ---------- + ---- -------- +
| mulai | 0,000056 | 0,001000 | 0,000000 |
| memeriksa izin | 0,000007 | 0,000000 | 0,000000 |
| Tabel pembukaan | 0,000010 | 0,000000 | 0,000000 |
| Kunci sistem | 0,000005 | 0,000000 | 0,000000 |
| Kunci meja | 0,000007 | 0,000000 | 0,000000 |
| init | 0,000059 | 0,000000 | 0,000000 |
| mengoptimalkan | 0,000003 | 0,000000 | 0,000000 |
| statistik | 0,015022 | 0,000000 | 0,000000 |
| mempersiapkan | 0,000014 | 0,001000 | 0,000000 |
| mengeksekusi | 0,000004 | 0,000000 | 0,000000 |
| Mengirim data | 0,000245 | 0,000000 | 0,000000 |
| akhir | 0,000004 | 0,000000 | 0,000000 |
| permintaan akhir | 0,000002 | 0,000000 | 0,000000 |
| membebaskan item | 0,000021 | 0,000000 | 0,000000 |
| masuk kueri lambat | 0,000002 | 0,000000 | 0,000000 |
| membersihkan | 0,000004 | 0,000000 | 0,000000 |
+ ---------------------- + ---------- + ---------- + ---- -------- +
16 baris dalam set (0,00 dtk)
Jangan lupa untuk menonaktifkannya setelah itu, karena logging menambahkan overhead.
mysql> set profiling = 0;
Kueri OK, 0 baris terpengaruh (0,00 dtk)
Beberapa perintah MySQL yang tidak selalu dikenal atau diingat.
Ubah orientasi pengaturan hasil ke vertikal agar mudah dibaca dan ditempel.
Batalkan kueri yang sedang Anda ketikkan saat meninggalkannya dalam riwayat Anda.
Edit kueri atau kueri terakhir (masing-masing) dengan $ EDITOR favorit Anda.
Bersihkan output dari konsol.
Bandingkan set hasil dengan hash MD5.
Ubah prompt Anda.
Cari riwayat perintah Anda untuk string yang diberikan (seperti Bash).
Mulai ketikkan istilah pencarian dan ulangi ^ R untuk menggilir hasil.
sumber
md5sum -
ide untuk digunakan sebagai pager. Tidak benar - benar khusus mysqlTrik yang saya pelajari yang mungkin berguna untuk beberapa:
Untuk menjalankan file yang sebelumnya Anda simpan:
Gunakan "\!" untuk mengakses perintah shell. Sebagai contoh:
Jadi, jika Anda ingin menulis pernyataan ke file (tanpa menggunakan opsi editor), Anda dapat memasukkan:
Jika kamu masuk
Anda kemudian akan mengarahkan laporan dan hasil kueri Anda diarahkan / dicetak ke nama file yang Anda tentukan. Gunakan
\\t
untuk mematikan ini.Hentikan permintaan dengan
\\G
alih - alih ";" untuk menampilkan output dalam format baris, bukan dalam kolom.Jangan mengesampingkan penggunaan Di mana ... SUKA klausa dengan pernyataan SHOW. Sebagai contoh:
Terakhir, untuk menemukan lokasi direktori data MySQL Anda tanpa melihat
my.cnf
file yang digunakan:sumber
Saya pribadi suka
SHOW
perintah ituAnda bisa melakukan
SHOW PROCESSLIST
- Untuk melihat semua koneksi yang sedang berjalan ke mysqlSHOW CREATE TABLE TableName
- Untuk melihat sql yang digunakan untuk membuat tabelSHOW CREATE PROCEDURE ProcedureName
- Untuk melihat sql yang digunakan untuk membuat SPSHOW VARIABLES
- Untuk melihat semua variabel sistemDapatkan daftar lengkapnya di sini
sumber
Sebenarnya didokumentasikan , tetapi sangat menjengkelkan: konversi tanggal otomatis untuk data yang salah.
Terkadang Anda akan "beruntung" ketika MySQL tidak menyesuaikan input ke tanggal yang valid di dekatnya, tetapi menyimpannya
0000-00-00
yang menurut definisi tidak valid. Namun, bahkan saat itu Anda mungkin ingin MySQL gagal daripada menyimpan nilai ini untuk Anda.sumber
Fitur lain yang membedakan MySQL dari database lain adalah
REPLACE INTO
perintah. Anda dapat melakukan:Anda juga dapat menulis pernyataan ganti seperti Anda menulis pernyataan pembaruan:
sumber
Tidak benar-benar fitur tersembunyi, tetapi kurang dikenal dan saya sering menggunakannya untuk menyimpan melakukan kueri untuk memeriksa apakah ada sesuatu sebelum melakukan UPDATE atau INSERT
Dokumentasi ada di sini
sumber
Untuk melihat rencana eksekusi permintaan gunakan
EXPLAIN
misalnya
sumber
Tidak benar-benar tersembunyi, tetapi log permintaan lambat bisa sangat membantu dalam melacak penyebab masalah kinerja pada waktu puncak.
Dalam file
my.cnf
, bagian [mysqld] - tambahkan:sumber
Yah, tidak dapat menandai ini sebagai duplikat karena ini adalah situs yang berbeda (dan saya tidak memiliki perwakilan di sini) tetapi saya hanya akan menautkan ke posting stackoverflow yang luar biasa ini untuk pertanyaan yang sama :
sumber
Sama seperti tambahan untuk jawaban pQD (sebagai noobie, saya belum dapat menambahkan komentar), jika Anda belum menambahkan path ke log kueri lambat dalam file my.cnf yang benar, log kesalahan akan menjadi ditulis ke direktori data (gunakan TUNJUKKAN VARIABEL SEPERTI 'datadir'; untuk mencari tahu di mana ini berada) dan nama file akan berada dalam format [systemname] -slow.log
sumber