測試mysql5.7和mysql8.0 分別在讀寫、只讀、只寫模式下不同并發(fā)時的性能(tps,qps)
在維西等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,維西網(wǎng)站建設(shè)費(fèi)用合理。
機(jī)器
myql5.7.22
mysql8.0.15
sysbench
mysql5.7和mysql8.0 在讀寫模式下的表現(xiàn)
雙1 配置,讀寫模式下,mysql5.7.22 和mysql8.0.15 tps 、qps 性能差不多,mysql8.0.15 在120 線程并發(fā)時,性能出現(xiàn)了下降抖動:
mysql5.7和mysql8.0 在只讀模式下的表現(xiàn)
雙1 配置,只讀模式下,mysql5.7.22 的tps、qps比mysql8.0.15 好1/3 左右;并發(fā)線程數(shù)增加后,tps、qps并沒有隨著增加,反而出現(xiàn)了下降的趨勢:
mysql5.7和mysql8.0 在只寫模式下的表現(xiàn)
雙1 配置,只寫模式下,隨著并發(fā)數(shù)的上升,mysql5.7.22 的性能比mysql8.0.15 好1/4左右
mysql5.7和mysql8.0 在讀寫模式下的表現(xiàn)
0 2配置,讀寫模式下,并發(fā)數(shù)低時,mysql5.7.22性能好于mysql8.0.15; 并發(fā)數(shù)比較高時,mysql8.0.15 性能好于mysql5.7.22;在80 線程的并發(fā)以上時,性能開始下降
mysql5.7和mysql8.0 在只讀模式下的表現(xiàn)
0 2配置,只讀模式下,mysql5.7.22性能比mysql8.0.15 好1/3左右;隨著并發(fā)數(shù)的上升,性能也沒有上升,反而有下降的趨勢
mysql5.7和mysql8.0 在只寫模式下的表現(xiàn)
注意
sysbench 需要設(shè)置--db-ps-mode=disable 禁用預(yù)編譯語句,不然并發(fā)測試線程多時會報下面的錯誤
使用腳本
MySQL 5.7 已經(jīng)開發(fā)兩年了。相比 MySQL 5.6,有特別多的改進(jìn)。團(tuán)隊(duì)主要關(guān)注速度,性能據(jù)報告是比之前版本提升了 2 至 3 倍!
新特性列表,主要改進(jìn):
提升 MySQL 安全性
改進(jìn)了安裝程序
MySQL 5.6 中,mysql_install_db 在數(shù)據(jù)庫創(chuàng)建的時候提供選項(xiàng)來生成 random password。
MySQL 5.7.4 中,可以跳過 -skip-random-password 選項(xiàng)來默認(rèn)生成隨機(jī)密碼。
MySQL 5.7.5 中,還是默認(rèn)生成隨機(jī)密碼,但是選項(xiàng)修改為 –insecure
而現(xiàn)在,MySQL 5.7.6 廢棄了 mysql_install_db,使用 mysqld –initialize (formerly known as “mysqld –bootstrap,” now deprecated.) 替代。
mysql5.7是5.6的新版本,在沒有減少功能的情況下新增了功能與進(jìn)行了優(yōu)化,例如新增了新的優(yōu)化器、原生JSON支持、多源復(fù)制,還優(yōu)化了整體的性能、GIS空間擴(kuò)展、InnoDB。
1、原生json支持
MySQL 5.7可以定義原生json類型數(shù)據(jù),對json數(shù)據(jù)進(jìn)行有效性檢查,查詢不需要遍歷所有字符串才能找到數(shù)據(jù),通過虛擬列的功能可以對JSON中的部分?jǐn)?shù)據(jù)進(jìn)行索引。
2、多源復(fù)制
MySQL 5.7開始支持多源復(fù)制,也就是多主一從的復(fù)制架構(gòu)。各個庫匯總在一起,就算是其他庫都掛了(整個機(jī)房都無法連接了),還有最后一個救命稻草。不需要每個庫都做一個實(shí)例,也減少了DBA的維護(hù)成本。
3、InnoDB優(yōu)化
MySQL 5.7針對innodb_buffer_pool_size、innodb_log_file_size、innodb_flush_method提供了更加合適的默認(rèn)值。
參考資料來源:MYSQL-MySQL 5.7的新增功能
如果我們查看“top”命令的輸出,我們會看到:MySQL 5.7
MySQL 8.0
這也展示出 MySQL8 使用的更多常駐內(nèi)存和虛擬內(nèi)存。特別是“可怕的”虛擬內(nèi)存,因?yàn)樗h(yuǎn)遠(yuǎn)超過這些 VM 上可用的 1GB 物理內(nèi)存。當(dāng)然,虛擬內(nèi)存使用(VSZ)是現(xiàn)代應(yīng)用程序?qū)嶋H內(nèi)存需求的一個很差的指標(biāo),但它確實(shí)證實(shí)了更高的內(nèi)存需求這個事。
實(shí)際上,正如我們從 “vmstat” 輸出中所知道的那樣,即使沒有太多的“空間”,MySQL 8 和 MySQL 5.7 都不會在低負(fù)載下使用 swap 分區(qū)。如果您有多個連接或希望在同一個 VM 上運(yùn)行某些應(yīng)用程序,則可以使用 swap(如果未啟用交換,則可能導(dǎo)致 OOM)。
這是一個有趣的實(shí)驗(yàn),能看看我有多少可以驅(qū)動 MySQL 5.7 和 MySQL 8 的內(nèi)存消耗。