zoukankan      html  css  js  c++  java
  • MySQL性能测试分析

    MySQL性能测试分析

    分类: 数据库开发与应用 1824人阅读 评论(4) 收藏 举报

    测试环境

    操作系统: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引擎性能有相对优势。

  • 相关阅读:
    当再多大公司慢慢的放弃微软的技术时, 不知大家怎想?
    【叶子函数分享五十四】汉字转拼音函数 [转]
    java_easyui体系之DataGrid(4)[转]
    java_easyui体系之DataGrid(3)[转]
    java_easyui体系之DataGrid(2)[转]
    java_easyui体系之DataGrid(1)[转]
    java_easyui体系之目录 [转]
    Java 并发和多线程(三) 多线程的代价 [转]
    Java 并发和多线程(二) 多线程的优点 [转]
    Java 并发和多线程(一) Java并发性和多线程介绍[转]
  • 原文地址:https://www.cnblogs.com/xiayong123/p/3717056.html
Copyright © 2011-2022 走看看