這篇部落格測試mysql5.7的主鍵查詢結果並確定mysql5.7是不是真的比之前的版本查詢的更快。
前段時間mysql5.7剛剛發布,現在塵埃落定,是時候來
測試一下它在效能上面的提公升了。
我可不是僅僅為了滿足自己的好奇心才做的這些測試!許多還在使用mysql5.6(甚至是mysql5.5)的使用者經常問公升級到5.7能獲得多少的效能提公升呢? 或者它會不會反而降低效能呢,特別是當peter寫了這篇報告之後:
為了弄清這些問題的答案,我們將會用測試資料說話。 測試有許多的方面需要考慮,我們從最簡單的開始:
mysql
主鍵查詢已經載入到記憶體中的資料。這個
工作不涉及事務,完全由cpu決定。
整個實驗的結果,執行指令碼,相關配置資訊可以在我們的github主頁上找到。
本次測試的實驗環境為一台具備56個邏輯執行緒的伺服器(2個cpu插槽,14個核心,2個超執行緒)
cpu為intel(r) xeon(r) e5-2683 v3 @ 2.00ghz cpus.
下圖為主要的測試結果:
由圖示可以看出,在處理的執行緒數目小於20個時,mysql5.5的效能表現是比mysql5.7的要好,但是超過了20個執行緒之後,它的可伸縮性以及吞吐量方面出現了壓力。在處理的執行緒數目不到120個時,mysql5.6的效能時優於5.7的,但是當執行緒數超過了120個,mysql5.7開始展現出優勢,它可以維持吞吐量到1000個執行緒。
以上的結果是在客戶端和服務端在相同的伺服器系統上。為了驗證這個結果的有效性,我也在系統配置10gb網路連線,客戶端和服務端在不同伺服器上,做了同樣的測試。
這裡是基於以上配置的測試結果:
在這種情況下,我們把更多的負載置於伺服器(因為客戶機不共享資源),我們可以看到當執行緒增加到68個以後,mysql5.7相比mysql5.6,優勢就立馬顯現出來了(mysql5.6更早的暴露出擴充套件性問題)。
這裡有另乙個提高mysql5.6在處理大量執行緒時效能的方法:設定 innodb-thread-concurrency 引數。我們來看一下當設定了innodb-thread-concurrency=64時,mysql5.6的測試結果:
可以看到在處理數百個執行緒的時候,設定innodb-thread-concurrency引數可以提高mysql5.6的效能。
在尋找辦法提高整體吞吐量時,我發現在mysql啟動的時關閉performance_schema是個不錯的選擇 。這樣做了之後,測試的表現明顯變得更好。下面就是5.6和5.7在禁止了performance_schema之後的測試表現:
對於mysql5.7,performance_schema的系統開銷非常明顯。結論
我可以說甲骨文在 mysql 5.7 上做得很好,他們把焦點集中在主鍵的查詢上。他們上報的每秒查詢率(qps)達到1.6m。
我沒能達到1.6m;我達到的是每秒查詢率(qps)470k(配置 performance_schema 不啟用)。我使用了 sysbench 0.5 的 lua 指令碼,並沒有在測試期間做 statements 的準備。甲骨文使用了更老的 sysbench 0.4 (有準備的 statements ),並且他們的系統有144個邏輯執行緒。
主鍵(primary key)查詢在很多情況下不是唯一的工作負載,還有一些更有意思的!在即將發布的帖子裡我將會展示其他工作負載的效能度量
mysql5 7學習 mysql 5 7 學習
mysql uroot proot mysql5.7 mysql.user表沒有password欄位改 authentication string 一.建立使用者 命令 create user username host identified by password 例子 create user d...
mysql5 7如何開啟 mysql57怎麼開啟
開啟mysql57的方法 首先開啟winodws執行視窗 然後在開啟編輯框中輸入cmd命令 最後在終端介面中輸入 mysql hlocalhost uroot p123 即可顯示開啟mysql資料庫。windows下用命令列啟動mysql5.7 win菜單鍵即是在鍵盤左下角 ctrl控制 鍵與 al...
mysql5 7如何開啟 mysql57怎麼開啟
開啟mysql57的方法 首先開啟winodws執行視窗 然後在開啟編輯框中輸入cmd命令 最後在終端介面中輸入 mysql hlocalhost uroot p123 即可顯示開啟mysql資料庫。windows下用命令列啟動mysql5.7 win菜單鍵即是在鍵盤左下角 ctrl控制 鍵與 al...