mysqlでの遅いクエリーの詰まり処理shellスクリプト
データベースとしては必ず大量のselectが私たちのデータベースをクエリーしますが、実際の生産環境ではsql文のために書くべきサブクエリーがやや多いか、大量のクエリーと同時に1台のデータベースに詰まることがあります.この時、私たちはデータベースに入って大量の詰まるselectのスレッドを整理しなければなりません.詰まるのは明らかな現象が多くのselectカードがどこにあるか、私たちは使用することができます.
現在多くのselectスレッドがあるかどうかを確認し、非常に多く、クエリが終了していない場合はkillにこれらのWaiting for table level lockスレッドを削除する必要があります.非常に多くのselectの下でこれは非常に遅いプロセスなので、killのような大量のselectをループすることができます.
mysql> show full processlist;
現在多くのselectスレッドがあるかどうかを確認し、非常に多く、クエリが終了していない場合はkillにこれらのWaiting for table level lockスレッドを削除する必要があります.非常に多くのselectの下でこれは非常に遅いプロセスなので、killのような大量のselectをループすることができます.
#!/bin/bash
for i in `mysql -Bse 'show full processlist;' | grep -i select |grep -i "Waiting for table level lock" | awk '{print $1}'`
do
mysql -Bse "kill $i"
done