《商品库MySQL优化实践.ppt》由会员分享,可在线阅读,更多相关《商品库MySQL优化实践.ppt(29页珍藏版)》请在三一办公上搜索。
1、淘宝 商品库MySQL优化实践QCon 2011 Beijing,核心系统数据库组余锋(褚霸)2011/04/08,Agenda,商品库项目背景介绍以及约束技术要求和方案 性能保证安全性保证 运维保证优化成果 交流时间,商品库(单机,测试)情况,无复杂查询,离散度高 记录数:1亿条键值对记录大小:100字节数据文件:170G访问热点情况:20%的键占用55的访问量键读写比例:10:1,硬件选择,主机:Dell;PowerEdge C2100;处理器:physical=2,cores=12,virtual=24内存:96 GRAID卡:LSI MegaSAS 9260/512MB MemoryP
2、CI-E Flash卡:Fusion-io ioDrive 320GB/MLC硬盘:SEAGATE ST3300657SS300Gx 12,软件选择,发行版:Red Hat Enterprise Linux Server release 5.4 内核:Kernel|2.6.18-164.el5文件系统:Ext3Flashcache:FB内部版本MySQL 版本:5.1.48-log Source,Agenda,商品库项目背景介绍以及约束技术要求和方案 性能保证安全性保证 运维保证优化成果 交流时间,商品库技术要求,高可用,安全第一高性能,性能平稳,性价比高控制运维风险,技术方案,MySQL数据
3、库集群,数据水平切割,主从备份采用高性价比PC服务器,大内存,强劲CPU 采用高性能PCI-E Flash卡作为cache,提高系统的IO性能充分利用系统各部件的cache,大胆采用新技术充分考虑容灾,在各个层面考虑数据的安全性,系统资源规划,内存分配:MySQLInnoDB buffer poolOS pagecache 驱动程序IO能力分配:读能力,零散读,提高IOPS写能力,集中写,提高吞吐量Cache分配:MySQL内部cache匿名页面/文件页面 Flashcache 混合存储Raid卡内部cache,调优指导思想,杜绝拍脑袋,理论(源码)指导+精确测量+效果验证内存为王 数据访问规
4、律导向,随机数据和顺序数据尽量分离尽量提高IO的利用率,减少无谓的IO能力浪费在安全性的前提下,尽可能的利用好系统各个层次cache,调优工具,源码+emacs+大脑必备工具systemtapoprofilelatencytop blktrace/btt/seekwatcheraspersatcprstatsargdb自制工具bash脚本gnuplot脚本,Agenda,商品库项目背景介绍以及约束技术要求和方案 性能保证安全性保证 运维保证优化成果 交流时间,MySQL数据库,考虑因素:主从备份带来的性能影响 复杂数据查询操作是否需要预留内存以及上限数据备份dump对系统的影响,避免系统swa
5、p 开启binlog带来的性能开销限制最大链接数#max_binlog_cache_size=2Gmax_binlog_size=500Mmax_connections=1020max_user_connections=1000query_cache_size=30M,InnoDB引擎,考虑因素:尽可能大的BP(buffer pool)日志和数据分设备存储 离散数据走direct-IO,顺序日志走buffered-IO减少脏页的同步,提高命中率减少锁对多核CPU性能的影响提高底层存储默认的IO能力#innodb_buffer_pool_size=72Ginnodb_flush_method=O
6、_DIRECTinnodb_sync_spin_loops=0innodb_log_group_home_dir=/u02/innodb_io_capacity=2000innodb_thread_concurrency=64,高速页缓存,考虑因素:page资源倾斜给数据库,尽量不浪费,兼顾临时内存申请避免NUMA架构带来的zone内存分配不均而导致的swap现象cache大部分由InnoDB日志产生,适时清除,限制page数量#numactl-interleave=all mysqld#sysctl vm.drop_caches=1vm.swappiness=0vm.dirty_ratio=
7、?vm.dirty_background_ratio=?vm.pagecache=?,文件系统,考虑因素(选择):Ext3/4Xfs考虑因素(配置):减少元数据变化产生的IO对混合存储系统友好关闭barrier#/dev/mapper/cachedev(rw,noatime,nodiratime,barrier=0)/u01/dev/sda12(rw,barrier=0)/u02,IO调度,考虑因素:调度算法对减少磁头移动的效果关闭预读设备队列长度#sda|deadline 128sdb|deadline 128,混合存储(Flashcache),考虑因素结合磁盘的大容量,PCI-E Flas
8、h卡的高随机读写性能优点数据尽可能多停留在PCI-E Flash卡上,提高读写命中率减少同步次数,保留磁盘的IO能力适时同步数据,减少安全风险#dev.flashcache.dirty_thresh_pct=90dev.flashcache.cache_all=0dev.flashcache.fast_remove=1dev.flashcache.reclaim_policy=1,Raid卡,考虑因素:逻辑分卷Cache使用写优先,读少分配(数据无相关性效果不好)数据安全和raid level少预读#Controller|LSI Logic/Symbios Logic LSI MegaSAS
9、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
10、,存储设备驱动,考虑因素:减少IO的抖动,提高IOPS提高寿命关闭或减少预读#PCI-E Flash卡驱动:$cat/etc/modprobe.d/iomemory-vsl.conf options iomemory-vsl use_workqueue=0options iomemory-vsl disable-msi=0options iomemory-vsl use_large_pcie_rx_buffer=1,性能保证小结,解决IO瓶颈:高速PCI-E Flash卡做Cache,读写速度可达800/500M10 x SAS 300G 存放离散度高数据文件2x SAS 300G 存放顺序b
11、inlog和trx日志控制数据库脏页面的刷新频率和强度 优化操作系统的pagecache,资源倾斜,杜绝swap发生 优化文件系统减少meta数据的产生,以及写入延迟优化IO调度器和预读开启raid卡的读写cache优化设备驱动,适应高强度的读写请求,减少jitter解决CPU瓶颈:业务上优化掉复杂查询 优化自旋锁,Agenda,商品库项目背景介绍以及约束技术要求和方案 性能保证安全性保证 运维保证优化成果 交流时间,安全性保证概要,Raid卡带Flash,掉电保护,raid level10防止磁盘损害PCI-E卡自身有日志系统,恢复时间最差10分钟Ext3文件系统带日志保护Flashcach
12、e上的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!联络:,