• ADADADADAD

    ONLINE DDL INPLACE和COPY两种方式MDL锁的区别有哪些[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:15:04

    作者:文/会员上传

    简介:

    MySQL online DDL分为INPLACE和COPY两种方式,通过在ALTER语句的ALGORITHM参数指定,两种方式除了实现方式不同外,整个过程中MDL上锁也是不一样的。对于alter table test.t1 add

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MySQL online DDL分为INPLACE和COPY两种方式,通过在ALTER语句的ALGORITHM参数指定,两种方式除了实现方式不同外,整个过程中MDL上锁也是不一样的。

    对于alter table test.t1 add column name varchar(10), algorithm=copy;,alter用copy到临时的方式来做。整个过程中MDL顺序是这样的:
    prepare阶段:先申请MDL_SHARED_UPGRADABLE锁,然后升级到MDL_SHARED_NO_WRITE锁
    alter阶段:MDL_SHARED_NO_WRITE锁
    commit阶段:升级到MDL_EXCLUSIVE锁

    对于alter table test.t1 add column name varchar(10), algorithm=inplace;,如果alter使用inplace算法的话,整个过程中MDL加锁顺序是这样的:
    prepare阶段:先申请MDL_SHARED_UPGRADABLE锁,然后升级到MDL_EXCLUSIVE锁,再降级到MDL_SHARED_UPGRADABLE锁
    alter阶段:MDL_SHARED_UPGRADABLE
    commit阶段:升级到MDL_EXCLUSIVE锁

    MDL_SHARED_UPGRADABLE跟select获取的SR锁和dml获取的SW锁都兼容
    MDL_SHARED_NO_WRITE跟select获取的SR锁兼容,跟dml获取的SW锁冲突
    MDL_EXCLUSIVE跟select获取的SR锁和dml获取的SW锁都冲突

    ONLINE DDL INPLACE和COPY两种方式MDL锁的区别有哪些.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载