web-dev-qa-db-ja.com

セッションテーブルのデッドロック

まれに、サイトの読み込みの代わりに、次のエラーメッセージで死の白い画面が表示されます。

ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションSQL = INSERT INTO jom_sessionsession_idclient_idguesttimeuseridusername)VALUES( 'cv95odk14jbe8738ecg9se9de1'、0、0、 '1402423781'、101、 '[email protected]')

私はそれを複製することはできませんが、以前に自分で見たことがあり、他のユーザーから報告されています。とにかくこれが起こらないようにする方法はありますか?

3
ContextSwitch

デッドロックがある場合、いわばインデックスの更新がさまざまな方向から行われていることを示しており、これを引き起こすバグがJoomlaにある可能性があります。症状を文書化したり、バグを見つけたりする以外に、セッションテーブルのパフォーマンスを向上させることで、問題を軽減できます。

Jordansのコメントに加えて、セッションテーブルをMEMORYタイプのMySQLテーブルに変換することで、セッションテーブルを非常に効率的にすることができます。これは、MySQLの再起動時にセッションが失われることを意味します。

これをメモリテーブルにするには、データフィールドをmediumtextからvarchar(15000)などのサイズに切り替え(サイズはどの拡張機能がどのデータを格納するかによって異なります)、タイプをMEMORYに変更します。

また、テーブルがメモリに保持されるため、MySQL構成に十分な「ヒープ」メモリを確保する必要があります。私が管理する大規模なサイトの場合、最大640MBを使用します。

これらすべてについて、少なくとももちろんVPSが必要です。

1
jdog