zoukankan      html  css  js  c++  java
  • MYSQL5.5和MYSQL5.1性能对比


    MYSQL5.5MYSQL5.1性能对比

    简介:

    看了MYSQL5.5的一些新特性不免有些心动,最近刚好有时间还有空闲的服务器来做一下性能测试,下面就分别将mysql-5.1.50mysql-5.5.15Percona-Server-5.5.15三个版本做了一个性能测试,性能测试工具为sysbenchmysqlslap两个工具。

    环境:

    CPU:   Xeon W5647  2.93GHzX2

    内存2X16G

    硬盘4X600G  RAID 10

    MYSQL版本mysql-5.1.50.tar.gz/mysql-5.5.15.tar.gz/ Percona-Server-5.5.15-rel21.0.tar.gz

    Sysbench版本sysbench-0.4.12

    性能测试结果:

    一、   Sysbench性能测试

    1.         Sysbench测试说明

    测试数据为1000万,采用sysbench自动生成的表结构,采用混合sql测试方法,测试的语句数量为50万,分别对50100200的并发做了测试

    2.         生成数据的语句:

    sysbench --mysql-user=root --mysql-password=zhang@123 --test=oltp --mysql-host=192.168.100.61 --oltp-test-mode=complex \

    --mysql-table-engine=innodb --oltp-table-size=10000000 --mysql-db=test --oltp-table-name=test prepare

    3.         测试语句:

    sysbench --mysql-user=root --mysql-password=zhang@123 --test=oltp --mysql-host=192.168.100.61 --oltp-test-mode=complex \

    --mysql-table-engine=innodb  --oltp-table-size=10000000 --mysql-db=test  --oltp-table-name=test \

    --num-threads=50 --max-requests=500000 run

    三个性能测试语句除了--num-threads数量不一样,其他都是一样的,这里就不贴出来了。

     

     

    4.         测试结果图:

    Mysql版本

    并发数

    消耗时间

    每秒事务数

    每秒读取和写入数

    mysql-5.1.50

    50

    173.8682s

    2046.28/s

    38879.23/s

    100

    252.4939s

    1960.91/s

    37257.28/s

    200

    291.2413s

    1814.27/s

    34471.22/s

    mysql-5.5.15

    50

    244.3542s

    2876.10/s

    54645.85/s

    100

    254.9980s

    1980.42/s

    37628.05/s

    200

    275.6170s

    1716.90/s

    32621.09/s

    Percona-5.5.15

    50

    157.2437s

    3180.29/s

    60425.58/s

    100

    248.1540s

    2015.04/s

    38285.74/s

    200

    267.8760s

    1866.75/s

    35468.29/s

     

     

    5.         测试结论:

    sysbench的性能测试结果看,Percona-5.5.15性能最好,但是Percona-5.5.15随着并发数的增大性能下降得也比较厉害。mysql-5.5随着并发数的增大性能下滑也比较厉害。而mysql-5.1.50性能随着并发数的增大,性能比较稳定。

     

    二、   Mysqlslap性能测试

    1.         Mysqlslap测试简介:

    采用mysqlslap自动生成表结构的方式,表结构为10列字符列,10列数字列,总语句书为50万,其中10万为写入操作,并发分别为501002000,测试分两种方式,一个是采用字符类型做主键,一个是采用数字类型+auto_increment做主键

    2.         测试语句:

    mysqlslap --no-defaults  -h192.168.100.61 -uroot -pzhang@123 --engine=innodb --auto-generate-sql-write-number=100000 --auto-generate-sql-guid-primary --concurrency=50,100,200 --number-of-queries=500000 --iterations=2 --number-char-cols=10 --number-int-cols=10 --auto-generate-sql --create-schema=test --auto-generate-sql-load-type=mixed

     

    mysqlslap --no-defaults -h192.168.100.61 -uroot -pzhang@123 --engine=innodb --auto-generate-sql-write-number=100000 --auto-generate-sql-add-autoincrement --concurrency=50,100,200 --number-of-queries=500000 --iterations=2 --number-char-cols=10 --number-int-cols=10 --auto-generate-sql --create-schema=test --auto-generate-sql-load-type=mixed

    3.         测试结果图:

    字符类型做主键:

    Mysql版本

    并发数

    每个客户端运行的queries

    每个客户端执行所有queries消耗时间(字符主键)

    每个客户端执行所有queries消耗时间(数字主键)

    mysql-5.1.50

    50

    10000

    24.795s

    21.680s

    100

    5000

    25.094s

    23.548s

    200

    2500

    27.208s

    25.350s

    mysql-5.5.15

    50

    10000

    22.818s

    21.502s

    100

    5000

    23.633s

    22.088s

    200

    2500

    23.862s

    22.891s

    Percona-5.5.15

    50

    10000

    22.285s

    22.104s

    100

    5000

    24.279s

    22.800s

    200

    2500

    25.187s

    21.677s

     

    4.         测试结论:

    mysqlslap的测试结果来看,大体和前面结果一致。只是才用数字类型做主键的时候性能改善比较大,尤其是在高并发的场景,采用int的话性能提升更明显


    附:mysql的性能参数如下:

    点击(此处)折叠或打开

    1. [client]
    2. port = 3306
    3. default-character-set=utf8
    4. socket = /usr/local/mysql/tmp/mysql.sock

    5. [mysqld]
    6. log_bin_trust_function_creators = 1
    7. character-set-server = utf8
    8. port = 3306
    9. socket = /usr/local/mysql/tmp/mysql.sock
    10. basedir = /usr/local/mysql
    11. datadir = /data/dbdata
    12. back_log = 100
    13. max_connections = 500
    14. max_connect_errors = 100000
    15. table_cache = 624
    16. external-locking = FALSE
    17. max_allowed_packet = 16M
    18. sort_buffer_size = 8M
    19. join_buffer_size = 4M
    20. thread_cache_size = 128
    21. query_cache_size = 128M
    22. query_cache_limit = 2M
    23. query_cache_min_res_unit = 2k
    24. default-storage-engine = INNODB
    25. thread_stack = 192K
    26. transaction_isolation = REPEATABLE-READ
    27. tmp_table_size = 128M
    28. max_heap_table_size = 128M
    29. slow_query_log
    30. long_query_time = 0.5
    31. log-bin
    32. binlog_format = MIXED
    33. binlog_cache_size = 4M
    34. max_binlog_cache_size = 8M
    35. max_binlog_size = 512M
    36. key_buffer_size = 256M
    37. read_buffer_size = 8M
    38. read_rnd_buffer_size = 8M
    39. bulk_insert_buffer_size = 64M
    40. myisam_sort_buffer_size = 128M
    41. myisam_max_sort_file_size = 10G
    42. myisam_repair_threads = 1
    43. myisam_recover

    44. interactive_timeout = 28800
    45. wait_timeout = 28800

    46. skip-name-resolve

    47. server-id = 1

    48. innodb_buffer_pool_size = 20G
    49. innodb_additional_mem_pool_size = 20M
    50. innodb_data_file_path = ibdata1:256M:autoextend
    51. innodb_file_io_threads = 8
    52. innodb_thread_concurrency = 16
    53. innodb_flush_log_at_trx_commit = 2
    54. innodb_log_buffer_size = 16M
    55. innodb_log_file_size = 512M
    56. innodb_log_files_in_group = 3
    57. innodb_flush_method=O_DIRECT
    58. #5.5的添加了innodb_io_capacity参数
    59. #innodb_io_capacity=500
    60. innodb_support_xa=0
    61. innodb_max_dirty_pages_pct = 75
    62. innodb_lock_wait_timeout = 120
    63. innodb_file_per_table = 1

    64. [myisamchk]
    65. key_buffer_size = 512M
    66. sort_buffer_size = 512M
    67. read_buffer = 8M
    68. write_buffer = 8M

    69. [mysqldump]
    70. quick
    71. max_allowed_packet = 32M

    72. [mysqld_safe]
    73. open-files-limit = 10240


  • 相关阅读:
    HTML基础
    JVM内存和JVM调优(五)--分代垃圾回收详述
    JVM内存和JVM调优(四)--如何区分垃圾
    JVM内存和JVM调优(三)--基本GC垃圾回收算法
    JVM内存和JVM调优(二)--引用类型
    JVM内存和JVM调优(一)--堆栈概念
    isAssignableFrom和instanceof
    spring学习(三十九)--自定义注解
    SPRING学习(三十八)--SPRING集成MYBATIS之数据库连接池和多种数据源配置方式(三)
    SPRING学习(三十七)--SPRING集成MYBATIS(二)
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7169861.html
Copyright © 2011-2022 走看看