首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优化mysql表以避免锁定

优化mysql表以避免锁定
EN

Stack Overflow用户
提问于 2012-01-26 09:18:06
回答 1查看 3.1K关注 0票数 3

如何优化mysql表以避免使用锁定?我可以随时将表改为“关闭”锁定。

情况:

我有一个应用程序,它使用1500万个记录的数据库。一旦每周脚本执行一些任务(insert/update/delete) 20小时,以及将数据提供给前端的应用服务器(web服务器),这是很好的,我在这段时间里看到了非常小的性能损失。

问题:

每月一次,我需要优化表,因为有大量的记录,完成这项任务需要1-2个小时(从mysql命令行开始优化,或phpMyAdmin,相同),而在这段时间内mysql不向前端提供数据(我认为这是为了优化而锁定表)。

问题:

那么,如何选择表以避免锁定,因为只有读取数据(没有插入或更新),所以我认为‘解锁’的同时,优化,在这种情况下不会造成任何损害?

EN

回答 1

Stack Overflow用户

发布于 2017-02-16 13:22:16

如果您的表引擎是InnoDB,而MySQL版本是> 5.6.17,那么锁就不会发生。其实会有锁,但时间很短。

在Mysql 5.6.17之前,优化表不使用联机DDL。因此,在运行优化表时,不允许并发DML (INSERT、UPDATE、DELETE),也不允许高效地创建辅助索引。 从MySQL 5.6.17开始,优化表对常规的和分区的InnoDB表使用联机DDL。表重建,由优化表触发,并在ALTER的掩护下执行.执行FORCE,只在短时间内锁定表,从而减少并发DML操作的停机时间。

优化表格官方参考。

更好地准备空闲空间,即比表当前占用的空间更多的空间,因为整个表副本都可以用于索引重建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9015940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档