zoukankan      html  css  js  c++  java
  • 【原创】MySql的Query和Insert性能测试

    通过对典型的query和insert操作的测试,暂时能得出如下结论(可能会受mysql版本,机器配置的影响):
    关于query
    1.     100w是个无索引查询性能的分水岭。
    2.     数据量在30w – 200w的区间,在索引高效的情况下,数据库数据量的变化,基本对查询不会产生明显的影响(这也跟查询原理相符)
    3.     高效的索引,对查询速度的提高可能是数倍,甚至数十倍的!(这个也在很多案例中得到了证实)
    关于insert
    4.     无索引插入在200w附近会出现一个插入速度的分水岭,200w之后的插入耗时基本上会增加2-3倍!
    5.     有索引插入,数据量从50w – 300w,插入速度基本上比较平稳,没有明显的跃变。
    6.     有索引插入与无索引插入相比,数据量在200w以内的时候,基本上有索引插入耗时 = 无索引插入耗时*1.5,在200w以后,有索引插入速度还比无索引插入的快(这点我也想不明白)
     
    详细测试报告如下:
    测试环境:
    内存(M)           
    total       used       free     shared    buffers     cached
    Mem:          2020       1970         49          0         31       1309
    Mysql版本:
    server version: 4.1.15
     
    数据库处于空闲状态
     
    数据库:db_test_0525
    表:t_test1
    表结构:
    user_num  | varchar(100) |      |     |   
    name      | varchar(200) | YES  |     | NULL 
    remark    | text         | YES  |     | NULL 
    stat_date
     
    Stat_date:随机生成的时间值
    User_name 平均长度为11位的varchar
    Name 长度为134varchar
    Remark :长度为8varchar
     
    测试sql语句:
    1.    select * from t_test1 where user_num='139561885564' and stat_date >= date_format('2007-05-06','%Y-%m-%d');
    2.    select * from t_test1 where user_num='139561885564'
     
    索引:alter table t_test1 add index idx_num_date(user_num,stat_date)
    alter table t_test1 drop index idx_num_date
     
    一.测试查询性能:
    试验结果:(详细数据见附件)
    试验数据:
    数据量
    30
    50
    100
    150
    200
    查询耗时
      0.53
    0.87
    1.75
    7.31
    9.79
    趋势图:
     
    通过曲线不难分析,100w左右是个查询性能的分水岭。
     
     
    一.测试插入性能:
    数据基数:50w
    插入数据量:250w
    插入方式:每次插入1000条记录,每插入1w条记录一次日志
    采样规则:每插入1w记录一次当前数据量和插入这1w记录耗时(耗时单位:毫秒)
    由于采样数据较多,详细数据见附件
    1.无索引插入:
    共采样了三组数据。第一组可能由于当时数据库繁忙,在插入到180w附近造成一定瑕疵
    测试数据一:
    测试数据二:
    测试数据三:
     
    2.有索引插入:
    新建索引:alter table t_test1 add index idx_num_date(user_num,stat_date)
    测试数据一:
    测试数据二:
     
    通过上图对比,不难总结2点:
    1.       无索引插入在200w附近会出现一个插入速度的分水岭,200w之后的插入耗时基本上会增加2-3倍!
    2.       有索引插入,数据量从50w – 300w,插入速度基本上比较平稳,没有明显的跃变。
    3.       有索引插入与无索引插入相比,数据量在200w以内的时候,基本上 有索引插入耗时 = 无索引插入耗时*1.5,在200w以后,有索引插入速度还比无索引插入的快(这点我也想不明白)
  • 相关阅读:
    与开发团队高效协作的8个小技巧
    9本java程序员必读的书(附下载地址)
    NPOI导出饼图到Excel
    EF6不支持sqlite Code First解决方案
    C#程序访问底层网络
    如何自己开发软件测试工具?
    .Net mvc 根据前台参数动态绑定对象
    在SSM框架里新增一个功能
    2018-10-12 例会总结
    2018-10-11 java从入门到放弃--方法
  • 原文地址:https://www.cnblogs.com/jacktu/p/1083211.html
Copyright © 2011-2022 走看看