大きなテーブルのMySQLのクエリを更新します
-
28-10-2019 - |
質問
21mのレコードを備えたMySQLデータベースがあり、約1mのレコードのアップデートを実行しようとしていますが、クエリは失敗します ERROR 1206 (HY000): The total number of locks exceeds the lock table size.
ロックを取得せずにテーブルを更新することは可能ですか?
mysql構成パラメーターを変更するためにアクセスできません innodb_buffer_pool_size
. 。同じことを達成する別の方法はありますか?
ありがとう
編集:
- 5000のバッチで試してみましたが、数回動作しますが、同じエラーが発生します
- テーブル全体をロックするためにロックテーブルを試してみましたが、それでも機能しません。
解決
Limit句を使用して、バッチで更新を行うことができると思います。
他のヒント
行レベルではなく、テーブルレベルでロックしてみてください。使用する LOCK TABLES MyTable WRITE
. 。これは問題を解決するかもしれません。しかし、保証はありません!テーブルのロックを解除することも忘れないでください!
所属していません StackOverflow