开发者社区 > 云原生 > 中间件 > 正文

Spring Cloud Alibaba中请求个mysql问题,2k万的表 新建索引会锁表吗?

Spring Cloud Alibaba中请求个mysql问题,2k万的表 新建索引会锁表吗?create index与alter table add 【ALGORITHM=INPLACE, LOCK=NONE】?

展开
收起
小小鹿鹿鹿 2023-11-14 22:42:31 128 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 Spring Cloud Alibaba 中执行针对具有 2 千万行的表的索引创建操作可能会导致表锁定。当使用 CREATE INDEXALTER TABLE ADD 命令创建索引时,默认情况下,MySQL 使用的是复制操作(REBUILD)来完成索引的创建,这将涉及到锁定整个表。

    然而,MySQL 提供了一些选项来减少索引创建操作对表的锁定时间。其中,您提到了 ALGORITHM=INPLACE, LOCK=NONE 这两个选项:

    • ALGORITHM=INPLACE:使用该选项可以尝试使用原地算法来执行索引创建操作,以减少对表的锁定时间。这意味着 MySQL 将尝试在不复制整个表的情况下执行索引创建操作。
    • LOCK=NONE:使用该选项可以告知 MySQL 在索引创建期间避免进行任何表锁定。

    请注意,ALGORITHM=INPLACELOCK=NONE 选项并非所有版本的 MySQL 都支持,且某些条件下可能无法使用。您需要根据您正在使用的 MySQL 版本和配置来确定是否支持这些选项。可以通过查询相关文档或联系 MySQL 支持团队来获取更详细的信息。

    2023-11-30 22:57:19
    赞同 展开评论 打赏
  • 在MySQL中,对表进行索引创建或修改时,通常会涉及到表锁的问题。当对表进行操作时,为了保护数据的完整性,MySQL会对表进行加锁,以防止其他并发操作影响数据的一致性。

    对于大型表,如2k万的表,创建索引或使用ALTER TABLE语句修改表结构时,MySQL会使用不同的算法和锁定机制。根据您提供的语句CREATE INDEXALTER TABLE ADD [ALGORITHM=INPLACE, LOCK=NONE],我们可以分别进行分析:

    1. CREATE INDEX:使用CREATE INDEX语句创建索引时,MySQL会根据索引类型和表的大小选择合适的算法。对于大型表,通常会使用INPLACE算法来创建索引,这种算法会尝试在表级别锁或行级别锁的帮助下,将索引的创建与表的正常操作结合起来。这意味着在创建索引时,表仍然可以被其他并发操作使用,但会对表的写入操作有一定限制。因此,使用CREATE INDEX语句创建索引时,表不会完全被锁定,但仍可能对某些操作产生一定的影响。
    2. ALTER TABLE ADD [ALGORITHM=INPLACE, LOCK=NONE]:使用ALTER TABLE语句修改表结构时,通过指定ALGORITHM=INPLACELOCK=NONE选项,可以告诉MySQL使用INPLACE算法进行修改,并且在修改过程中不使用任何锁定机制。这意味着在执行ALTER TABLE语句时,表不会被完全锁定,其他并发操作可以继续使用表。相对于CREATE INDEX而言,使用ALTER TABLE ADD [ALGORITHM=INPLACE, LOCK=NONE]对表的影响会更小。

    需要注意的是,虽然使用ALTER TABLE ADD [ALGORITHM=INPLACE, LOCK=NONE]对表的影响较小,但在一些情况下,仍然可能会对表的写入操作产生一定限制。另外,对于不同的存储引擎和表结构,MySQL的锁定机制和行为可能会有所不同。

    综上所述,对于2k万的表使用CREATE INDEXALTER TABLE ADD [ALGORITHM=INPLACE, LOCK=NONE]时,虽然不会完全锁定表,但仍然可能对表的某些操作产生一定的影响。因此,在执行这些操作时,建议评估其对系统性能的影响,并做好相应的备份和风险防范措施。

    2023-11-15 15:34:13
    赞同 展开评论 打赏
  • 官网解释。6485d560a0e023b3e519d57ec0d8c3d4.png。此回答来自钉群群5 Spring Cloud Alibaba。

    2023-11-14 23:40:35
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关镜像