<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è)性能更牛?

          共 7772字,需瀏覽 16分鐘

           ·

          2021-08-05 20:39

          微信搜索逆鋒起筆關(guān)注后回復(fù)編程pdf
          領(lǐng)取編程大佬們所推薦的 23 種編程資料!

          來源:cnblogs.com/YangJiaXin/p/11234591.html

          • 背景
          • 最早
          • 環(huán)境
          • 測試
            • 雙1模式下
            • 0 2模式下
          • 摘要

          背景

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

          最早

          • 測試使用版本為mysql5.7.22和mysql8.0.15
          • sysbench測試前先重啟mysql服務(wù),并清除os的緩存(避免多次測試時(shí)命中緩存)
          • 每次進(jìn)行測試都是新生成測試數(shù)據(jù)后再進(jìn)行mysql5.7和mysql8.0的測試
          • 每次測試時(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)平臺

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

          測試

          • 在不同的持久化策略下(binlog,重做日志持久化)mysql5.7和mysql8.0在讀寫模式,引用模式,只寫模式(oltp_read_write,oltp_read_only,oltp_write_only)下的性能表現(xiàn)
          • sysbench測試時(shí)間為60s,測試的表數(shù)量為20
          • 測試分別在雙1模式(安全性)和0 2模式(高級)下進(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每秒鐘寫redo log并刷盤持久化
          innodb_flush_log_at_trx_commit1個(gè)事務(wù)提交后寫redo log并刷盤持久化,最安全
          innodb_flush_log_at_trx_commit2事務(wù)提交后寫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àn)

          • 雙1配置,讀寫模式下,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并沒有增加,反而出現(xiàn)了下降的趨勢

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

          • 雙1配置,只寫模式下,轉(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àn)

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

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

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

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

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

          摘要

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


          注意sysbench需要設(shè)置--db-ps-mode = disable禁用預(yù)編譯語句,不然并發(fā)測試線程多時(shí)會(huì)報(bào)下面的錯(cuò)誤。致命:mysql_stmt_prepare()失敗致命:MySQL錯(cuò)誤:1461“不能創(chuàng)建超過max_prepared_stmt_count語句(當(dāng)前值:16382)“致命:mysql_stmt_prepare()失敗致命:MySQL錯(cuò)誤:1461”不能創(chuàng)建超過max_prepared_stmt_count語句(當(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 測試在讀寫模式、只讀模式、只寫模式下 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


          逆鋒起筆是一個(gè)專注于程序員圈子的技術(shù)平臺,你可以收獲最新技術(shù)動(dòng)態(tài)最新內(nèi)測資格BAT等大廠大佬的經(jīng)驗(yàn)增長自身學(xué)習(xí)資料職業(yè)路線賺錢思維,微信搜索逆鋒起筆關(guān)注!


          推薦閱讀:
          一個(gè) Go 語言實(shí)現(xiàn)的數(shù)據(jù)庫
          大廠 MySQL 規(guī)范,從入門到精通!
          MySQL 中的反斜杠 \\,真是太坑了!!
          MySql 批量插入時(shí),如何不插入重復(fù)的數(shù)據(jù)
          一次關(guān)于 Mysql 索引優(yōu)化的思考


          明天見(??ω??)??

          瀏覽 151
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  欧美理论视频在线观看 | 小黄片免费下载 | 乱伦无码中文字幕 | 大香蕉免费成人 | 日本精品无码a 6 2v在线 |