MySQL中ScaleFlux性能報告 總結多線程synchronized

      2020-08-19 13:53:23

      最近作者有一個針對 ScaleFlux 的產品也叫做 CSD 2000 進行壓測的機會。本文中作者將介紹使用 Intel SSD 和 ScaleFlux 存儲設備進行壓測的對比結果。

      一、我們為什么需要不一樣的 ScaleFlux?

      答案很簡單,它為我們提供了內置的壓縮功能和支持原子寫特性。對于很多工作場景尤其是數據庫類型的業務而言,這些功能和特性非常重要。

      因為內置的磁盤壓縮功能相同的磁盤容量,我們可以存儲更多的數據在 ScaleFlux 存儲設備上。(引申:大規模數據存儲的情況下,耗費的機器數量更少,機架位也更少。)

      作者基于不同的數據集大小,不同數據庫 schema 數據量進行多次測試。需要說明的是在這些測試場景中我并不打算壓測這些卡的性能極限,而是對比相同容量下 ScaleFlux 存儲設備 和 Intel SSD 的性能表現。

      存儲設備配置: ScaleFlux – CSD 2000 4TB Intel – P4610 3.2TB 服務器配置: Application server: Supermicro; SYS-6019U-TN4RT 48xIntel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz 190G RAM Database Server: Inspur; SA5212M4 32xIntel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz 64G RAM

      在 Application server 運行 sysbench 壓測工具,在 Database Server 運行 Percona Server for MySQL 8.0.19 。

      作者禁用了 binary, slow query logging 和 adaptive hash,使用比較小的 BPS 配置,為了減少數據緩存,盡量讓 sql 請求訪問磁盤。另外就是測試了關閉和開啟 doublewrite 的性能表現。

      數據庫的配置如下:

      innodb_buffer_pool_size=8G innodb_log_file_size = 2G max_connections=500 slow_query_log=off disable_log_bin innodb_doublewrite=ON/OFF tmpdir = /var/lib/mysql/ innodb_adaptive_hash_index=off innodb_flush_method=O_DIRECT innodb_purge_threads=32 sync_binlog=0 max_prepared_stmt_count=4000000

      做了哪些測試

      首先作者做了標準的 OLTP read_only,write_only 和 read-write 測試,然后作者修改分表結構,

      CREATE TABLE `sbtest1` ( `id` int NOT NULL AUTO_INCREMENT, `k` int NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', `data1` varchar(255) DEFAULT NULL, `data2` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `k_1` (`k`), KEY `idx_data1` (`data1`) ) ENGINE=InnoDB AUTO_INCREMENT=9999948 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

      新增加了 data1 和 data2 兩個 varchar 字段,使用一本書(Gutenberg project)中的內容行記錄進行填充。

      為什么這樣做?因為這也是 ScaleFlux 的優勢之處,他們聲稱如果數據可以被壓縮,那么 ScaleFluxIntel 的性能要好很多。

      作者還修改了 OLTP lua 腳本來適配新的表結構,

      index_updates = { "UPDATE %s%u SET k=?,data1=? WHERE id=?", t.INT,,t.INT}, non_index_updates = { "UPDATE %s%u SET c=?,data2=? WHERE id=?", ,,t.INT}, inserts = { "INSERT INTO %s%u (id, k, c, pad, data1, data2) VALUES (?, ?, ?, ?, ?, ?)", t.INT, t.INT, , , , }, index_selects = { "SELECT id,data2 FROM %s%u WHERE data1=?", }, update_based_on_data1 = { "UPDATE %s%u SET data2=? WHERE data1=?", ,},

      壓測的配置如下:

      default lua scripts – 100 tables – 10ML rows each – 220G

      default lua scripts – 1000 tables – 10ML rows – 2.3T

      modified lua scripts – 100 tables – 10ML rows each – 440G

      modified lua scripts – 540 tables – 10ML rows each – 2.5T

      modified lua scripts – 540 tables – 20ML rows each – 4.7T

      talk is cheap,我們來看看結果對比圖吧。

      Default Sysbench – Read/Write – 220G Datasize

      在默認配置下,使用 100 張表,每個表 100w 條記錄,數據集大小為 220G。從結果圖中我們可以看到 Intel SSD 略微領先。ScaleFlux 存儲設備在并發度為 96 之后有領先的優勢。

      需要說明都是 ScaleFlux 支持原子寫,所以作者關閉了 InnoDB Double Write Buffer。而針對 Intel SSD 不支持原子寫,InnoDB Double Write Buffer 是開啟的。

      Modified Sysbench – Read/Write – 440G Datasize

      該場景下,作者使用了添加 2 個字段的壓測模型。數據量擴大到 440G,而且使測試數據適合壓縮。

      從結果上看,和 ScaleFlux 聲明的一樣,在數據可壓測的情況下,MySQL 在 ScaleFlux設備上的性能明顯優于 Intel SSD,在高并發場景下,性能優勢明顯。

      再次說明 Intel SSD 上的 MySQL 未關閉 InnoDB Double Write Buffer,而是用 ScaleFlux 設備的 MySQL 是關閉了 InnoDB Double Write Buffer 的。

      我們來看一下 Intel SSD 的 MySQL 也關閉 InnoDB Double Write Buffer 的測試結果。

      在同時開啟或者關閉 Double Write 特性的對比測試中,使用 ScaleFlux 存儲設備的 MySQL 都表現比較明顯。

      需要注意的是,我們不推薦在任何不支持原子寫的設備上關閉 InnoDB Double Write。

      Modified Sysbench – Read/Write – 2.5T Datasize

      兩個設備都有 3.2T 的存儲容量,作者壓測的數據使用了 2.5T。作者使用修改的表結構重建了 sysbench 的表。從結果上來看 ScaleFlux 存儲設備上的 MySQL 性能優勢比較明顯。一個影響性能的因素是 SSD 存在寫放大。當數據量達到一定容量比例,SSD 會進行類似垃圾回收的任務,耗費資源,影響 SSD 的寫能力。

      Disk Latency

      從圖中可以查看到 ScaleFlux 存儲設備的響應時間非常穩定而 Intel 設備的響應時間則波動比較大。

      CPU Usage

      ScaleFlux – Read/Write – Modified Sysbench – 540 tables – 2.5T

      Intel – Read/Write – Modified Sysbench – 540 tables – 2.5T

      我們可以看到 Intel 設備的 iowait 比較高 31.52%,而 ScaleFlux 設備的 iowait 則是 11.46%,明顯低于 Intel 設備。

      Disk Operations

      從系統層的監控數據來看測試期間的 IOPS 表現。ScaleFlux 存儲設備提供更高的 IOPS 大約是 Intel 的 2 倍。更高的 IOPS 意味著 MySQL 的 QPS/TPS 更高,性能更好。下面的圖也說明了這一點。

      InnoDB Row Operations

      從上面這張圖中我們看到 Innodb 層的統計數據,每分鐘 inserted/updated/deleted 多少行記錄。

      因為 InnoDB 關閉了 double write,使用 ScaleFlux 存儲設備的 MySQL 寫性能是 Intel 的接近兩倍。

      關閉
      精彩放送
      99久久精品国产亚洲| 亚洲av无码av在线播放| 亚洲一区二区三区久久久久| 亚洲色自偷自拍另类小说| 亚洲精品自产拍在线观看| 国产亚洲蜜芽精品久久| 成人区精品一区二区不卡亚洲| 亚洲午夜福利精品久久| 亚洲AV午夜成人片| 亚洲∧v久久久无码精品| 久久久久久久亚洲精品| 亚洲AV成人无码网天堂| 亚洲香蕉免费有线视频| 久久精品国产亚洲AV无码娇色| 亚洲精品少妇30p| 日韩亚洲欧洲在线com91tv| 亚洲色欲久久久综合网东京热| 亚洲AV无码不卡在线观看下载| 国产成人亚洲综合一区| 久久亚洲精品11p| 亚洲国产视频一区| 亚洲精彩视频在线观看| 亚洲男人天堂影院| 亚洲六月丁香六月婷婷蜜芽| 亚洲国产精品午夜电影| 亚洲国产成a人v在线| 亚洲免费视频观看| 亚洲熟妇无码久久精品| 亚洲综合小说久久另类区| 久久久亚洲欧洲日产国码农村| 亚洲日本精品一区二区| 无码乱人伦一区二区亚洲一| 亚洲综合一区二区精品导航| 亚洲av日韩av不卡在线观看 | 无码一区二区三区亚洲人妻| 亚洲av无码av在线播放| 亚洲日本一区二区一本一道| 国产亚洲AV手机在线观看| 亚洲欧洲成人精品香蕉网| 亚洲精品国产综合久久一线| 亚洲乳大丰满中文字幕|