Top Banner
MySQL 化、新特性和新架 彭立 WWW.PengLiXun.COM Alibaba DBA Team
21

MySQL优化、新特性和新架构 彭立勋

May 24, 2015

Download

Technology

Lixun Peng
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MySQL优化、新特性和新架构 彭立勋

MySQL优化、新特性和新架构

彭立勋 WWW.PengLiXun.COM

Alibaba  DBA  Team

Page 2: MySQL优化、新特性和新架构 彭立勋

Topics

•  挖掘MySQL性能

•  InnoDB Plugin新特性

•  Percona带来的改进

•  “动静结合”的分布式数据库架构

•  Q & A

Page 3: MySQL优化、新特性和新架构 彭立勋

挖掘MySQL性能

•  优化编译:ICC取代GCC

•  优化文件系统:XFS取代EXT3

•  优化存储:SSD取代SAS

•  优化接口:Handler Socket取代SQL

Page 4: MySQL优化、新特性和新架构 彭立勋

ICC取代GCC

•  ICC能有效利用Intel SSE2指令集,浮点运算效率高

•  ICC内置Intel Math Lib,提升数学函数效率

•  ICC内置Intel Thread Lib,提升多线程稳定性和效率

Page 5: MySQL优化、新特性和新架构 彭立勋

ICC vs GCC

硬件环境 CPU:Intel Xoen 5520 内存:24G 硬盘:10*15k SAS RAID10

Page 6: MySQL优化、新特性和新架构 彭立勋

XFS取代EXT3

•  XFS全B-Tree结构,适合大文件操作

•  XFS原生日志设计,日志检查速度远快于EXT3

•  XFS采用延迟分配,提升分配效率

Page 7: MySQL优化、新特性和新架构 彭立勋

EXT3 vs XFS

210  

100  

295  

140  

0  

50  

100  

150  

200  

250  

300  

350  

插入速度(Rows/s)   相对比例(%)  

64K顺序INSERT效率

EXT3  

XFS  

Page 8: MySQL优化、新特性和新架构 彭立勋

SSD取代SAS

•  一块SSD盘相当于一套高端存储的IO能力

•  读写不对称,适合用于二级读缓存和日志缓冲

Page 9: MySQL优化、新特性和新架构 彭立勋

SSD vs SAS

Page 10: MySQL优化、新特性和新架构 彭立勋

Handler Socket取代SQL

•  绕过费时的SQL解析,简单SQL通过API直接访问InnoDB

Page 11: MySQL优化、新特性和新架构 彭立勋

InnoDB Plugin新特性

•  新的文件格式 –  可选择的页大小(Page Size) –  可压缩的Blob Page

•  开放IO参数

–  innodb_io_capity –  read/write_io_thread

•  脏页刷新方式改进 –  innodb_adaptive_checkpoint(XtraDB) –  innodb_adaptive_flushing(InnoDB Plugin)

Page 12: MySQL优化、新特性和新架构 彭立勋

Adaptive Flushing

•  通过日志剩余空间除以日志产生速度算出切换前可以使用的时间:time_remainning

= log_capacity / redo_gen_rate

•  必须在日志切换前完成所有脏页的刷新,所以可以计算出刷新速度:flush_rate =

dirty_page_numbers / time_remaining = dairty_page_numbers * redo_gen_rate / log_capacity

•  将刷新速度减掉LRU_List刷新速度就可以得出Adaptive Flush必须的速度了:adaptive_flush_rate = flush_rate – lru_flush_rate = dairty_page_numbers * redo_gen_rate / log_capacity – lru_flush_rate

Page 13: MySQL优化、新特性和新架构 彭立勋

Adaptive Checkpoint

•  None:关闭自适应刷新

•  Reflex:脏页少于1/2则不刷新,超过1/2则使用Weak Flush,超过3/4则使用Strong Flush,大于7/8将不断刷新。

•  Estimate:脏页少于1/2则不刷新,超过1/2则基于未刷新的脏页量、日志产生速度、刷新页的Modified Age来计算刷新速度,大于7/8将不断刷新。

•  keep_average:刷新周期从1s提高到0.1s

Page 14: MySQL优化、新特性和新架构 彭立勋

自适应刷新方式

Page 15: MySQL优化、新特性和新架构 彭立勋

InnoDB IO流程

Page 16: MySQL优化、新特性和新架构 彭立勋

Percona带来的改进(1)

•  提升Buffer  Pool的扩展性 XtraDB将Buffer  Pool的全局Mutex拆成了多个Mutex以减少争用  

•  提高InnoDB  IO扩展性 XtraDB增加了许多变量去调整IO到最佳状态,包括调整checkpoint、后台读写数据文件线程数等等的参数  

•  多个回滚段 为提供一直读,InnoDB将事务修改的数据写到回滚段。回滚段被一个独立的Mutex保护,这直接导致了写密集型的工作并发不高。在 XtraDB可以改变回滚段的数目(innodb_extra_rsegments),在写密集型操作中可以大幅度提高性能  

•  可以更高的并发数

InnoDB在回滚段只提供了1024个回滚槽,如果回滚槽用完,新的事务将不能开始,直到有回滚槽被释放,XtraDB提供2047个事务槽

Page 17: MySQL优化、新特性和新架构 彭立勋

Percona带来的改进(2) •  专用的Purge线程

如果有很多事务,Purge线程清理空间不够快,共享表空间将急剧增长。这 将导致性能严重下降,甚至可能用完所有的磁盘空间。XtraDB使用了专用的线程来清理undo  space,这对undo  space的清理速度可以提升很多。尽管这可能使整体的性能降低,但是可以大大提高稳定性,因而整体性能略微降低是值得的  

•  可配置的Doublewrite缓冲

XtraDB提供了一个选项将doublewrite  buffer放在一个独立的磁盘来提升并发性能  

•  删除过多的函数调用 当MySQL从socket读数据时,将产生很多fcntl(针对描述符提供控制的函数)调用,导致并发性能下降。Percona移出了多于 的调用  

•  减少了Buffer  Pool  Mutex竞争

在InnoDB内核操作时减少了Buffer  Pool之间的Mutex争用(拆分Mutex变量)

Page 18: MySQL优化、新特性和新架构 彭立勋

新分布式数据库架构

•  静态服务器:主要数据存于静态服务器,除合并数据时,静态服务器数据不变。静态服务器为一组服务器池。

•  动态服务器:更新操作全部集中更在动态服务器,在合并数据时,动态服务器数据集中刷入静态服务器。

•  查询:从静态和动态服务器同时查询,合并结果。

Page 19: MySQL优化、新特性和新架构 彭立勋

程序结构

Page 20: MySQL优化、新特性和新架构 彭立勋

操作流程

Page 21: MySQL优化、新特性和新架构 彭立勋

Q&A