mysql 5.6 online ddl 测试

标签: mysql online ddl | 发表时间:2013-06-08 16:10 | 作者:aeolus_pu
出处:http://blog.csdn.net

     在生产环境中,因为业务需求,改动mysql表结构,特别是数据量特别大的时候,几百万甚至几千万的数据,mysql online ddl操作非常让mysql dba揪心。5.6版本支持online ddl。

   为什么mysql ddl操作让dba揪心呢?因为mysql ddl操作内部原理是这样的:

  1create table tmp  like table2  (创建临时表,与原表相似)

  2insert into tmp select *  from table2  (原数据拷贝到临时表里,并且索引等信息与原表一样)

  3drop table table1  删除原表

  4rename tmp to table1  临时表名改名为原表

在整个过程中,原表table1加共享锁(s锁),这样对业务影响就很大,作业造成阻塞(曾经同事晚上11点增加字段,导致订单业务受到影响)接下来测试一下。在mysql5.6版本里,进行了优化,alter table table1 add  ….操作时,增、删、改、查都不会锁表.

首先准备测试数据,尽量千万以上,测试效果明显

[root@aeolus1 bin]# sysbench --test=oltp--oltp-table-size=15000000 --mysql-db=test --mysql-user=root prepare

sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql

Creating table 'sbtest'...

Creating 15000000 records in table'sbtest'...

其中一个会话执行

mysql> alter table sbtest add testvarchar(10);

另一会话执行

mysql> insert into sbtestvalues(0,1,'abc','abc');

Query OK, 1 row affected (0.44 sec)

mysql> delete  from sbtest where id=2000;

Query OK, 1 row affected (1.21 sec)

mysql> update sbtest set k=3 whereid=20000;

Query OK, 1 row affected (0.59 sec)

Rows matched: 1  Changed: 1 Warnings: 0

 顺利执行完毕,没有锁表。

当有会话访问时,花费时间比较长,这时进行alter table sbtest add 操作,alter table sbtest操作会等这个会话结束后,再进行ddl操作。

作者:aeolus_pu 发表于2013-6-8 16:10:05 原文链接
阅读:85 评论:0 查看评论

相关 [mysql online ddl] 推荐:

mysql 5.6 online ddl 测试

- - CSDN博客数据库推荐文章
     在生产环境中,因为业务需求,改动mysql表结构,特别是数据量特别大的时候,几百万甚至几千万的数据,mysql online ddl操作非常让mysql dba揪心. 5.6版本支持online ddl.    为什么mysql ddl操作让dba揪心呢. 因为mysql ddl操作内部原理是这样的:.

MySQL 5.6企业版支持全文索引和在线DDL

- - InfoQ cn
MySQL 5.6系列到达了一个新的里程碑,自此之后Oracle便能舒服地为它的付费客户发布更新的MySQL企业版了. 5.6版本中包含的企业版组件包括:. MySQL企业安全(PAM和Windows认证插件). 之前只有MySQL5.5的用户才能使用这些扩展. MySQL 5.6改进了安全功能,例如对关键配置文件和用户密码的加密方式,但是 对InnoDB的提升才是大新闻.

Oracle online redo log 扫盲

- - CSDN博客数据库推荐文章
Oracle 的日志分为:ONLINE REDO LOG 和 archived log. 一个数据库至少要有2组 redo log,每组 redo log 至少要有一个 member(出于安全考虑,建议每组 redo log 至少有 2 个多元化的 redo log member). redo log 循环使用,当一组日志写满后,就会切换到下一组日志.

Ubuntu 11.10 Online Release Party(非官方)

- tackwell - 笨兔兔
各位同学及众Ubuntu、Linux 爱好者们:. 兔兔在此首先向各位支持笨兔兔博客的同学表示谢意. 如果没有你们的支持,笨兔兔博客不可能有如此活跃. 兔兔也就不可能有这样的信心和勇气坚持这么久. 一个好的博客,不是个人的,应是众人共同的关注. 笨兔兔博客自建立起,就是为了实现兔兔的一个简单的梦想:致力服务于众同学的Ubuntu和Linux学习交流,做Ubuntu和Linux宣传推广的平台.

index rebuild和rebuild online的区别

- - CSDN博客数据库推荐文章
       曾经看到过淘宝的这个面试题:在一个24*7的应用上,需要把一个访问量很大的1000万以上数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句.        先online建索引添加约束,然后删除原理的索引.        为什么要用online呢.

[原]online db如何做字段扩充

- - yangfei的私房菜
声明:部分内容来自网络收集.     线上User表目前存在四个字段user(uid, name, passwd, nick),现在需要增加两个字段age, sex,变为user(uid, name, passwd, nick, age, sex).     目前user表数据量较大,且并发请求量较大.

让Hibernate生成的DDL脚本自动增加注释

- - CSDN博客架构设计推荐文章
我们知道可以通过Hibernate对象自动生成DDL建表语句,通过PowerDesigner工具可以反向工程生成数据字典,但是在生成的DDL中一直不能写上中文的注释,这就使我们生成的数据字典不具有可用性. 这个假期宅在家里调试代码,发现Hibernate的Dialect,Table,Column的映射中已经做了comment的处理,只是Hibernate团队认为这个功能的重要性太小,一直没有时间提供这个需求,于是就自己动手实现这个功能了,这可是使用我们的数据对象代码与数据字典文档同步的关键一环啊.

使用触发器实现数据库级守护,防止DDL操作

- - jackyrong
不管是有意还是无意的,你可能会遇到数据库中重要的数据表等对象被drop掉的情况,这可能会给我们带来巨大的损失. 通过触发器,我们可以实现对于表等对象的数据库级守护,禁止用户drop操作. 以下是一个简单的范例,供参考:.                                msg      =>    '你疯了,想删除表 '.

帝国时代 Online 已发布,可免费下载

- Hobbes - LiveSino - LiveSide 中文版
『帝国时代 Online』是微软老牌即时战略游戏帝国时代的在线版,玩家可以在这里免费下载客户端. 帝国时代 Online 游戏本身免费,你可以在 Games for Windows 商店(现迁移至了 Xbox 游戏商店)中购买道具或增强包. 下面还有一段『帝国时代 Online』的发布视频(感谢 Long Zheng 的提醒):.

帝国时代OL(Age of Empires Online)下载安装教程

- Hans - cnBeta.COM
今天一大早看新闻就发现帝国时代OL(Age of Empires Online)发布了,又想起了我小学时省下2元早餐钱中午去大帝国时代1的日子,那时候真是热血沸腾,互相比赛看谁先出黄金马,打不过就pow召唤娃娃兵,现在想起来别有一番趣味.