- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库极限性能实践
研发中心 邵宗文
数据库极限性能实践
为何要测试数据库的极限性能
如何着手进行测试
通过极限性能了解,合理使用和规避
风险。
为何要进行数据库性能测试
▲低层次—— 能知道大概要申请多少机器
▲ 一般 —— 能够合理规划分库和分表
▲高层次——知道数据库性能不足,通过架构
或是别的手段去弥补
结合项目实际,了解自己的应用
• 应用类型
读多写少(如体育项目);读写比例差不多(如邮件);和写多读少
(如投票,统计)
• 预计数据量
半年?一年?后续扩展?决定单表还是多表,扩展的方法
• 预计访问量
多少读?多少写?峰值?几台服务器,主从方式
• 实时数据和非实时数据
哪些必须实时查询?哪些可以预先准备或近似?哪些用于统计汇总?
• 时间的要求
实时性高的项目,如财经、体育;可以允许一定时间延迟的项目,如
博客圈
结合机器配置,了解自己的机器配置
• 机器型号和批次
数据库平台主要采用dell的服务器。批次不同存在性能上的差异(如06、
07、08 的cpu 的cache size)
• 了解机器磁盘性能
是多磁盘做了lvm,还是做了raid ,做了raid 的话,要知道是raidN?
• 了解机器的内存
比如内存的容量和插槽几个,如有需要,建议购买单条容量高的内存
• 了解网络瓶颈
有时项目读写量达到瓶颈后,可能是网络质量造成。跨IDC大量写操作
会很慢
• 了解固态硬盘ssd
比如一些属于写少读多的项目可以考虑使用
如何进行数据库测试——步骤1
选择测试的方案
• 选择市场上常见的服务器
选用了市面比较常规的dell服务器
• 选择数据库版本
目前由于5.1的版本还有很多bug, 因此新浪选择了使用很久的mysql5.0.41.
• mysql 引擎选择
因为互联网业务大部分是写少读多,所以myisam是不二的选择
• 测试工具
推荐mysqlslap
• 操作系统
CentOS5.0 x86_64
如何进行数据库测试——步骤2
具体实施测试计划
• 进行限定系统内存
通过对grub.conf文件添加mem=1G 的参数
• 选择测试表 (见后页)
测试样本用例10个表总数据量为几十G,对十个表进行总操作为100万次
的读写,以及200万次,400万次,800万次的读操作测试
• 选择不同的并发
比如10,50,100并发执行同样的sql语句下的性能
• My.cnf 的配置
关闭query_cache,同时使用很低的参数(见后页)
如何进行数据库测试——步骤3
★ 测试用例表
CREATE TABLE `song1`
`id` int(10) unsigned NOT NULL auto_increment,
`name1` varchar(250) NOT NULL,
`name2` varchar(250) NOT NULL,
`name3` varchar(250) NOT NULL,
`name4` varchar(250) NOT NULL,
`name5` varchar(250) NOT NULL,
`datetime` timestamp NOT NULL default
CURRENT_TIMESTAMP,
`rank` int(11) NOT NULL,
PRIMARY KEY (`id`)
每行row数据在1.2k大小。10个不同的Song0..Song9
如何进行数据库测试——步骤4
★My.cnf
key_buffer = 124M
max_allowed_packet = 2M
table_cache = 1024
join_buffer_size = 2M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
myisam_sort_buffer_size = 180M
query_cache_size = 0
quer
文档评论(0)