ITPub博客

首页 > 数据库 > MySQL > MySQL5.6 create table原理分析

MySQL5.6 create table原理分析

原创 MySQL 作者:yzs87 时间:2018-05-13 21:15:09 0 删除 编辑

MySQL5.6之前的版本DDL是非原子的。也就是说对于复合的DDL,比如DROP TABLE t1, t2;执行过程中如果遇到server crash,有可能出现表t1被DROP掉了,但是t2没有被DROP掉的情况。即便是一条DDL,比如CREATE TABLE t1(a int);也可能在server crash的情况下导致建表不完整,有可能在建表失败的情况下遗留.frm或者.ibd文件。

从原理流程图中可以看出,create table先创建.frm文件,再调用ha_create_table创建ibd文件,如果创建成功则退出,否则将之前创建的frm文件删除。但是这里就有问题了,如果创建完frm文件后,server挂了,那么frm文件是创建成功了,但是ibd文件没有创建。这就是DDL非原子性导致的后果。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31493717/viewspace-2154424/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专注于MySQL、Aerospike、PostgreSQL数据库

注册时间:2017-10-03

  • 博文量
    149
  • 访问量
    285475