阿里集团mysql特性(5.5介绍)

22
阿里集团MySQL介绍 (5.5特性) 集团-数据库-MySQL [email protected] 1

Upload: hui-liu

Post on 31-May-2015

801 views

Category:

Technology


14 download

TRANSCRIPT

Page 1: 阿里集团MySQL特性(5.5介绍)

阿里集团MySQL介绍 (5.5特性)

集团-数据库-MySQL

[email protected]

1

Page 2: 阿里集团MySQL特性(5.5介绍)

现状

5.1.48

停止支持

5.1.61

RDS定制版本

5.5

重点发展版本(阿里集团版本)

2

Page 3: 阿里集团MySQL特性(5.5介绍)

5.5

源于Percona-5.5.18

改动主要为:

backport 5.5新版本的bugfix

fix集团MySQL DBA遇到的bug

dev使用集团MySQL遇到的需求

集团MySQL为内部版本

3

Page 6: 阿里集团MySQL特性(5.5介绍)

5.5:复制回路事件自动检测

6

server_id异常变动

event在拓朴结构中节点间来回传递

集团MySQL版本自动识别并在error.log中打印日志

团队博客(TBD)

Page 7: 阿里集团MySQL特性(5.5介绍)

5.5:mysqlbinlog –B(flashback)

7

回滚到binlog中某个点

DELETE <-> INSERT

UPDATE (SET <-> WHERE)

顺序解析,逆序输出

Page 8: 阿里集团MySQL特性(5.5介绍)

5.5:flush privileges导致连接失败

8

间断性连接失败,小概率事件,难排查

一段线程锁竞争的代码惹的祸

团队博客

Page 9: 阿里集团MySQL特性(5.5介绍)

5.5:死锁开关检测

9

deadlock_detect_switch=OFF|ON

在类似“热卖”商品场景下,绕开死锁检测

ICDB集群部署

Page 10: 阿里集团MySQL特性(5.5介绍)

5.5:并行复制(评估中…)

10

第一版本发发布,第二版本正在开发中

merge到trunk中,还有一段非常长的时间

团队博客

Page 11: 阿里集团MySQL特性(5.5介绍)

5.5:新特性1

11

InnoDB Change Buffering

默认版本从insert->all

(因为all未稳定,集团版本默认仍为insert)

如果page不在BP中,稍后一旦从disk上读到Cache中再 merge

SSD随机读和顺序读相当, Percona建议为none

(需要测试验证)

Page 12: 阿里集团MySQL特性(5.5介绍)

5.5:新特性2

12

separate doublewrite file

innodb_doublewrite_file

写入型会受益:

增加并行IO(独立的磁盘)

增加SSD的寿命

(对现在SSD的意义没有想象的明显)

Page 13: 阿里集团MySQL特性(5.5介绍)

5.5:新特性3

13

multiple buffer pools

多个BP:

减少BP flush_list锁竞争

page通过hash分配到BP上

尽可能地扩散hot pages

过多的BP会增加内部额外开销

Page 14: 阿里集团MySQL特性(5.5介绍)

5.5:新特性4

14

partitioned adaptive hash search

分拆自适应hash, 减少锁竞争

innodb_adaptive_hash_partitions = N

多核CPU+读写混合时+非聚簇索引

Page 15: 阿里集团MySQL特性(5.5介绍)

5.5:新特性5

15

extra rollback segments

增加事务并发性

innodb_extra_rsegments被废弃

写入型负载需要更多的rollback segments

Page 16: 阿里集团MySQL特性(5.5介绍)

5.5:新特性6

16

innodb_fast_checksum

if (!fast_checksum) then old_checksum

页面可能有混合的checksum

新写页面采用fast checksum

完全采用此特性,必须重建表

innodb_fast_checksums disable->enable,需重建表

Page 17: 阿里集团MySQL特性(5.5介绍)

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阻塞业务

Page 18: 阿里集团MySQL特性(5.5介绍)

5.5:新特性8

18

native aio

默认为 AIO

将I/O merge的负担交给kernel(相比模拟AIO)

性能比模拟aio高不了多少

更稳定,经常更多人测试

能减少1/3的恢复时间

Page 19: 阿里集团MySQL特性(5.5介绍)

5.5:新特性9

19

adaptive flushing

innodb_io_capacity & innodb_max_dirty_pages_pct

顺序相邻的脏页 更适用于解决多个BP刷脏性能

5.5中更平滑 reflex, estimate, keep_average

5.6性能更优

Page 20: 阿里集团MySQL特性(5.5介绍)

5.5:新特性10

20

optimize dumping

innodb-optimize-keys for mysqldump

非聚簇索引会在load完数据再创建 建表时,忽略KEY, UNIQUE KEY, 和 CONSTRAINT

导完数据再用ALTER TABLE来补全之前突略的语句

Page 21: 阿里集团MySQL特性(5.5介绍)

5.5:新特性11

21

快速删表

innodb_lazy_drop_table

Facebook & 5.6从flush_list刷

Percona更简单,直接标记space_id为deleted

团队博客