mysqlでの遅いクエリーの詰まり処理shellスクリプト


データベースとしては必ず大量のselectが私たちのデータベースをクエリーしますが、実際の生産環境ではsql文のために書くべきサブクエリーがやや多いか、大量のクエリーと同時に1台のデータベースに詰まることがあります.この時、私たちはデータベースに入って大量の詰まるselectのスレッドを整理しなければなりません.詰まるのは明らかな現象が多くの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