Heim > Datenbank > MySQL-Tutorial > 【mysql】1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题_MySQL

【mysql】1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题_MySQL

WBOY
Freigeben: 2016-06-01 13:27:02
Original
1207 Leute haben es durchsucht

bitsCN.com

最近在做一个项目,其中一需求是:部分数据库中的数据需要定时删除掉(满足一定条件,比如7天前的数据都不保留)

最初的执行方法:

使用Quartz定时执行数据库操作,进行数据删除,数据库操作使用delete语句

最开始数据少的时候,没有问题,后来随着数据量变大,执行这个任务后台就报错了,具体错误信息是:

1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题

 

google了一把,大家给出的解决方法

第一种

查看 max_write_lock_count 和 innodb_buffer_pool_size参数的值,修改 innodb_buffer_pool_size的值,增大到符合需求,关于值设置可以参考http://wangwei007.blog.51cto.com/68019/967278默认值如下: 

 

第二种:

让用Limit来限制每次写的行数,但是我在代码中已经做了,所以这个应该是解决不了我的问题。 实践证明:使用delete来删除较大数据是不靠谱的,最后修改实现方法,达到删除的目的。创建存储过程,存储过程执行步骤:1)创建一个表结构和目标表结构相同的备份表,数据选择目标表中需要保留的(及不满足删除条件的)2)执行 truncate 命令,将目标表清空3)把步骤 1)中准备好的备份表数据全部导入到空的目标表中 通过上面这个存储过程,顺利完成了目标需求,每天稳定执行删除记录任务。 再回到最初的问题:1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) mysql报的这个错误,从mysql官网上,可以看到对于这个错误类型的解释:

错误:1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL)

消息:总的锁定数超出了锁定表的大小。

mysql的表什么时候会被锁,被锁的处理应该是怎么样的,还要继续研究。。。。

参考:http://www.gosoa.com.cn/mysql-%E9%94%81%E8%A1%A8%E6%9C%BA%E5%88%B6%E5%88%86%E6%9E%90

 

 

bitsCN.com
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage