2016-05-05 9 views
0

これは私が最近投稿の質問に関連している:最適化表やMySQL設定の更新/インナー参加し、大きなテーブルの

Efficient way to flag a record with min field value and common fieldX value in mysql

が、同様のエラーが以前のような働いていた他のクエリで発生しています:

Update TableA as T1 
Inner Join TableA as T2 
on T1.Field1=T2.FIeld1and T1.Field2 is not NULL 
set T2.GroupFlag=T1.GroupFlag 

突然

、私は取得しています:

ERROR 1206(HY000 ):ロックの総数がロックテーブルのサイズを超えています

私はこの同じテーブルで数回前にこれを実行していますので、クエリはOKです。

私はこの質問が漠然としていることを知っていますが、それ以外にどのように尋ねるべきかわかりません。 MySQLの設定にチェックする必要があるものはありますか?私たちは最近、新しい(この)サーバーにデータベースのバックアップを復元しましたが、唯一の違いは私が知る限り、サーバーのサイズを倍にして作業する余裕があるということです。

UPDATE:

私はこれを見つけた:

https://major.io/2010/02/16/mysql-the-total-number-of-locks-exceeds-the-lock-table-size-2/

基本的に私のinnodb_buffer_poolが小さすぎると述べています。私は確認して、新しいサーバーは、より大きいが、2GBの古い設定を移行させたことはありませんでした。私たちは128MBしか持っていません。

だから私はSysAdmin/DevOpsにこれを試してみて、それが問題を解決すればこの質問に戻ってきます。

+0

この質問と他の質問の両方は、テーブル構造やインデックスなどの追加データが必要です。 – e4c5

+0

@ e4c5両方の質問はinnodb_bufferに関連しているので、私はそれを実験して結果を更新します。質問ごとにテーブルの構造に何もないので、日付またはインデックスが変更され、(新しい)サーバー設定が原因であることが判明しました。一方、これと他のQを反映して更新しました。 – user3649739

+0

あなたが自分でそれを理解したことを知っていて嬉しいです。間違いなくあなた自身の質問に答えてそれを受け入れることが可能であることを認識しています:-) – e4c5

答えて

0

[OK]ので、質問への答えはMySQLの設定でした。明らかに私たちがサーバを移行したときに、DevOps/SysAdminは設定を移行しましたが、サーバを再起動しませんでした。我々は昨晩再開し、物事はうまくいった。

問題は、innodb_buffer_poolがデフォルトで128MBに設定されていて、私たちのカスタム設定が2GBであるという問題でした。

関連する問題