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)

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.


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' |

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 :)


12

Lihat kueri lengkap dari SHOW PROCESSLIST:

SHOW FULL PROCESSLIST;

Atau

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.