天天看點

資料庫性能評測:整體性能對比

随着版本更新,關系型資料庫和緩存資料庫整體性能比之前都有大幅度的提升,衡量資料庫性能的三個重要名額是:資料庫吞吐量(QPS)、延遲時長(Latency)和穩定性,以下從這三個方面對幾種資料庫進行了對比測試。

測試1-3是在TS90伺服器上的測試結果,測試4對比資料庫在TS80和TS90上性能。

1、各資料庫的峰值吞吐量對比

資料庫性能評測:整體性能對比

結果分析:

1) 在典型業務模式下(SELECT:UPDATE=95:5),MySQL和MongoDB差不多,QPS的峰值能到每秒28萬左右,Redis為9.6萬;

2) 資料寫入速度方面,MongoDB的QPS在每秒30萬以上,Redis為4.6萬,MySQL 2.3萬。

2、不同業務模式的峰值吞吐量

資料庫性能評測:整體性能對比

注:橫軸為業務模式,100:0表示SELECT與UPDATE比例為100比0,其他類似;縱軸為QPS。

1) MySQL和MongoDB資料庫,峰值QPS随寫比例的提高逐漸下降,Redis相反,各種業務模式的峰值QPS見上圖。

3、典型業務模式,不同并發壓力的資料庫性能

資料庫性能評測:整體性能對比
資料庫性能評測:整體性能對比

注:橫軸為并發數;左側曲線圖的縱軸為QPS,右側曲線圖的縱軸為延遲時間。

1) MySQL和MongoDB在100個并發時吞吐量達到峰值,平均延遲随并發度增加基本呈線性趨勢;

2) MongoDB并發超過100後,QPS下降很快,跟用戶端驅動的連接配接池預設配置100個連接配接有關,增加測試用戶端或調大連接配接池,QPS還可以更高。

4、TS80和TS90伺服器性能對比

資料庫性能評測:整體性能對比

1) 典型業務壓力下,MySQL和MongoDB在TS90的吞吐量是TS80的2倍,Redis變化不大;

2) 對于寫入測試,MongoDB在TS90的寫入速度是TS80的1.5倍,MySQL和Redis變化不大。

1、硬體環境

裝置型号

配置描述

CPU型号

TS80

2個6核CPU,64G記憶體,12*480G SSD,1*80G SSD,萬兆網卡

E5-2620v3

TS90

2個12核CPU,256G記憶體,12*800G SSD,萬兆網卡

E5-2670v3

2、軟體環境

測設裝置

資料庫版本

TS80_1, TS80_2

MySQL 5.6.35,Redis 3.2.6,MongoDB 3.4.1

TS90_1, TS90_2

3、資料庫參數配置

資料庫

參數

MySQL

binlog_format = mixedbinlog_cache_size = 2Mmax_binlog_cache_size = 4Gkey_buffer_size = 2M sort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 16Mjoin_buffer_size = 2Mthread_cache_size = 1024query_cache_size = 1Mquery_cache_limit = 1Mquery_cache_min_res_unit = 2ktable_open_cache = 2048open_files_limit = 65535back_log = 3000max_connections = 4000max_user_connections = 2500max_connect_errors = 100max_allowed_packet = 512Mthread_stack = 192kdefault-storage-engine = INNODBtransaction_isolation = READ-COMMITTEDtmp_table_size = 16Mmax_heap_table_size = 64Mbulk_insert_buffer_size = 64Mlong_query_time = 0.5slow_query_log = onskip-name-resolveinnodb_buffer_pool_size = 40Ginnodb_data_file_path = ibdata1:2G:autoextendinnodb_file_io_threads = 24innodb_purge_threads = 12innodb_read_io_threads = 24innodb_write_io_threads = 24innodb_thread_concurrency = 24innodb_buffer_pool_instances = 8innodb_flush_log_at_trx_commit= 1innodb_log_buffer_size = 16Minnodb_log_file_size = 2Ginnodb_log_files_in_group = 2innodb_max_dirty_pages_pct = 75innodb_lock_wait_timeout = 50innodb_file_per_table = 1

MongoDB

journal

每個測試的硬體環境和資料量基本一緻,資料庫都按單執行個體方式部署。各資料庫都包含單張表(10個字段),1000萬條記錄,每條記錄長度1KB。

測試工具是YCSB(Yahoo! Cloud Serving Benchmark詳細介紹見這裡),使用YCSB的不同workload壓力配置模版,模拟以下業務場景組合,對資料庫進行壓測。

讀寫比例:95:5 50:50 100:0 0:100,讀寫對應為SELECT:UPDATE操作

并發線程:10 50 100 150 300 500 1000

測試前預熱資料,避免緩存資料加載引起的性能降低。

測試資料庫部署為單執行個體,測試用戶端部署一個YCSB執行個體,YCSB發起多個并發線程對資料庫進行壓力測試。力測試。