我是靠谱客的博主 沉默香烟,最近开发中收集的这篇文章主要介绍MySQL性能测试分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

测试环境

操作系统:Linux AS release 4,内核2.6.9-42.ELsmp #1 SMP

CPU:Intel(R) Xeon(TM) CPU 3.00GHz,4核

内存:1G,主要运行MySQL服务

硬盘:cciss 37G

文件系统:ext3,支持大文件

MySQL:MySQL-5.0.51a

网卡:100M

网络环境:100M交换局域网

测试方法

数据规模分为1万条、10万条、100万条和1000万条记录级别。

在每种数据规模下分别执行2000次随机查询,这样可以防止数据库直接从缓存中返回查询结果,更加接近真实的查询情况。以系统时间为随机种子,在现有的记录范围内随机执行查询操作。

查询类型分为:单表select、双表select、insert、单表delete和双表delete。

因为MyISAM和InnoDB是MySQL使用最多的两种引擎,也是我们公司目前使用最频繁的引擎,因此分别做对比测试有一定的参考价值。

每个执行条目都为单次查询的平均执行时间,单位为微妙。如果要看整体执行时间,则乘以2000即可。

由于脚本插入数据很慢,采用mysql客户端工具测试效率很低且不能保证足够的随机性,所以插入数据和测试性能都是自己编写相应的程序来完成。

开启二进制更新日志。

测试记录

测试数据

MyISAM引擎跨主机查询操作平均执行时间(单位:微秒)

项目记录数

单表select

双表select

insert

update

单表delete

双表delete

1万条

358

484

1188

269

298

464

10万条

375

505

1227

283

322

521

100万条

3174

5293

1242

4142

7981

17212

1000万条

12302

19920

1261

12355

20449

39890

MyISAM引擎本地查询操作平均执行时间(单位:微秒)

项目记录数

单表select

双表select

insert

update

单表delete

双表delete

1万条

178

247

694

141

170

345

10万条

195

271

705

157

186

585

100万条

3055

5164

746

4308

12373

22533

1000万条

8665

15259

803

11033

17224

35485

发现对innodb的配置参数进行优化后,更新和插入速度可以提高10倍多。

InnoDB引擎跨主机单次查询操作平均执行时间(单位:微秒)

项目记录数

单表select

双表select

insert

update

单表delete

双表delete

1万条

387

521

1215

327

293

519

10万条

399

567

1231

338

322

663

100万条

2255

4950

1320

1988

3832

9550

1000万条

10556

18702

1362

10823

19078

36666

InnoDB引擎本地单次查询操作平均执行时间(单位:微秒)

项目记录数

单表select

双表select

insert

update

单表delete

双表delete

1万条

180

264

709

165

156

312

10万条

226

340

754

204

205

590

100万条

1853

4530

746

1782

2771

9816

1000万条

9275

17609

889

6941

14727

36282

性能比较

单表select

clip_image002

双表select

clip_image004

Insert操作

clip_image006

update操作

clip_image008

单表delete

clip_image010

双表delete

clip_image012

性能分析

1、可以看出在MySQL 5.0里面,MyISAM和InnoDB存储引擎性能差别并不是很大,与官方的说法基本接近。

2、1万和10万的select、delete或update操作都很快,1毫秒以下。

3、Insert操作性能降低较慢,受数据规模影响相对较小。

4、性能从10万条规模升到100万条时降低非常明显,从100万到1000万性能降低更明显。

5、InnoDB引擎在缺省参数配置下性能较差。

6、推荐InnoDB的配置(1G内存情况,主要运行mysql服务器):

innodb_buffer_pool_size = 600M
innodb_additional_mem_pool_size = 64M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 256M
#innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1

#innodb_lock_wait_timeout = 50
innodb_file_per_table

其中innodb_flush_log_at_trx_commit和innodb_file_per_table对I/O性能影响最大。

7、my-large.cnf等文件只是优化myisam引擎的参数,这一点在优化配置时特别要注意。

8、在数据规模较大(100万条以上),InnoDB引擎性能有相对优势。

9、在数据规模较小(10万条以下),MyISAM引擎性能有相对优势。

最后

以上就是沉默香烟为你收集整理的MySQL性能测试分析的全部内容,希望文章能够帮你解决MySQL性能测试分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部