5

21M レコードの MySQL データベースがあり、約 1M レコードを更新しようとしていますが、クエリが失敗します。ERROR 1206 (HY000): The total number of locks exceeds the lock table size.

ロックを取得せずにテーブルを更新することはできますか?

などの MySQL 構成パラメーターを変更するアクセス権がありませんinnodb_buffer_pool_size。同じことを達成する別の方法はありますか?

ありがとう

編集

  1. 5000回のバッチで試しましたが、数回は機能しますが、同じエラーが発生します
  2. LOCK TABLES を使用してテーブル全体をロックしようとしましたが、まだ機能しません。
4

2 に答える 2

3

limit 句を使用してバッチで更新を行うことができると思います。

于 2011-02-02T15:17:35.683 に答える
1

行レベルではなくテーブル レベルでロックしてみてください。を使用しLOCK TABLES MyTable WRITEます。これで問題が解決する場合があります。保証はありませんが!テーブルのロックを解除することも忘れないでください!

于 2011-02-02T15:22:02.940 に答える