mysql优化-----ddl语句
来源:互联网 发布:淘宝女包店铺排行榜 编辑:程序博客网 时间:2024/05/21 14:02
mysql优化-----ddl语句
http://blog.csdn.net/wyzxg/article/details/7709343
mysql优化-----ddl语句
在drop table维护mysql数据库时,在drop操作期间,整个系统会被hang住,这个hang的时间的长短与Buffer Pool的大小相关。主要原因在于InnoDB在drop table时,会连续两次遍历buf pool LRU 链表,遍历的过程加锁,因此导致系统hang住。
第一遍用于释放adaptive hash中的记录:
0. 获取当前buf pool的mutex,为遍历buf pool LRU list的准备
1. 从LRU链表尾部开始遍历
2. 对于每一个属于Drop Table的page,判断page中是否有项进入adaptive hash,若有,则收集当前page
3. 收集到1024个这样的page后,释放buf pool mutex,集中调用函数buf_LRU_drop_page_hash_batch,释放page在adaptive hash中的项
4. 重新获取buf pool mutex,继续遍历buf pool LRU 链表,直至链表头
5. 最终,释放buf pool mutex,退出
第二次遍历buf pool LRU链表,释放所有drop table对应的page
1. 获取buf pool mutex
2. 遍历buffer pool LRU链表
3. 若为dirty page,则将dirty page设置为clean page,并从flush list中移除
4. 将page从LRU list中移除,并且添加入free list
5. 最后,释放buf pool mutex
测试:
环境:
os:redhat5.2
mysql:5.5.24-log
session1:
mysql> insert into tt2 select @a:=@a+1,name from tt2;
Query OK, 4194304 rows affected (1 min 11.52 sec)
Records: 4194304 Duplicates: 0 Warnings: 0
开始drop tt2,同时在session2中insert一条记录
mysql> drop table tt2;
Query OK, 0 rows affected (6.42 sec)
mysql>
session2:
正常insert一条记录需要0.03s
mysql> insert into t2 values (11,'22');
Query OK, 1 row affected (0.03 sec)
当在执行drop tt2的时候,就需要4.17s
mysql> insert into t2 values (11,'22');
Query OK, 1 row affected (4.17 sec)
mysql>
总结:
1.第一遍遍历LRU链表,会定期释放buf pool mutex,因此对于系统hang的影响较小;而第二遍会一直持有,对系统hang的影响较大。
2.在维护drop操作时,一定要选择空闲时间,因为他会阻塞所有ddl和dml操作。
- mysql优化-----ddl语句
- mysql优化-----ddl语句
- MySQL DDL语句
- MySQL DDL操作语句
- MySQL笔记-DDL语句
- mysql---DDL语句
- MySql基础-DDL语句
- MySQL之DDL语句
- mysql 常用的 ddl 语句。
- Mysql之DDL语句_create_alter
- MYSQL数据库基本DDL语句
- mysql 常用 ddl 语句示例
- MySQL语句基础之DDL语句
- MySQL中的DDL语句,DML语句初步
- 《深入浅出mysql数据库开发、优化与管理维护》sql基础(DDL、DML、DCL语句)
- 【2】mysql 数据库的DDL语句
- MYSQL数据库——DDL语句
- MySql基础的增删改 ddl语句
- 邮件发送
- android 开发性能优化
- 虚拟化技术笔记
- MySQL,查看数据库的信息,大小,最后修改时间等
- test
- mysql优化-----ddl语句
- 关于字符串数组中存储不同类型的数值
- 【我所认知的BIOS】—> uEFI AHCI Driver(7) — AtaAtapiPassThruSupported
- 基于JAX-WS的Web Service服务端/客户端
- [Haxe] Reflect
- RTLSDR_SCANNER 安装 FOR WIN
- ruby on rails tutorial 笔记 (第四章)
- iPhone开发资源汇总
- C伯,给条活路吧