MySQLのクエリをスロットルまたは優先順位付けする方法
-
01-10-2019 - |
質問
とにかく、MySQLでクエリを優先順位付けまたはスロットルする必要がありますか?
私は、多くの最適化されていないクエリがサーバーに登場し、CPUを破壊するだけであると見ているサーバー上のDBAです。私は、データベースを貧弱にヒットした特定のユーザーを調整しています。
明確化:
MySQLには、クエリや接続などの数を制限するために組み込まれた施設があることを認識していますが、それらは実際には問題ではありません。ブルームーンでは、ユーザーが最適化されていないクエリを送信し、時間を計る必要があります。アウトまたは似たようなもの。
解決
http://dev.mysql.com/doc/refman/4.1/en/user-resources.html
MySQL 4.0.2から始めて、個々のアカウントの次のサーバーリソースへのアクセスを制限できます。
アカウントが1時間に発行できるクエリの数
アカウントが1時間に発行できる更新の数
アカウントが1時間あたりサーバーに接続できる回数
追加情報 -
MySQLには、クエリタイムアウト値、または個々のクエリをスロットルする他の組み込みの方法がありません。ただし、長期にわたるクエリを殺すスクリプトを書くのはかなり些細なことです。問題のあるユーザー/プログラマーを後で倒すことができるように、ユーザーとクエリをキャプチャすることもできます。
ここ Perlを使用している例です。
他のヒント
PhpMyAdminには、1時間あたりのクエリの最大#、1時間あたりの更新の最大#、1時間あたりの接続の最大#、ユーザーあたりのユーザー接続の最大#の領域があることを知っています。おそらくphpmyadmin以外にこれらの値を設定する他の方法があります