SlideShare ist ein Scribd-Unternehmen logo
1 von 14
对MySQL的一些
改进想法和实现

      彭立勋
 WWW.PengLiXun.COM




                     淘宝核心系统研发
MySQL目前存在的瓶颈
•   单查询不能有效利用多核
•   单文件不能有效利用多路径
•   数据文件扩展全局锁
•   事务写日志持有锁太久
•   两级B树锁不能有效并发
•   拆分数据无法有效聚合
•   误操作数据不能有效闪回
•   ……
如何解决?
• 并发
• 拆分锁
• 缩短锁的持有时间
单查询不能有效利用多核
• 对某些查询,可以并行处理
• 例如:SELECT count(*) FROM table WHERE
  col1 BETWEEN a AND b;

• 我们完全可以把[a,b]区间分成小区间并发:
• SELECT count(*) FROM table WHERE col1
  BETWEEN a AND x1;
• SELECT count(*) FROM table WHERE col1
  BETWEEN x1 AND x2;
• …
• SELECT count(*) FROM table WHERE col1
  BETWEEN xn AND b;
单文件不能有效利用多路径
• 在innodb_per_table下,每个表一个独立文件
• 如果没有好的RAID卡?如果有多个SSD?……

• 其实InnoDB的数据结构已经支持单表空间多文
  件——因为共享表空间就支持多文件!
• 对独立表空间也把fil_space_t-
  >chain(fil_node_t)用起来

• 如何计算page和node_id的对应关系?
• 除最后一个文件都必须固定大小
• 固定表空间文件数量
数据文件扩展全局锁
• fil_system->mutex锁定所有表空间操作

• 怎么解决?
• 5.6:扩展文件用fil_space_t->being_extend标
  记即可
• 我们的方案:预扩展
事务写日志持有锁太久
• 写事务日志整个过程持有log_sys->mutex

• 有必要吗?
• 写日志时已经知道要写的日志有多长。
• 因此没有必要

• 如何解决?
• 用log_sys->mutex申请一段可以写日志的空间
  ,释放锁后再写,后面需要提交的事务继续申
  请后面的位置即可。
两级B树锁不能有效并发
• InnoDB的B-tree只有两个Latch,非叶子节点使
  用index->latch,叶子节点使用page->latch。

• 如果B-Tree要扩展节点,对不起,整个B-Tree
  都需要锁定。

• 解决方案:
• 利用B-Link和IM协议来操作B-Tree。
• 为每层页加锁,而不是整个非叶子节点加锁。
拆分数据无法有效聚合
• MySQL最常见的用法?拆分!

• 拆完以后,数据想换个维度分析怎么办?
• 现在只能依赖中间件……

• MySQL已经准备好了干嘛不用?所有
  SlaveIO/SQL相关函数都用Master_info*传递复
  制信息。
• 为每个函数传递不同的Master_info*即可实现多
  主!
Transfer
Transfer
误操作数据无法有效闪回
• 如果bug不小心损坏了数据怎么办……

• 现在的办法:最近的全备+binlog

• 但是……binlog里有完整的操作数据啊~为何不
  用?

• 将binlog中的Log_event修改为逆操作类型!从
  文件尾部向头部执行,逆转操作!
• MySQL也可以像Oracle一样闪回~
广告时间
• 淘宝MYSQL开源平台:mysql.taobao.org
Q&A
E-Mail: PengLiXun@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

阿里云RDS for MySQL的若干优化
阿里云RDS for MySQL的若干优化阿里云RDS for MySQL的若干优化
阿里云RDS for MySQL的若干优化
Lixun Peng
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
 
[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu
[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu
[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu
Drupal Taiwan
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
redhat9
 
静态项目管理工具 - opm
静态项目管理工具 - opm静态项目管理工具 - opm
静态项目管理工具 - opm
goto100
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
redhat9
 

Was ist angesagt? (20)

Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
 
漫画背后的故事
漫画背后的故事漫画背后的故事
漫画背后的故事
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
Level db
Level dbLevel db
Level db
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换
 
一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110
 
如何针对业务做DB优化
如何针对业务做DB优化如何针对业务做DB优化
如何针对业务做DB优化
 
阿里云RDS for MySQL的若干优化
阿里云RDS for MySQL的若干优化阿里云RDS for MySQL的若干优化
阿里云RDS for MySQL的若干优化
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu
[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu
[DCTPE2011] 8) 多伺服器/高效能的Drupal 主機解決方案--James Liu
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
静态项目管理工具 - opm
静态项目管理工具 - opm静态项目管理工具 - opm
静态项目管理工具 - opm
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 

Andere mochten auch

MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
Lixun Peng
 
内部MySQL培训.1.基础技能
内部MySQL培训.1.基础技能内部MySQL培训.1.基础技能
内部MySQL培训.1.基础技能
Lixun Peng
 
内部MySQL培训.2.高级应用
内部MySQL培训.2.高级应用内部MySQL培训.2.高级应用
内部MySQL培训.2.高级应用
Lixun Peng
 
MySQL源码分析.02.Handler API
MySQL源码分析.02.Handler APIMySQL源码分析.02.Handler API
MySQL源码分析.02.Handler API
Lixun Peng
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程
Lixun Peng
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践
Lixun Peng
 
Performance of fractal tree databases
Performance of fractal tree databasesPerformance of fractal tree databases
Performance of fractal tree databases
Lixun Peng
 
Alibaba patches in MariaDB
Alibaba patches in MariaDBAlibaba patches in MariaDB
Alibaba patches in MariaDB
Lixun Peng
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践
Lixun Peng
 
Baroque Test
Baroque TestBaroque Test
Baroque Test
CYSA
 
Revitalize Your Career And Job Search
Revitalize Your Career And Job SearchRevitalize Your Career And Job Search
Revitalize Your Career And Job Search
KatDiDio
 
Televista S Reflection
Televista S ReflectionTelevista S Reflection
Televista S Reflection
Holly Cameron
 

Andere mochten auch (20)

Time Machine
Time MachineTime Machine
Time Machine
 
DB_Algorithm_and_Data_Structure_About_Sort
DB_Algorithm_and_Data_Structure_About_Sort DB_Algorithm_and_Data_Structure_About_Sort
DB_Algorithm_and_Data_Structure_About_Sort
 
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
 
内部MySQL培训.1.基础技能
内部MySQL培训.1.基础技能内部MySQL培训.1.基础技能
内部MySQL培训.1.基础技能
 
内部MySQL培训.2.高级应用
内部MySQL培训.2.高级应用内部MySQL培训.2.高级应用
内部MySQL培训.2.高级应用
 
MySQL源码分析.02.Handler API
MySQL源码分析.02.Handler APIMySQL源码分析.02.Handler API
MySQL源码分析.02.Handler API
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践
 
Performance of fractal tree databases
Performance of fractal tree databasesPerformance of fractal tree databases
Performance of fractal tree databases
 
Alibaba patches in MariaDB
Alibaba patches in MariaDBAlibaba patches in MariaDB
Alibaba patches in MariaDB
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践
 
Meeting Review NESHEP 5th April
Meeting Review NESHEP 5th AprilMeeting Review NESHEP 5th April
Meeting Review NESHEP 5th April
 
Baroque Test
Baroque TestBaroque Test
Baroque Test
 
Os negros africanos no Brasil Colonial Monize e Hanna
Os negros africanos no Brasil Colonial Monize e HannaOs negros africanos no Brasil Colonial Monize e Hanna
Os negros africanos no Brasil Colonial Monize e Hanna
 
Twitter Cartoons n Doodles
Twitter Cartoons n DoodlesTwitter Cartoons n Doodles
Twitter Cartoons n Doodles
 
Revitalize Your Career And Job Search
Revitalize Your Career And Job SearchRevitalize Your Career And Job Search
Revitalize Your Career And Job Search
 
Herosjourney
HerosjourneyHerosjourney
Herosjourney
 
Total learning: informal learning driving new learning culture at Tesco Bank
Total learning: informal learning driving new learning culture at Tesco BankTotal learning: informal learning driving new learning culture at Tesco Bank
Total learning: informal learning driving new learning culture at Tesco Bank
 
Televista S Reflection
Televista S ReflectionTelevista S Reflection
Televista S Reflection
 
Webinar slides - What makes a successful e-learning project?
Webinar slides -  What makes a successful e-learning project?Webinar slides -  What makes a successful e-learning project?
Webinar slides - What makes a successful e-learning project?
 

Ähnlich wie 对MySQL的一些改进想法和实现

大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
drewz lin
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
Hesey
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
锐 张
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
isnull
 
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
YANGL *
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙
banping
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
Paul Chao
 

Ähnlich wie 对MySQL的一些改进想法和实现 (20)

大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
 
Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
 
111030 gztechparty-小路-云时代的mysql
111030 gztechparty-小路-云时代的mysql111030 gztechparty-小路-云时代的mysql
111030 gztechparty-小路-云时代的mysql
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
Introduction to big data
Introduction to big dataIntroduction to big data
Introduction to big data
 
mercury
mercurymercury
mercury
 
MySQL入門介紹
MySQL入門介紹MySQL入門介紹
MySQL入門介紹
 
基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开基于My sql的分布式数据库实践 公开
基于My sql的分布式数据库实践 公开
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙
 
MySQL运维那些事
MySQL运维那些事MySQL运维那些事
MySQL运维那些事
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
Tair
TairTair
Tair
 
A
AA
A
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 

Mehr von Lixun Peng (7)

Double Sync Replication
Double Sync ReplicationDouble Sync Replication
Double Sync Replication
 
内部MySQL培训.3.基本原理
内部MySQL培训.3.基本原理内部MySQL培训.3.基本原理
内部MySQL培训.3.基本原理
 
对简易几何机械化证明的进一步研究
对简易几何机械化证明的进一步研究对简易几何机械化证明的进一步研究
对简易几何机械化证明的进一步研究
 
A binary graphics recognition algorithm based on fitting function
A binary graphics recognition algorithm based on fitting functionA binary graphics recognition algorithm based on fitting function
A binary graphics recognition algorithm based on fitting function
 
一种基于拟合函数的图形识别算法
一种基于拟合函数的图形识别算法一种基于拟合函数的图形识别算法
一种基于拟合函数的图形识别算法
 
中文分词算法设计
中文分词算法设计中文分词算法设计
中文分词算法设计
 
DB_Algorithm_and_Data_Structure_About_BTree
DB_Algorithm_and_Data_Structure_About_BTreeDB_Algorithm_and_Data_Structure_About_BTree
DB_Algorithm_and_Data_Structure_About_BTree
 

对MySQL的一些改进想法和实现