开发者社区 > 数据库 > 正文

我想问一个dms问题,我现在数据库出现了慢查询,优化建议是添加索引,但是当前表数据很多,执行会锁表。

我想问一个dms问题,我现在数据库出现了慢查询,优化建议是添加索引,但是当前表数据很多,执行会锁表。有解决方案吗?

展开
收起
真的很搞笑 2023-04-11 08:51:25 221 0
2 条回答
写回答
取消 提交回答
  • 建议您在业务低峰期执行,这样对数据库的影响比较小,此回答整理自钉群“阿里云DMS数据管理用户交流群”

    2023-04-12 10:46:32
    赞同 展开评论 打赏
  • 热爱开发

    在数据库添加索引时,确实会对表进行锁定,并且锁定的时间也可能比较长。如果当前表中数据很多,就需要考虑如何避免因为添加索引而导致的锁表问题。

    一种解决方案是使用在线添加索引(Online DDL)的方式。Online DDL 可以在不锁定表的情况下添加、删除或修改索引。不同的数据库厂商支持的 Online DDL 方式可能不同,例如 MySQL 支持的 Online DDL 方式有 InnoDB Online DDL 和 pt-online-schema-change 等。

    另外,可以考虑将索引添加到一个新的表中,然后将原始表中的数据复制到新表中。这种方法需要确保在复制数据过程中不会出现数据冲突或者错误。完成数据复制之后,可以重命名表名称,从而将新表替换掉原始表。

    除此之外,还可以考虑在业务低峰期执行添加索引操作,减少对业务的影响。

    总之,添加索引是优化慢查询的一种有效手段,但在实际操作中需要注意对业务的影响。可以根据实际情况选择适合的方法来解决锁表问题。

    2023-04-11 09:03:40
    赞同 展开评论 打赏

数据库领域前沿技术分享与交流

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载