• 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%

  • 相关阅读:
    nginx服务中使用用户认证功能,对Web后台url进行用户验证【加一层认证】
    vue使用谷歌地图实现地点查询
    初体验:动手搭建“小清新式“、版本控制、持续集成的局域网文档系统
    Java 内存模型
    前端入门学习笔记五十一
    mysql面试题——存储引擎相关面试题
    【yolov3】yolov3原理详解
    基于CefSharp和XPath的C#爬虫
    autopoi-web 导出 excel 自定义样式
    超有爱科技携手企企通,打造智慧的数字化采购体系,推动教育数字转型
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/125420983