在刪除mysql中的數據時,遇到報錯:
ERROR 1206 (HY000): The total number of locks exceeds the lock table size
查了查,發現是mysql配置里 innodb_buffer_pool_size 這一個配置太小造成InnoDB在執行大批量數據的插入、刪除時會無法執行,檢查配置:
mysql> show variables like '%_buffer%'; +-------------------------+---------+ | Variable_name | Value | +-------------------------+---------+ | bulk_insert_buffer_size | 8388608 | | innodb_buffer_pool_size | 8388608 |
innodb_buffer_pool_size才8M,無語中,OP給配的果然不靠譜,設成256M,重啟MySQL
innodb_buffer_pool_size = 256M
然后再檢查配置項,發現innodb_buffer_pool_size 依然是8M,感覺很離奇,然后想到是不是配置文件沒有生效,所以檢查mysql引用的配置文件位置
執行
/home/mysql/bin/mysqld --verbose --help | grep -A 1 'Default options'
結果為
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /home/mysql/etc/my.cnf ~/.my.cnf
逐個檢查my.cnf,發現根本就沒對應的文件,OP給配的果然不靠譜。。
把my.cnf復制到 /home/mysql/etc/ 路徑下,重啟mysql,檢查InnoDB變量
mysql> show variables like '%_buffer%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | bulk_insert_buffer_size | 8388608 | | innodb_buffer_pool_size | 268435456 | ...
配置生效,然后再執行之前的delete操作,刪除OK