<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MySQL 5.7 vs 8.0,哪個(gè)性能更牛?

          共 4685字,需瀏覽 10分鐘

           ·

          2020-11-18 03:54

          點(diǎn)擊上方藍(lán)色“程序猿DD”,選擇“設(shè)為星標(biāo)”

          回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!

          來(lái)源:r6d.cn/8cw


          背景


          測(cè)試mysql5.7和mysql8.0分別在讀寫(xiě),選定,只寫(xiě)模式下不同并發(fā)時(shí)的性能(tps,qps)

          最早

          • 測(cè)試使用版本為mysql5.7.22和mysql8.0.15
          • sysbench測(cè)試前先重啟mysql服務(wù),并清除os的緩存(避免多次測(cè)試時(shí)命中緩存)
          • 每次進(jìn)行測(cè)試都是新生成測(cè)試數(shù)據(jù)后再進(jìn)行mysql5.7和mysql8.0的測(cè)試
          • 每次測(cè)試時(shí)保證mysql5.7和mysql8.0的配置參數(shù)一致

          環(huán)境

          機(jī)器cat / etc / redhat-release | xargs echo'版本'&& dmidecode -s系統(tǒng)產(chǎn)品名稱| xargs echo'是否虛擬化'&& cat / proc / cpuinfo | grep“ processor” | wc -l | xargs echo'cpu核數(shù)'版本CentOS Linux版本7.5.1804(核心)是否虛擬化KVM cpu核數(shù)4

          myql5.7.22

          5.7.22-log
          innodb_buffer_pool_size?128M
          innodb_log_buffer_size??64M
          innodb_log_file_size????48M
          binlog_format???ROW
          log_bin?ON
          transaction_isolation???REPEATABLE-READ

          mysql8.0.15

          8.0.15
          innodb_buffer_pool_size?128M
          innodb_log_buffer_size??64M
          innodb_log_file_size????48M
          binlog_format???ROW
          log_bin?ON
          transaction_isolation???REPEATABLE-READ

          系統(tǒng)平臺(tái)

          sysbench?-V
          sysbench?1.1.0?(using?bundled?LuaJIT?2.1.0-beta3)

          測(cè)試

          • 在不同的持久化策略下(binlog,重做日志持久化)mysql5.7和mysql8.0在讀寫(xiě)模式,引用模式,只寫(xiě)模式(oltp_read_write,oltp_read_only,oltp_write_only)下的性能表現(xiàn)
          • sysbench測(cè)試時(shí)間為60s,測(cè)試的表數(shù)量為20
          • 測(cè)試分別在雙1模式(安全性)和0 2模式(高級(jí))下進(jìn)行
          參數(shù)任選值意味著
          sync_binlog0binlog刷盤持久化由操作系統(tǒng)完成,性能好,存在丟失binlog的風(fēng)險(xiǎn)
          sync_binlog1個(gè)事務(wù)提交后刷盤持久化,最安全
          sync_binlog?在每N個(gè)事務(wù)提交后進(jìn)行刷盤持久化
          innodb_flush_log_at_trx_commit0每秒鐘寫(xiě)redo log并刷盤持久化
          innodb_flush_log_at_trx_commit1個(gè)事務(wù)提交后寫(xiě)redo log并刷盤持久化,最安全
          innodb_flush_log_at_trx_commit2事務(wù)提交后寫(xiě)redo log,兩次刷盤持久化

          雙1模式下

          SHOW?GLOBAL??VARIABLES?WHERE?Variable_name?IN('sync_binlog','innodb_flush_log_at_trx_commit');
          +--------------------------------+-------+
          |?Variable_name??????????????????|?Value?|
          +--------------------------------+-------+
          |?innodb_flush_log_at_trx_commit?|?1?????|
          |?sync_binlog????????????????????|?1???|
          +--------------------------------+-------+

          mysql5.7和mysql8.0在讀寫(xiě)模式下的表現(xiàn)

          • 雙1配置,讀寫(xiě)模式下,mysql5.7.22和mysql8.0.15 tps,qps性能差不多,mysql8.0.15在120線程并發(fā)時(shí),性能出現(xiàn)了下降幅度

          mysql5.7和mysql8.0在預(yù)期模式下的表現(xiàn)

          • 雙1配置,預(yù)期模式下,mysql5.7.22的tps,qps比mysql8.0.15好1/3左右;并發(fā)線程數(shù)增加后,tps,qps并沒(méi)有增加,反而出現(xiàn)了下降的趨勢(shì)

          mysql5.7和mysql8.0在只寫(xiě)模式下的表現(xiàn)

          • 雙1配置,只寫(xiě)模式下,轉(zhuǎn)換并發(fā)數(shù)的上升,mysql5.7.22的性能比mysql8.0.15好1/4左右

          0 2模式下

          SHOW?GLOBAL??VARIABLES?WHERE?Variable_name?IN('sync_binlog','innodb_flush_log_at_trx_commit');
          +--------------------------------+-------+
          |?Variable_name??????????????????|?Value?|
          +--------------------------------+-------+
          |?innodb_flush_log_at_trx_commit?|?2?????|
          |?sync_binlog????????????????????|?0???|
          +--------------------------------+-------+

          mysql5.7和mysql8.0在讀寫(xiě)模式下的表現(xiàn)

          • 0 2配置,讀寫(xiě)模式下,并發(fā)數(shù)低時(shí),mysql5.7.22性能好于mysql8.0.15; 并發(fā)數(shù)比較高時(shí),mysql8.0.15性能好于mysql5.7.22;在80線程的并發(fā)以上時(shí),性能開(kāi)始下降

          mysql5.7和mysql8.0在預(yù)期模式下的表現(xiàn)

          • 0 2配置,預(yù)期模式下,mysql5.7.22性能比mysql8.0.15好1/3左右;轉(zhuǎn)換并發(fā)數(shù)的上升,性能也沒(méi)有上升,反而有下降的趨勢(shì)

          mysql5.7和mysql8.0在只寫(xiě)模式下的表現(xiàn)

          • 0 2配置,只寫(xiě)模式下,mysql5.7.22的tps頂點(diǎn)比較大;mysql5.7.22的qps比mysql8.0.15好1/3左右

          摘要

          • 整體來(lái)看,mysql5.7.22在讀寫(xiě)模式,擴(kuò)展模式,只寫(xiě)模式下的表現(xiàn)是mysql8.0.15的
          • 隨著并行數(shù)的增加,性能表現(xiàn)不會(huì)也跟著增加,將會(huì)出現(xiàn)下降
          • 本次測(cè)試結(jié)果是在配置很低的情況下進(jìn)行的,不代表絕對(duì)

          注意sysbench需要設(shè)置--db-ps-mode = disable禁用預(yù)編譯語(yǔ)句,不然并發(fā)測(cè)試線程多時(shí)會(huì)報(bào)下面的錯(cuò)誤。致命:mysql_stmt_prepare()失敗致命:MySQL錯(cuò)誤:1461“不能創(chuàng)建超過(guò)max_prepared_stmt_count語(yǔ)句(當(dāng)前值:16382)“致命:mysql_stmt_prepare()失敗致命:MySQL錯(cuò)誤:1461”不能創(chuàng)建超過(guò)max_prepared_stmt_count語(yǔ)句(當(dāng)前值:16382)“致命:thread_init' function failed: /usr/local/share/sysbench/oltp_common.lua:288: SQL API error FATAL: mysql_stmt_prepare() failed FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)" FATAL:thread_init'函數(shù)失?。? usr / local / share / sysbench / oltp_common.lua:288:SQL API錯(cuò)誤致命:mysql_stmt_prepare()失敗

          使用腳本

          ?cat?sysbench_test_mysql5.7_8.0_tps_qps.sh
          #!/bin/bash
          #用于sysbench?測(cè)試在讀寫(xiě)模式、只讀模式、只寫(xiě)模式下?mysql5.7和mysql8.0?的tps,qps
          #nohup?bash?$0?>/tmp/sysbench_test?2>&?1?&
          #

          user=admin
          passwd=admin
          ports="8015?57222"
          host=127.0.0.1
          sysbench_test_mode="oltp_read_write?oltp_read_only?oltp_write_only"
          sysbench_test_info_path=/tmp/sysbench-test

          function?red_echo?()?
          {

          ????????local?what="$*"
          ????????echo?-e?"$(date?+%F-%T)?\e[1;31m?${what}?\e[0m"
          }

          function?check_las_comm(){
          ????if?[?$1?-ne?0?];then
          ????????red_echo?$2
          ????????exit?1
          ????fi
          }

          function??restart_mysqld(){
          ??service?mysqld${1}?restart
          ??sleep?2
          }

          function??purge_binlog(){
          port=$1
          mysql?-u$user?-p$passwd?-P$port?-h$host<<EOF
          purge?binary?logs?before?now()
          ;
          EOF
          }


          function?clean_os_cache(){
          ??echo?3?>?/proc/sys/vm/drop_caches
          }

          function??sysbench_with_diff_thread(){


          thread_num=$1
          port=$2
          order=$3
          test_mode=$4
          sysbench?/usr/local/share/sysbench/${test_mode}.lua?--mysql_storage_engine=innodb??--table-size=100000?--tables=20?--mysql-db=test_1?--mysql-user=$user?--mysql-password=$passwd?--mysql-port=$port??--mysql-host=$host?--threads=$thread_num??--time=60?--report-interval=2?--db-ps-mode=disable?--events=0?--db-driver=mysql?$order

          }

          function??main(){
          for?test_mode?in?$sysbench_test_mode;do

          ??for?port?in?$ports;do
          ????for?thread_num?in?{5,10,20,30,40,80,120,200};do
          ??????restart_mysqld?"$port"
          ??????check_las_comm??"$?"?"restart?mysqld${port}?failed?"
          ??????clean_os_cache
          ??????purge_binlog?"$port"

          ??????red_echo?"sysbench?$thread_num??threads?cleanup?mysqld${port}"
          ??????sysbench_with_diff_thread?"$thread_num"?"$port"?"cleanup"?"$test_mode">/dev/null

          ??????red_echo?"sysbench?$thread_num??threads?prepare?mysqld${port}"
          ??????sysbench_with_diff_thread?"$thread_num"?"$port"?"prepare"?"$test_mode">/dev/null

          ??????mkdir?-p?$sysbench_test_info_path
          ??????red_echo?"sysbench?$thread_num??threads?run?mysqld${port}?$test_mode"
          ??????sysbench_with_diff_thread?"$thread_num"?"$port"?"run"?"$test_mode"?>?$sysbench_test_info_path/${test_mode}_${thread_num}_$port

          ??????#?service?mysqld{port}?stop
          ????done
          ??done
          done

          }

          main


          DD自研的滬牌代拍業(yè)務(wù),點(diǎn)擊直達(dá)


          往期推薦

          因退休太無(wú)聊,Python創(chuàng)始人加入微軟!

          HikariCP為什么自己造了一個(gè)FastList?

          Spring Boot 2.4.0 正式發(fā)布!擁抱云原生!

          服務(wù)網(wǎng)格仍然很難

          10道棘手的Java面試題,看看你能答對(duì)幾個(gè)?

          如果MySQL磁盤滿了,會(huì)發(fā)生什么?


          掃一掃,關(guān)注我

          一起學(xué)習(xí),一起進(jìn)步

          每周贈(zèng)書(shū),福利不斷

          深度內(nèi)容

          推薦加入



          瀏覽 30
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  sm调教视频在线观看 | 亚洲第一中文字幕 | 色窝窝视频在线 | 人人草人 | 久久性生活 |