国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

浅谈DDL技术解密

发布时间:2019/09/18标签:   索引    点击量:

原标题:浅谈DDL技术解密
起首,用过数据库的小搭档们(本文以 MySQL InnoDB 为例)都晓得,MySQL 不止有增编削数据操纵(DML),另有改表构造的操纵(DDL),当新增添字段等修正表构造时,就须要停止 DDL 操纵。但是,假如对一个存储了上百万乃至上千上万的数据表停止 DDL 操纵,数据库是怎样做到的呢?会不会有一个很大的事件锁?会不会影响数据的拔出和更新?明天就会聊聊这个成绩,以及 PT-OSC、GH-OST 等技巧,是怎样高效的处理这个成绩的。Before MySQL 5.5在 MySQL 5.5 版本及之前版本,DDL 操纵重要有 copy table 和 inplace 两种方法。1. Copy Table 方法Copy Table 顾名思义,就是经过常设表拷贝的方法完成的。在 MySQL 5.5 版本及之前版本,修正表构造是表级锁,以是在全部 DDL 进程中表都是锁着弗成写入的。这使得在修正时轻易招致数据库 CPU、IO 等机能的耗费,以及主从同步的耽误。上述进程,MySQL 主动实现转存数据,交流表名和删除旧表等操纵,时光耗费最多的是在往常设表(Server 层)拔出数据的进程,全部 DDL 进程中,表是不能履行 DML 的。2. IN-Place 方法在 MySQL 5.5 版本中,增添了 IN-Place 方法。所谓 IN-Place 方法,就是索引创立在原表上间接停止,不会 copy 全部表,只要要在本来的 idb 文件上,新建所须要的索引页,这比 Copy Table 节俭极大的 IO 资本,且增加了 DDL 履行时长。对照 Copy Table 和 IN-Place 两种方法,咱们看下官网的内容(MySQL 5.5):(引自:https://dev.mysql.com/doc/refman/5.5/en/alter-table.html)以上是 MySQL 5.5 版本中的阐明,而 MySQL 5.6 版本,则正式提出了 COPY 和 INPLACE 两种方法。(引自:https://dev.mysql.com/doc/refman/5.6/en/alter-table.html)3. Fast Index Creation(FIC)Innodb 存储引擎从 1.0.x 版本开端,对增加索引操纵引入了新特征 Fast Index Creation(FIC 特征)。FIC 就是增加或删除二级索引的时间,能够不必复制原表,而是在创立或删除二级索引时会对原表加上一个 S 锁(同享锁),同意其余会话停止读操纵,但制止写操纵,依据以后表数据创立索引,新索引创立实现以后,排除 S 锁,同意写操纵。FIC 在创立索引时不须要拷贝整表数据,但只对二级索引无效,对主键索引有效,关于主键索引的创立和删除一样须要重修一个常设表。

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号