震驚!MySQL 8.0 220W QPS輕松達成

SELECT c FROM sbtest1WHERE id = ?有了上面的鋪墊,接著就可以來實現自己220W QPS的小目標了。
希望各位粉絲看完后點擊右下角的“點贊”,以示鼓勵。長期堅持原創很不容易,多次想放棄。堅持是一種信仰,專注是一種態度,一路陪伴,一起星辰大海。

上一次,通過參數的調整,我們已經可以讓MySQL 8.0.23版本跑出了140萬的QPS佳績。見:QPS從20W到140W,一個參數讓MySQL 8.0性能提升7倍

取得這樣的成績還是在一臺相對較老的服務器上,CPU配置為:Intel(R) Xeon(R) Platinum 8255C,兩個24核CPU,支持超線程技術,總共96個邏輯核,

若使用現在更新架構的CPU和更多的核,相信QPS的性能還能不斷提升。

不過即便是在當前邏輯96核的CPU基礎上,MySQL 8.0.23依然能輕松跑出140萬QPS。

測試過程中MySQL實例差不多占用55個邏輯核,每個邏輯核能跑出2.3W的QPS。

但是,請問在同一物理硬件條件下,MySQL QPS還能進一步大幅提升么?

答案是:可以的!!!

該調整的資料庫和操作系統參數,基本都已經調整完畢,想要在sysbench的測試中再有大突破,幾無可能。

所以,不如我們打碎固有的經驗,換個角度思考問題。

在sysbench測試中,其測試的SQL語句如下所示:

SELECT c FROM sbtest1 WHERE id = ?

可以看到測試是通過主鍵查詢,返回列c的結果,列c的長度為120個字節。即通過主鍵返回一個120字節的值。

嗯,這不就是一個KV查詢么?通過一個key返回一個120字節的value。

我們是不是可以把MySQL打造成一個KV資料庫呢?減少SQL層,直接通過KV接口讀取引擎的數據呢?

答案是:可以的,

敲黑板:MySQL早已就打破了關系型與非關系型的邊界。

當前,可以通過MySQL打造下面幾種類型的資料庫:

  1. 關系型資料庫:通過SQL訪問MySQL中的數據;
  2. KV型資料庫:通過Memcached協議訪問MySQL中的數據;
  3. 文檔資料庫:利用JSON特性,打造文檔資料庫。

下圖顯示了MySQL的CrossOver跨界能力:


從上圖可以看到,MySQL已經支持通過傳統的Memcached協議訪問資料庫中的表,只需做好表的映射關系即可,例如我們可以將sysbench中的表sbtest1映射為KV訪問的表:


經過完整的測試,可以發現通過Memcached Plugin提供的NoSQL接口訪問MySQL,性能比傳統SQL方式要快至少65%。


以64線程為基準,MySQL Memcached Plugin在64線程的時候性能可達225W,CPU使用為42個邏輯核,差不多5.3萬/Core。對比SQL模式,CPU效能的使用率提升130%+,

不要驚訝,通過MySQL跑出220萬+的QPS就是這么簡單,如果你的業務是偏KV類型的,且是讀多寫少的場景,不如直接使用MySQL的KV接口。

這樣你不但能利用到MySQL強大的性能,還能依舊使用SQL接口進行復雜數據的訪問,同時利用復制或MGR技術進行數據的同步,而這在Memcached中,全部無法做到,

KV只是KV,而SQL不僅僅是SQL

2 条回复 A文章作者 M管理員
  1. Redis單核7萬保底,給你的MySQL兩核試一下[狗]

  2. 我的內存只有2g的乞丐機能用么?