SlideShare a Scribd company logo
淘宝  商品库 MySQL 优化实践 QCon 2011 Beijing    核心系统数据库组   余锋(褚霸) http://yufeng.info 2011/04/08
Agenda 商品库项目背景介绍以及约束 技术要求和方案  性能保证 安全性保证  运维保证 优化成果  交流时间  
商品库 ( 单机,测试 ) 情况 无复杂查询,离散度高  记录数: 1 亿条键值对 记录大小: 100 字节  数据文件: 170G 访问热点情况: 20% 的键占用 55 %的访问量 键读写比例:  10 : 1  
硬件选择 主机:  Dell; PowerEdge C2100; 处理器:  physical = 2, cores = 12, virtual = 24  内存:  96 G  RAID 卡: LSI MegaSAS 9260/512MB Memory PCI-E Flash 卡 : Fusion-io ioDrive 320GB/MLC  硬盘 : SEAGATE ST3300657SS  300G x 12 
软件选择 发行版:  Red Hat Enterprise Linux Server release 5.4  内核:  Kernel | 2.6.18-164.el5  文件系统: Ext3  Flashcache: FB 内部版本  MySQL  版本:   5.1.48-log Source 
Agenda 商品库项目背景介绍以及约束 技术要求和方案  性能保证 安全性保证  运维保证 优化成果  交流时间
商品库技术要求 高可用,安全第一  高性能,性能平稳,性价比高  控制运维风险        
技术方案 MySQL 数据库集群,数据水平切割,主从备份  采用高性价比 PC 服务器,大内存,强劲 CPU ,可靠性高  采用高性能 PCI-E Flash 卡作为 cache,   提高系统的 IO 性能  充分利用系统各部件的 cache,  大胆采用新技术  充分考虑容灾,在各个层面考虑数据的安全性  
系统资源规划 内存分配: MySQL InnoDB buffer pool OS pagecache  驱动程序   IO 能力分配: 读能力,零散读,提高 IOPS 写能力,集中写,提高吞吐量   Cache 分配:  MySQL 内部 cache 匿名页面 / 文件页面  Flashcache  混合存储 Raid 卡内部 cache
调优指导思想 杜绝拍脑袋,理论(源码)指导 + 精确测量 + 效果验证 内存为王  数据访问规律导向,随机数据和顺序数据尽量分离 尽量提高 IO 的利用率,减少无谓的 IO 能力浪费 在安全性的前提下,尽可能的利用好系统各个层次 cache      
调优工具 源码 +emacs+ 大脑 必备工具 systemtap oprofile latencytop  blktrace/btt/seekwatcher aspersa tcprstat sar gdb  自制工具 bash 脚本 gnuplot 脚本       
Agenda 商品库项目背景介绍以及约束 技术要求和方案  性能保证 安全性保证  运维保证 优化成果  交流时间
MySQL 数据库   考虑因素: 主从备份带来的性能影响  复杂数据查询操作是否需要预留内存以及上限 数据备份 dump 对系统的影响,避免系统 swap  开启 binlog 带来的性能开销  限制最大链接数    #############################  max_binlog_cache_size=2G max_binlog_size = 500M max_connections = 1020 max_user_connections=1000 query_cache_size = 30M
InnoDB 引擎 考虑因素: 尽可能大的 BP(buffer pool) 日志和数据分设备存储  离散数据走 direct-IO ,顺序日志走 buffered-IO 减少脏页的同步,提高命中率 减少锁对多核 CPU 性能的影响  提高底层存储默认的 IO 能力   #############################   innodb_buffer_pool_size = 72G innodb_flush_method = O_DIRECT innodb_sync_spin_loops=0 innodb_log_group_home_dir = /u02/ innodb_io_capacity=2000 innodb_thread_concurrency = 64
高速页缓存 考虑因素: page 资源倾斜给数据库 ,  尽量不浪费,兼顾临时内存申请 避免 NUMA 架构带来的 zone 内存分配不均而导致的 swap 现象 cache 大部分由 InnoDB 日志产生,适时清除,限制 page 数量   #############################  # numactl --interleave=all mysqld # sysctl vm.drop_caches = 1   vm.swappiness = 0 vm.dirty_ratio =  ? vm.dirty_background_ratio = ? vm.pagecache = ?
文件系统 考虑因素 ( 选择 ) : Ext3/4 Xfs   考虑因素 ( 配置 ) : 减少元数据变化产生的 IO 对混合存储系统友好 关闭 barrier   #############################   /dev/mapper/cachedev  (rw,noatime,nodiratime,barrier=0) /u01  /dev/sda12                     (rw,barrier=0)                               /u02
IO 调度 考虑因素: 调度算法对减少磁头移动的效果 关闭预读 设备队列长度    ############################# sda | [deadline]  128 sdb | [deadline]  128
混合存储( Flashcache ) 考虑因素 结合磁盘的大容量, PCI-E Flash 卡的高随机读写性能优点 数据尽可能多停留在 PCI-E Flash 卡上 , 提高读写命中率 减少同步次数,保留磁盘的 IO 能力 适时同步数据,减少安全风险    ############################# dev.flashcache.dirty_thresh_pct = 90 dev.flashcache.cache_all = 0 dev.flashcache.fast_remove = 1 dev.flashcache.reclaim_policy = 1
Raid 卡 考虑因素: 逻辑分卷 Cache 使用写优先,读少分配(数据无相关性效果不好) 数据安全和 raid level 少预读    #############################    Controller |  LSI Logic / Symbios Logic LSI MegaSAS 9260 (rev 03)          Model | LSI MegaRAID SAS 9260-8i, PCIE interface, 8 ports        Cache | 512MB Memory, BBU Present          BBU | 95% Charged, Temperature 28C, isSOHGood=      VirtualDev Size      RAID Level Disks SpnDpth Stripe Status  Cache   0(no name) 278.875 GB 1 (1-0-0)      2     1-1     64 Optimal WB, RA   1(no name) 1.361 TB  1 (1-0-0)      2     5-5     64 Optimal WB, RA
存储设备驱动 考虑因素: 减少 IO 的抖动,提高 IOPS 提高寿命 关闭或减少预读   #############################  PCI-E Flash 卡驱动:  $cat /etc/modprobe.d/iomemory-vsl.conf    options iomemory-vsl use_workqueue=0 options iomemory-vsl disable-msi=0 options iomemory-vsl use_large_pcie_rx_buffer=1
性能保证小结 解决 IO 瓶颈 : 高速 PCI-E Flash 卡做 Cache ,读写速度可达 800/500M 10 x SAS 300G  存放离散度高数据文件 2 x SAS 300G  存放顺序 binlog 和 trx 日志 控制数据库脏页面的刷新频率和强度  优化操作系统的 pagecache ,资源倾斜 ,  杜绝 swap 发生  优化文件系统减少 meta 数据的产生,以及写入延迟 优化 IO 调度器和预读 开启 raid 卡的读写 cache 优化设备驱动,适应高强度的读写请求,减少 jitter   解决 CPU 瓶颈 : 业务上优化掉复杂查询  优化自旋锁           
Agenda 商品库项目背景介绍以及约束 技术要求和方案  性能保证 安全性保证  运维保证 优化成果  交流时间
安全性保证概要 Raid 卡带 Flash ,掉电保护, raid level10 防止磁盘损害 PCI-E 卡自身有日志系统,恢复时间最差 10 分钟 Ext3 文件系统带日志保护 Flashcache 上的 cache 数据最多 24 小时都会同步到 SAS 盘 数据库 Innodb 引擎本身有 redo 日志,数据安全校验,高级别日志同步 MySQL 主从备份 商品库应用方有事务日志
Agenda 商品库项目背景介绍以及约束 技术要求和方案  性能保证 安全性保证  运维保证 优化成果  交流时间
运维保证概要 数据预热: 支持热点数据每秒 150M 从磁盘直接加载到混合存储 数据库重新启动,无需重新预热   数据库 DDL  操作: 控制数据表的大小,让 DDL 时间可接受 减少 DDL 对性能的冲击   混合存储 cache : 通过设置白名单,减少诸如备份操作对 cache 的干扰 混合存储 cache 可管理                             
Agenda 商品库项目背景介绍以及约束 技术要求和方案  性能保证 安全性保证  运维保证 优化成果   交流时间
优化成果 充足的容量规划,可对抗突增业务,满足未来几年业务增长  系统总体运行平稳,系统负载 CPU util <50% ,磁盘  util <10% , PCI-E Flash 卡  util < 20%  QPS/36000 ,其中读 /32800 ,写 /3200  请求平均延时时间: 260 微秒 ( 包括网络时间 ) 掉电和操作系统失效的情况下,数据无丢失 第一次预热时间半个小时以内,之后只需几分钟
Agenda 商品库项目背景介绍以及约束 技术要求和方案  性能保证 安全性保证  运维保证 优化成果  交流时间
谢谢 !   Talents wanted!   联络: [email_address]

More Related Content

PPTX
Flash存储设备在淘宝的应用实践
PPT
SSD在淘宝的应用实践
PPTX
利用新硬件提升数据库性能
PPTX
MySQL和IO(下)
PPTX
了解内存
PPTX
了解集群
PPTX
“云存储系统”赏析系列分享三:Sql与nosql
PDF
淘宝软件基础设施构建实践
Flash存储设备在淘宝的应用实践
SSD在淘宝的应用实践
利用新硬件提升数据库性能
MySQL和IO(下)
了解内存
了解集群
“云存储系统”赏析系列分享三:Sql与nosql
淘宝软件基础设施构建实践

What's hot (20)

PPTX
Linux内存管理
PPT
C1000K高性能服务器构建技术
PPT
低成本和高性能MySQL云架构探索
PPTX
了解应用服务器
PPTX
Erlang分布式系统的的领域语言
PDF
网站存储经验谈pdf
PPTX
Memcached vs redis
PPT
OTN软硬件结合数据库解决方案
PPTX
Exadata那点事
PPTX
我为什么要选择RabbitMQ
PPT
高级服务器设计和实现3
PDF
Jkcn MySQLDB 架构
PPT
高级服务器设计和实现2
ODP
PVE 4.1 HC 架構
PDF
大型系统的缓存标准化之路—从主从多级重client到一体化
PDF
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
PPTX
高性能队列Fqueue的设计和使用实践
DOCX
Private Cloud vs Public Cloud Analysis
PDF
豆瓣网技术架构变迁
PDF
新浪微博Feed服务架构
Linux内存管理
C1000K高性能服务器构建技术
低成本和高性能MySQL云架构探索
了解应用服务器
Erlang分布式系统的的领域语言
网站存储经验谈pdf
Memcached vs redis
OTN软硬件结合数据库解决方案
Exadata那点事
我为什么要选择RabbitMQ
高级服务器设计和实现3
Jkcn MySQLDB 架构
高级服务器设计和实现2
PVE 4.1 HC 架構
大型系统的缓存标准化之路—从主从多级重client到一体化
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
高性能队列Fqueue的设计和使用实践
Private Cloud vs Public Cloud Analysis
豆瓣网技术架构变迁
新浪微博Feed服务架构
Ad

Viewers also liked (10)

PDF
安心飲食 Design Argument
PPTX
1050425經濟委員會質詢_食農教育新未來
PPT
安全飲用水
PPT
Python和web开发
PPTX
海量统计数据的分布式MySQL集群——MyFOX
PDF
Gops2016 云端基于Docker的微服务与持续交付实践
PPTX
行政院會簡報資料: 報2 交通部 國道五號交通事故檢討及改善措施
PPT
行政院會簡報資料 報2 勞動部 國道五號交通事故檢討及改善措施
PPTX
4個安全喝水好習慣
PPTX
定期清洗水池水塔 確保飲用水安全
安心飲食 Design Argument
1050425經濟委員會質詢_食農教育新未來
安全飲用水
Python和web开发
海量统计数据的分布式MySQL集群——MyFOX
Gops2016 云端基于Docker的微服务与持续交付实践
行政院會簡報資料: 報2 交通部 國道五號交通事故檢討及改善措施
行政院會簡報資料 報2 勞動部 國道五號交通事故檢討及改善措施
4個安全喝水好習慣
定期清洗水池水塔 確保飲用水安全
Ad

Similar to 淘宝商品库MySQL优化实践 (20)

PDF
Taobao casestudy-yufeng-qcon
PPSX
MySQL应用优化实践
PPSX
浅谈 My sql 性能调优
PDF
浅谈 MySQL 性能调优
PPTX
Mysql调优
PPT
百度分布式数据库平台
PPT
百度分布式数据库 刘斌 Sacc2010
PPT
海量日志分析系统实践,Dba
PDF
MySQL技术分享:一步到位实现mysql优化
PPT
Sina my sq概述及优化
PDF
MySQL设计、优化、运维
PDF
Python小团队不妨知道的技术
PPT
数据库与ssd的实践与探索-2011数据库技术大会
PDF
构建高性能MySQL系统
PPT
MySQL调优
PDF
阿里巴巴 叶正盛 数据库性能量化
PDF
阿里巴巴 叶正盛 数据库性能量化
PPSX
MySQL性能调优最佳实践
PPT
数据库极限性能测试
PPSX
æ%A6%a9 my sql %f0%c8 -%c1%b8%cb+
Taobao casestudy-yufeng-qcon
MySQL应用优化实践
浅谈 My sql 性能调优
浅谈 MySQL 性能调优
Mysql调优
百度分布式数据库平台
百度分布式数据库 刘斌 Sacc2010
海量日志分析系统实践,Dba
MySQL技术分享:一步到位实现mysql优化
Sina my sq概述及优化
MySQL设计、优化、运维
Python小团队不妨知道的技术
数据库与ssd的实践与探索-2011数据库技术大会
构建高性能MySQL系统
MySQL调优
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
MySQL性能调优最佳实践
数据库极限性能测试
æ%A6%a9 my sql %f0%c8 -%c1%b8%cb+

More from Feng Yu (19)

PPTX
Cpu高效编程技术
PPTX
Erlang开发实践
DOCX
mnesia脑裂问题综述
PPTX
了解网络
PPT
MySQL和IO(上)
PPTX
了解Cpu
PPTX
了解IO协议栈
PPTX
了解IO设备
PPTX
Rethink db&tokudb调研测试报告
PPTX
高性能集群服务器(Erlang解决方案)
PPT
开源混合存储方案(Flashcache)
PPT
Erlang low cost_clound_computing
PPT
Systemtap
PDF
Oprofile linux
PDF
PPT
Erlang全接触
PPT
Tsung 压力测试工具
PDF
Inside Erlang Vm II
DOC
Go Lang
Cpu高效编程技术
Erlang开发实践
mnesia脑裂问题综述
了解网络
MySQL和IO(上)
了解Cpu
了解IO协议栈
了解IO设备
Rethink db&tokudb调研测试报告
高性能集群服务器(Erlang解决方案)
开源混合存储方案(Flashcache)
Erlang low cost_clound_computing
Systemtap
Oprofile linux
Erlang全接触
Tsung 压力测试工具
Inside Erlang Vm II
Go Lang

淘宝商品库MySQL优化实践

  • 1. 淘宝 商品库 MySQL 优化实践 QCon 2011 Beijing   核心系统数据库组   余锋(褚霸) http://yufeng.info 2011/04/08
  • 2. Agenda 商品库项目背景介绍以及约束 技术要求和方案 性能保证 安全性保证 运维保证 优化成果 交流时间  
  • 3. 商品库 ( 单机,测试 ) 情况 无复杂查询,离散度高 记录数: 1 亿条键值对 记录大小: 100 字节  数据文件: 170G 访问热点情况: 20% 的键占用 55 %的访问量 键读写比例: 10 : 1  
  • 4. 硬件选择 主机:  Dell; PowerEdge C2100; 处理器:  physical = 2, cores = 12, virtual = 24  内存: 96 G  RAID 卡: LSI MegaSAS 9260/512MB Memory PCI-E Flash 卡 : Fusion-io ioDrive 320GB/MLC  硬盘 : SEAGATE ST3300657SS  300G x 12 
  • 5. 软件选择 发行版:  Red Hat Enterprise Linux Server release 5.4 内核:  Kernel | 2.6.18-164.el5  文件系统: Ext3  Flashcache: FB 内部版本  MySQL 版本:  5.1.48-log Source 
  • 6. Agenda 商品库项目背景介绍以及约束 技术要求和方案 性能保证 安全性保证 运维保证 优化成果 交流时间
  • 8. 技术方案 MySQL 数据库集群,数据水平切割,主从备份  采用高性价比 PC 服务器,大内存,强劲 CPU ,可靠性高 采用高性能 PCI-E Flash 卡作为 cache,  提高系统的 IO 性能  充分利用系统各部件的 cache, 大胆采用新技术  充分考虑容灾,在各个层面考虑数据的安全性  
  • 9. 系统资源规划 内存分配: MySQL InnoDB buffer pool OS pagecache 驱动程序   IO 能力分配: 读能力,零散读,提高 IOPS 写能力,集中写,提高吞吐量   Cache 分配: MySQL 内部 cache 匿名页面 / 文件页面 Flashcache 混合存储 Raid 卡内部 cache
  • 10. 调优指导思想 杜绝拍脑袋,理论(源码)指导 + 精确测量 + 效果验证 内存为王 数据访问规律导向,随机数据和顺序数据尽量分离 尽量提高 IO 的利用率,减少无谓的 IO 能力浪费 在安全性的前提下,尽可能的利用好系统各个层次 cache      
  • 11. 调优工具 源码 +emacs+ 大脑 必备工具 systemtap oprofile latencytop blktrace/btt/seekwatcher aspersa tcprstat sar gdb  自制工具 bash 脚本 gnuplot 脚本      
  • 12. Agenda 商品库项目背景介绍以及约束 技术要求和方案 性能保证 安全性保证 运维保证 优化成果 交流时间
  • 13. MySQL 数据库   考虑因素: 主从备份带来的性能影响 复杂数据查询操作是否需要预留内存以及上限 数据备份 dump 对系统的影响,避免系统 swap 开启 binlog 带来的性能开销  限制最大链接数   ############################# max_binlog_cache_size=2G max_binlog_size = 500M max_connections = 1020 max_user_connections=1000 query_cache_size = 30M
  • 14. InnoDB 引擎 考虑因素: 尽可能大的 BP(buffer pool) 日志和数据分设备存储 离散数据走 direct-IO ,顺序日志走 buffered-IO 减少脏页的同步,提高命中率 减少锁对多核 CPU 性能的影响  提高底层存储默认的 IO 能力   #############################  innodb_buffer_pool_size = 72G innodb_flush_method = O_DIRECT innodb_sync_spin_loops=0 innodb_log_group_home_dir = /u02/ innodb_io_capacity=2000 innodb_thread_concurrency = 64
  • 15. 高速页缓存 考虑因素: page 资源倾斜给数据库 , 尽量不浪费,兼顾临时内存申请 避免 NUMA 架构带来的 zone 内存分配不均而导致的 swap 现象 cache 大部分由 InnoDB 日志产生,适时清除,限制 page 数量   ############################# # numactl --interleave=all mysqld # sysctl vm.drop_caches = 1   vm.swappiness = 0 vm.dirty_ratio = ? vm.dirty_background_ratio = ? vm.pagecache = ?
  • 16. 文件系统 考虑因素 ( 选择 ) : Ext3/4 Xfs   考虑因素 ( 配置 ) : 减少元数据变化产生的 IO 对混合存储系统友好 关闭 barrier   #############################  /dev/mapper/cachedev  (rw,noatime,nodiratime,barrier=0) /u01  /dev/sda12                     (rw,barrier=0)                               /u02
  • 17. IO 调度 考虑因素: 调度算法对减少磁头移动的效果 关闭预读 设备队列长度   ############################# sda | [deadline]  128 sdb | [deadline]  128
  • 18. 混合存储( Flashcache ) 考虑因素 结合磁盘的大容量, PCI-E Flash 卡的高随机读写性能优点 数据尽可能多停留在 PCI-E Flash 卡上 , 提高读写命中率 减少同步次数,保留磁盘的 IO 能力 适时同步数据,减少安全风险   ############################# dev.flashcache.dirty_thresh_pct = 90 dev.flashcache.cache_all = 0 dev.flashcache.fast_remove = 1 dev.flashcache.reclaim_policy = 1
  • 19. Raid 卡 考虑因素: 逻辑分卷 Cache 使用写优先,读少分配(数据无相关性效果不好) 数据安全和 raid level 少预读   #############################   Controller |  LSI Logic / Symbios Logic LSI MegaSAS 9260 (rev 03)          Model | LSI MegaRAID SAS 9260-8i, PCIE interface, 8 ports        Cache | 512MB Memory, BBU Present          BBU | 95% Charged, Temperature 28C, isSOHGood=     VirtualDev Size      RAID Level Disks SpnDpth Stripe Status  Cache   0(no name) 278.875 GB 1 (1-0-0)      2     1-1     64 Optimal WB, RA   1(no name) 1.361 TB  1 (1-0-0)      2     5-5     64 Optimal WB, RA
  • 20. 存储设备驱动 考虑因素: 减少 IO 的抖动,提高 IOPS 提高寿命 关闭或减少预读   ############################# PCI-E Flash 卡驱动: $cat /etc/modprobe.d/iomemory-vsl.conf   options iomemory-vsl use_workqueue=0 options iomemory-vsl disable-msi=0 options iomemory-vsl use_large_pcie_rx_buffer=1
  • 21. 性能保证小结 解决 IO 瓶颈 : 高速 PCI-E Flash 卡做 Cache ,读写速度可达 800/500M 10 x SAS 300G 存放离散度高数据文件 2 x SAS 300G 存放顺序 binlog 和 trx 日志 控制数据库脏页面的刷新频率和强度 优化操作系统的 pagecache ,资源倾斜 , 杜绝 swap 发生 优化文件系统减少 meta 数据的产生,以及写入延迟 优化 IO 调度器和预读 开启 raid 卡的读写 cache 优化设备驱动,适应高强度的读写请求,减少 jitter   解决 CPU 瓶颈 : 业务上优化掉复杂查询 优化自旋锁          
  • 22. Agenda 商品库项目背景介绍以及约束 技术要求和方案 性能保证 安全性保证 运维保证 优化成果 交流时间
  • 23. 安全性保证概要 Raid 卡带 Flash ,掉电保护, raid level10 防止磁盘损害 PCI-E 卡自身有日志系统,恢复时间最差 10 分钟 Ext3 文件系统带日志保护 Flashcache 上的 cache 数据最多 24 小时都会同步到 SAS 盘 数据库 Innodb 引擎本身有 redo 日志,数据安全校验,高级别日志同步 MySQL 主从备份 商品库应用方有事务日志
  • 24. Agenda 商品库项目背景介绍以及约束 技术要求和方案 性能保证 安全性保证 运维保证 优化成果 交流时间
  • 25. 运维保证概要 数据预热: 支持热点数据每秒 150M 从磁盘直接加载到混合存储 数据库重新启动,无需重新预热   数据库 DDL 操作: 控制数据表的大小,让 DDL 时间可接受 减少 DDL 对性能的冲击   混合存储 cache : 通过设置白名单,减少诸如备份操作对 cache 的干扰 混合存储 cache 可管理                             
  • 26. Agenda 商品库项目背景介绍以及约束 技术要求和方案 性能保证 安全性保证 运维保证 优化成果 交流时间
  • 27. 优化成果 充足的容量规划,可对抗突增业务,满足未来几年业务增长 系统总体运行平稳,系统负载 CPU util <50% ,磁盘 util <10% , PCI-E Flash 卡 util < 20%  QPS/36000 ,其中读 /32800 ,写 /3200  请求平均延时时间: 260 微秒 ( 包括网络时间 ) 掉电和操作系统失效的情况下,数据无丢失 第一次预热时间半个小时以内,之后只需几分钟
  • 28. Agenda 商品库项目背景介绍以及约束 技术要求和方案 性能保证 安全性保证 运维保证 优化成果 交流时间
  • 29. 谢谢 !   Talents wanted!   联络: [email_address]