我在表中有大约1000万条数据记录(innodb作为存储) . 当我执行大量编辑,插入和添加时,我通常会超出最大锁定 . 在阅读一些帮助提示后,我想将表格转换为MyISAM,看看是否会有一些改进 .
但是当我尝试在phpmyadmin中将存储类型从innodb更改为myisam时,我得到'锁定数超出错误'
改成myIsam好吗?
我用什么方法来避免'max no. of locks exceeded error?'
谢谢
改为MyISAM可能是一个非常糟糕的主意 . 您将失去事务支持,并且数据库将不会被记录,这意味着崩溃可能很容易破坏它超出可恢复性 .
您可以调整服务器的锁定超时参数,以便为操作提供更长的完成时间 . 对于批量操作,这是必不可少的这是 innodb_lock_wait_timeout 配置参数,您可以手动调整或在 my.cnf 中设置 . 这通常非常低,通常为50秒,因此除非更改,否则许多大型操作都将失败 .
innodb_lock_wait_timeout
my.cnf
您还应该删除任何非严格要求的索引,因为这可能是许多延迟的来源 . SHOW TABLE STATUS 将让您了解与表关联的索引空间量 . 更大的索引维护成本更高,尤其是在进行大量插入时 .
SHOW TABLE STATUS
1 回答
改为MyISAM可能是一个非常糟糕的主意 . 您将失去事务支持,并且数据库将不会被记录,这意味着崩溃可能很容易破坏它超出可恢复性 .
您可以调整服务器的锁定超时参数,以便为操作提供更长的完成时间 . 对于批量操作,这是必不可少的这是
innodb_lock_wait_timeout
配置参数,您可以手动调整或在my.cnf
中设置 . 这通常非常低,通常为50秒,因此除非更改,否则许多大型操作都将失败 .您还应该删除任何非严格要求的索引,因为这可能是许多延迟的来源 .
SHOW TABLE STATUS
将让您了解与表关联的索引空间量 . 更大的索引维护成本更高,尤其是在进行大量插入时 .