0 レビュー
3 回答
php-MySQLプロセスリスト-ロックされた問題
MySQLプロセスリストでは、いくつかの SELECT
クエリがロックされていることが示されています。ロックされたショーの時間は4000を超えています
| 24 |ユーザー|ローカルホスト|データベース|クエリ| 4725 |ロック済み| SELECT*FROMデータ
| 25 |ユーザー|ローカルホスト|データベース|クエリ| 4725 |ロック済み| SELECT*FROMデータ
| 26 |ユーザー|ローカルホスト|データベース|クエリ| 4725 |ロック済み| SELECT*FROMデータ
PHPスクリプトが数回実行されましたが、その後 SELECT
がロック状態になりました。この問題を解決するには?
$ SQL = "SELECT * FROM data";
$ query = $ db-> prepare($ SQL);
$ query-> execute();
while($ row = $ query-> fetch(PDO :: FETCH_ASSOC)){
//何かをする
sleep(2);
}
mySQLサーバーはSELECTクエリを一度に1回実行するように制限していますか?これは変更できますか?
わからない
0
レビュー
答え :
解決策:
show engine innodb status \G
を実行して、どのクエリがそのロックを保持しているかを確認する必要があります。
コメントでこれについて話し合い、MyISAMが使用されており、書き込みがたくさんあることを聞いた後、InnoDBに移行することをお勧めします。
InnoDBはしばらくの間デフォルトのエンジンであり、通常はより優れています。この場合、行ベースのロックが適用されます。 InnoDBもMyISAM以上に開発されています。
わからない
0
レビュー
答え :
解決策:
プロセスリストにselectステートメントしかない場合は、サーバーで使用可能なリソースが限られていることが原因である可能性があります。その場合は、可能であれば実行されるクエリを最適化するか、サーバーに何らかのキャッシュを実装してみることで、問題を回避できます。 max_connectionsシステム変数を下げることもできますが、それは実行可能な解決策ではない可能性があります。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。