今天开发反映说开发环境一台mysql操作报错:
ERROR 1206 (HY000): The total number of locks exceeds the lock table size
是在做一个update的时候报错的,我要来语句,换成select查看了一下数据量,600多W。
查看 max_write_lock_count 的值,是 8446744073709551615,肯定够用了。
再查看 innodb_buffer_pool_size,是默认的 8M,这个值对于innodb的绝大部分应用都是不够用的。
加大到合适的值,我这里是加大到了2G,对于线上的业务,都是使用innodb表,这个值设置为物理内存的60-70%,
重启 mysql,再次执行sql,没有问题。
另外的一个方案就是,就是将一条语句执行更改为分页执行,每次执行一部分。不只是对于update,对于delete 同样有效。
ERROR 1206 (HY000): The total number of locks exceeds the lock table size
是在做一个update的时候报错的,我要来语句,换成select查看了一下数据量,600多W。
查看 max_write_lock_count 的值,是 8446744073709551615,肯定够用了。
再查看 innodb_buffer_pool_size,是默认的 8M,这个值对于innodb的绝大部分应用都是不够用的。
加大到合适的值,我这里是加大到了2G,对于线上的业务,都是使用innodb表,这个值设置为物理内存的60-70%,
重启 mysql,再次执行sql,没有问题。
另外的一个方案就是,就是将一条语句执行更改为分页执行,每次执行一部分。不只是对于update,对于delete 同样有效。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22418990/viewspace-1250444/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22418990/viewspace-1250444/