Cara melihat kueri lengkap dari SHOW PROCESSLIST

296

Ketika saya mengeluarkan permintaan SHOW PROCESSLIST, hanya 100 karakter pertama dari query SQL yang berjalan dikembalikan di kolom info.

Apakah mungkin untuk mengubah konfigurasi Mysql atau mengeluarkan jenis permintaan yang berbeda untuk melihat kueri lengkap (kueri yang saya lihat lebih dari 100 karakter)

Hantu pengendara
sumber

Jawaban:

482
SHOW FULL PROCESSLIST

Jika Anda tidak menggunakan FULL, "hanya 100 karakter pertama dari setiap pernyataan yang ditampilkan di Infobidang" .

Saat menggunakan phpMyAdmin, Anda juga harus mengeklik opsi "Teks lengkap" ("→ T →" di sudut kiri atas tabel hasil) untuk melihat hasil yang tidak dikunci.

James McNellis
sumber
3
Sepertinya phpmyadmin tidak peduli tentang ini, dan masih menunjukkan info terpotong.
giorgio79
@ giorgio79: Jika saya ingat dengan benar, phpMyAdmin memotong semua hasil string. Sudah empat tahun sejak saya melakukan pengembangan web, jadi saya bisa saja salah.
James McNellis
2
Saya melihat permintaan terpotong setelah waktu tertentu bahkan saat menggunakan SHOW FULL PROCESSLIST. Bisakah saya membuatnya lebih penuh entah bagaimana?
wizonesolutions
perintah SHOW FULL PROCESSLISTmembutuhkan titik koma ;di ujung kan?
Rakibul Haq
1
@ R. Haq Jika itu satu-satunya permintaan yang akan Anda lakukan, maka titik koma tidak perlu. Jika Anda ingin melakukan lebih dari satu permintaan, maka Anda perlu titik koma setelah masing-masing.
Julio Garcia
85

Tampilkan Daftar Proses mengambil informasi dari tabel lain. Inilah cara Anda dapat menarik data dan melihat kolom 'INFO' yang berisi seluruh permintaan:

select * from INFORMATION_SCHEMA.PROCESSLIST where db = 'somedb';

Anda dapat menambahkan kondisi atau mengabaikan apa pun berdasarkan kebutuhan Anda.

Output dari query dihasilkan sebagai:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| ID    | USER | HOST            | DB     | COMMAND | TIME | STATE     | INFO                                                     |
+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
|     5 | ssss | localhost:41060 | somedb | Sleep   |    3 |           | NULL                                                     |
| 58169 | root | localhost       | somedb | Query   |    0 | executing | select * from sometable where tblColumnName = 'someName' |
Yogesh A Sakurikar
sumber
12
Ini mungkin jawaban yang paling berguna.
dr_
Kolom info saya menunjukkan COMMIT. Apakah Anda tahu bagaimana saya bisa melihat detail lebih lanjut tentang permintaan aktual?
m.spyratos
localhost: 41060, apa kepanjangan dari 41060? tebak?
Farveen Hassan
12

Saya baru saja membaca dokumentasi MySQL yang SHOW FULL PROCESSLISTsecara default hanya mencantumkan utas dari koneksi pengguna Anda saat ini .

Kutipan dari dokumentasi MySQL SHOW FULL PROCESSLIST:

Jika Anda memiliki hak istimewa PROSES, Anda dapat melihat semua utas.

Jadi Anda bisa mengaktifkan Process_privkolom di mysql.usertabel Anda . Ingatlah untuk mengeksekusi FLUSH PRIVILEGESsetelahnya :)

hardcoder
sumber
12

Lihat kueri lengkap dari SHOW PROCESSLIST:

SHOW FULL PROCESSLIST;

Atau

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
Hasib Kamal
sumber
10

Jika seseorang ingin terus mendapatkan proses yang diperbarui (pada contoh, 2 detik) pada sesi shell tanpa harus berinteraksi secara manual dengannya gunakan:

watch -n 2 'mysql -h 127.0.0.1 -P 3306 -u some_user -psome_pass some_database -e "show full processlist;"'

Satu-satunya hal buruk tentang show [full] processlistadalah bahwa Anda tidak dapat menyaring hasil keluaran. Di sisi lain, mengeluarkan SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTkemungkinan terbuka untuk menghapus dari output apa pun yang tidak ingin Anda lihat:

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
kristianom
sumber