MySQL 8.0 每秒可執行 210 萬次 SQL 查詢!
MySQL 8.0的第一個發行候選版本(rc)已問世,我很高興介紹性能方面的若干情況。本文將介紹一種「最簡單」的性能,即內存中只讀性能。
然而,使用測試工作負載出於以下兩個原因:
1)驗證MySQL8.0的性能;
2)全面評估Alex開發的「新的」Sysbench(https://github.com/akopytov/sysbench)。
直接說說第二個原因,新的Sysbench主要讓人擔心的地方是它的LUA開銷(前一個版本0.5運行速度不如舊版本0.4,就是由於LUA)——長話短說,我現在可以證實:新的Sysbench運行起來速度與我使用過的最舊、「最輕量級」的Sysbench二進位代碼一樣快,所以向Alex致敬!
說到MySQL8.0在只讀工作負載方面的若干改進,我想提以下幾點:
幾個「開銷」已得到了解決;
當然,最顯著的開銷與UTF8與有關;
然而,連與latin1有關的函數也得到了一點改進;
但這僅僅涉及「開銷」,根本不涉及「可擴展性」;
由於主要的「可擴展性」缺口已經在兩年前由MySQL 5.7堵上;-))
所以,這裡MySQL 8.0的主要優點將是保留已經獲得的性能提升!
(同意,聽起來很奇怪,但如果你只要看一下8.0隨帶的所有新的功能特性:http://mysqlserverteam.com/mysql-8-0-rc1-highlights/,就能想像我們的代碼路徑不會比較短。)
所以這裡合理的測試就是拿latin1編碼來比較8.0與5.7/5.6。
(就UTF8而言,勝者是8.0,而且優勢明顯,這點你已經知道。)
Sysbench中最「合理」的只讀工作負載是Point-Selects,所以這是我的測試場景:
工作負載:新的Sysbench只讀point-selects
數據量:8個表,每個表有1000萬行
編碼:latin1
用戶負載級別:1、2、4、..1024
引擎:MySQL 8.0、MySQL 5.7和MySQL 5.6
伺服器:96核超線程(HT)4CPU插座2.2Ghz(Broadwell),OL7.3
以下是測試結果:
觀測數據:
MySQL8.0每秒210萬次SQL查詢——這是MySQL有史以來每秒最多查詢次數(Max QPS)方面目前獲得的新記錄!
毫無疑問,這點很贊!
然而,若是較低的負載級別,QPS方面顯然出現了小幅但明顯的倒退。
這可不好(即使很容易由增加的代碼路徑+新的DD+其他因素來解釋)。
好了,暫且把這添加到我的「低負載」性能問題列表中,以後再來調查。
到目前為止,210萬次的QPS結果是在「舊」BroadwellCPU上獲得的,沒有發現任何瓶頸(只有潛在的開銷),所以暫時我不知道同樣的工作負載在4CPU插座Skylake上會有怎樣的表現,一旦拿到這樣的CPU,我會公布相應結果。
然後,許多人不斷問我如何再現上述結果,於是我在下面列出大家可能想要知道的所有詳細步驟:
1)安裝和啟動MySQL8.0實例(發行候選版本或當前的實驗室版本)。
2)我使用的配置設置如下:
注意:沒錯,我知道,PFS已關閉,比較PFS打開和關閉的結果隨後會出來,別擔心!
4)下載打包文件(tarball,http://dimitrik.free.fr/BMK.tgz)以及我的腳本、sysbench二進位代碼以及my.conf,然後解壓縮到「/」目錄。
5)這將創建/BMK目錄,所有內容都在裡面,於是編輯「.bench」文件,提供帳戶細節信息,從而連接到MySQL實例(用戶、密碼、主機和埠)。
6)創建「sysbench」資料庫。
7)運行負載數據腳本:
這將裝入8個表,每個表有1000萬行。
8)在sysbench資料庫裡面對每個表運行分析(ANALYZE),確保這些表的統計數字是最新的。
9)運行測試:


※網宿科技前三季度凈利潤預降33%-43%
※運維是幹嘛的!
※西部數據推出新的MAMR磁碟驅動器技術,應對數據中心的存儲挑戰
※谷歌、紅帽、IBM等8家共同開源Grafeas API,化解軟體供應鏈的難題!
※未來IT的三駕馬車:AI、物聯網和混合雲
TAG:雲頭條 |