MYSQL将表的存储引擎从INNODB更改为MYISAM

我在表中有大约1000万条数据记录(innodb作为存储) . 当我执行大量编辑,插入和添加时,我通常会超出最大锁定 . 在阅读一些帮助提示后,我想将表格转换为MyISAM,看看是否会有一些改进 .

但是当我尝试在phpmyadmin中将存储类型从innodb更改为myisam时,我得到'锁定数超出错误'

  • 改成myIsam好吗?

  • 我用什么方法来避免'max no. of locks exceeded error?'

谢谢

回答(1)

3 years ago

改为MyISAM可能是一个非常糟糕的主意 . 您将失去事务支持,并且数据库将不会被记录,这意味着崩溃可能很容易破坏它超出可恢复性 .

您可以调整服务器的锁定超时参数,以便为操作提供更长的完成时间 . 对于批量操作,这是必不可少的这是 innodb_lock_wait_timeout 配置参数,您可以手动调整或在 my.cnf 中设置 . 这通常非常低,通常为50秒,因此除非更改,否则许多大型操作都将失败 .

您还应该删除任何非严格要求的索引,因为这可能是许多延迟的来源 . SHOW TABLE STATUS 将让您了解与表关联的索引空间量 . 更大的索引维护成本更高,尤其是在进行大量插入时 .