• sysbench--生产--02--mycat和mysql的性能


    sysbench–生产–02–mycat和mysql的性能


    1、验证mycat和mysql的性能损耗

    1.1、查看性能损耗

    表数量单表数据并发线程数压测时间数据库机器数据库架构
    10500万64300秒16核64GMGR架构,3台机器,单主

    上面的数据来源于

    sysbench--生产--01--mysql压测--压测的影响因素
    
    • 1

    在这里插入图片描述

    2.2、结论

    mycat性能损耗在20%到25%之间

    2、获取mycat的性能临界点

    在这里插入图片描述

    通过上面的图,我们将发表阈值定义在800W

    3、操作

    3.1、先压入1800W数据

    3.1.1、内容

    vi /root/test/initDb.sh
    
    • 1

    内容

     
    
    #!/bin/bash
    
    # 压测时间
    time=600
    # 压测线程
    threadnum=64
    # mysql host
    host=111.111.111.111
    # mysql port
    port=3307
    # mysql user
    user=root
    # mysql password
    password=1234
    
    #数据库名称
    db_name=test
    
    # savePath
    savePath=/root/test
    
    # model
    model=oltp_read_write
    
    
    # table_num
    table_num=1
    
    
    # report-interval
    report_interval=5
    
    # report-tableSize
    tableSize=18000000
    
     
    message="";
    message=$message"------------------------"$tableSize"数据测试------------------------\n";
    message=$message"time="$time"\n";
    message=$message"threadnum="$threadnum"\n";
    message=$message"host="$host"\n";
    message=$message"port="$port"\n";
    message=$message"user="$user"\n";
    message=$message"password="$password"\n";
    message=$message"table_num="$table_num"\n";
    message=$message"report_interval="$report_interval"\n";
    
    
    # 综合读写测试
    echo -e $message >   $savePath/oltp_read_write"_"$tableSize.log
    
    
    # 测试前要清除构建的测试数据
    sysbench oltp_read_write  --db-driver=mysql --time=$time --threads=10 --report-interval=$report_interval --mysql-host=$host --mysql-port=$port --mysql-user=$user --mysql-password=$password --mysql-db=$db_name --tables=$table_num --table_size=$tableSize   --db-ps-mode=disable  cleanup >>  $savePath/oltp_read_write"_"$tableSize.log
    
    # 准备数据
    sysbench oltp_read_write  --db-driver=mysql --time=$time --threads=$threadnum --report-interval=$report_interval --mysql-host=$host --mysql-port=$port --mysql-user=$user --mysql-password=$password --mysql-db=$db_name --tables=$table_num --table_size=$tableSize --db-ps-mode=disable  prepare >>  $savePath/oltp_read_write"_"$tableSize.log
    
    
    
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    3.1.2、执行脚本

    chmod +x /root/test/initDb.sh
    /root/test/initDb.sh &
    
    
    • 1
    • 2
    • 3

    3.2、对数据切割

    将数据id 1到800W切割为一份sql,sql_1-800W
    将数据id 800W到1000W切割为一份sql,sql_800W-1000W
    将数据id 1000W到1600W切割为一份sql,sql_1000W-1600W
    将数据id 1600W到1800W切割为一份sql,sql_1600W-1800W

    3.3、分别对不同的数据,进行mycat读写测试

    3.3.1、脚本

    vi /root/test/sql_read_write.sh
    
    • 1

    内容

    #!/bin/bash
     
    # ------mysql   读写测试----------
    
    tableSize=$1
     
    # 压测时间
    time=600
    # 压测线程
    threadnum=64
     
    # mysql user
    user=root
    # mysql password
    password=1234
    
    #数据库名称
    db_name=test
    
    # savePath
    savePath=/root/test
    
    # model
    model=oltp_read_write
    
    
    # table_num
    table_num=1
    
    
    # report-interval
    report_interval=5
    
    
    # mysql host
    host=111.111.111.111
    # mysql port
    port=3307
    
    
    # 综合读写测试
    sysbench oltp_read_write --forced-shutdown=3 --mysql-ignore-errors=1003,1203,1213,1003,1205,6002,6004,4012,2013,4016  --db-driver=mysql --time=$time --threads=$threadnum --report-interval=$report_interval --mysql-host=$host --mysql-port=$port --mysql-user=$user --mysql-password=$password --mysql-db=$db_name --tables=$table_num --table_size=$tableSize   --db-ps-mode=disable  run  >>  $savePath/mycat_oltp_read_write"_"$tableSize.log
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    3.3.2、执行

    chmod +x /root/test/mycat_read_write.sh
    /root/test/sql_read_write.sh 8000000 &
    /root/test/sql_read_write.sh 10000000 &
    /root/test/sql_read_write.sh 16000000 &
    /root/test/sql_read_write.sh 18000000 &
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4、结论

    在这里插入图片描述

    分库分表,已800W作为临界点
    当表数据在500W的时候,mycat性能损耗23.38%
    当表数据在800W的时候,mycat性能损耗26.05%
    当表数据在1000W的时候,mycat性能提高2.49%
    当表数据在1600W的时候,mycat性能提高39.82%
    当表数据在1800W的时候,mycat性能提高73.91%

  • 相关阅读:
    求用matlab写出
    Python基础语法
    STM8的C语言编程(12)--+AD转换
    hive Execution
    计算机网络:根据IP和子网掩码计算网络号
    模电和爱情一样,都很难懂!
    【C++笔记】C++基础入门
    用MFC写的OCX,在HTML调用事件有响应,多线程中调用时网页上事件无响应 :用消息通知来更新可以
    Day801.内存问题排查方案 -Java 性能调优实战
    react antd实现upload上传文件前form校验,同时请求带data
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/125420983