阿里集团mysql特性(5.5介绍)
TRANSCRIPT
现状
5.1.48
停止支持
5.1.61
RDS定制版本
5.5
重点发展版本(阿里集团版本)
2
5.5
源于Percona-5.5.18
改动主要为:
backport 5.5新版本的bugfix
fix集团MySQL DBA遇到的bug
dev使用集团MySQL遇到的需求
集团MySQL为内部版本
3
5.5:slave_exec_mode=smart
4
SQL线程错误: 1032|1062 !!!
团队博客
5.5:QC额外锁开销
5
Percona 启动时disable QC
MySQL
编译时without_query_cache MariaDB-5.5亦解决(和QC作者沟通)
集团MySQL彻底解决此问题 团队博客1(5.1) 团队博客2(5.5)
5.5:复制回路事件自动检测
6
server_id异常变动
event在拓朴结构中节点间来回传递
集团MySQL版本自动识别并在error.log中打印日志
团队博客(TBD)
5.5:mysqlbinlog –B(flashback)
7
回滚到binlog中某个点
DELETE <-> INSERT
UPDATE (SET <-> WHERE)
顺序解析,逆序输出
5.5:flush privileges导致连接失败
8
间断性连接失败,小概率事件,难排查
一段线程锁竞争的代码惹的祸
团队博客
5.5:死锁开关检测
9
deadlock_detect_switch=OFF|ON
在类似“热卖”商品场景下,绕开死锁检测
ICDB集群部署
5.5:并行复制(评估中…)
10
第一版本发发布,第二版本正在开发中
merge到trunk中,还有一段非常长的时间
团队博客
5.5:新特性1
11
InnoDB Change Buffering
默认版本从insert->all
(因为all未稳定,集团版本默认仍为insert)
如果page不在BP中,稍后一旦从disk上读到Cache中再 merge
SSD随机读和顺序读相当, Percona建议为none
(需要测试验证)
5.5:新特性2
12
separate doublewrite file
innodb_doublewrite_file
写入型会受益:
增加并行IO(独立的磁盘)
增加SSD的寿命
(对现在SSD的意义没有想象的明显)
5.5:新特性3
13
multiple buffer pools
多个BP:
减少BP flush_list锁竞争
page通过hash分配到BP上
尽可能地扩散hot pages
过多的BP会增加内部额外开销
5.5:新特性4
14
partitioned adaptive hash search
分拆自适应hash, 减少锁竞争
innodb_adaptive_hash_partitions = N
多核CPU+读写混合时+非聚簇索引
5.5:新特性5
15
extra rollback segments
增加事务并发性
innodb_extra_rsegments被废弃
写入型负载需要更多的rollback segments
5.5:新特性6
16
innodb_fast_checksum
if (!fast_checksum) then old_checksum
页面可能有混合的checksum
新写页面采用fast checksum
完全采用此特性,必须重建表
innodb_fast_checksums disable->enable,需重建表
5.5:新特性7
17
separate purge thread
5.5之前是在master线程中 5.5默认innodb_purge_threads=1
insert/update型,建议对比多个purge线程
(注意考查稳定性)
集团MySQL的purge_batch_size选项 防止批量purge时MySQL阻塞业务
5.5:新特性8
18
native aio
默认为 AIO
将I/O merge的负担交给kernel(相比模拟AIO)
性能比模拟aio高不了多少
更稳定,经常更多人测试
能减少1/3的恢复时间
5.5:新特性9
19
adaptive flushing
innodb_io_capacity & innodb_max_dirty_pages_pct
顺序相邻的脏页 更适用于解决多个BP刷脏性能
5.5中更平滑 reflex, estimate, keep_average
5.6性能更优
5.5:新特性10
20
optimize dumping
innodb-optimize-keys for mysqldump
非聚簇索引会在load完数据再创建 建表时,忽略KEY, UNIQUE KEY, 和 CONSTRAINT
导完数据再用ALTER TABLE来补全之前突略的语句
5.5:新特性11
21
快速删表
innodb_lazy_drop_table
Facebook & 5.6从flush_list刷
Percona更简单,直接标记space_id为deleted
团队博客
5.5:新特性12
22
ibd自动扩展性能问题
采用FB的补丁
5.6增加node->being_extended
团队博客