Tidb性能對比(v3.0.12 VS v4.0.0-rc)

1、環境說明

一、集羣部署以及配置

Tidb性能對比(v3.0.12 VS v4.0.0-rc)

二、部署狀況

a、在一套服務器上同時部署v3和v4兩個版本的兩個集羣,可是不一樣時啓動,壓測哪一個版本的時候啓動哪一個集羣,保證兩個集羣不相互影響,同時也保證了底層的硬件資源環境相同
b、部署集羣用的參數都是默認參數,沒有作過特殊修改sql

2、測試

關於使用性能測試工具的測試結果,官方有相關數據,我這裏用咱們具體的一個業務場景來測試,就是一個統計的SQL服務器

一、測試結果

Tidb性能對比(v3.0.12 VS v4.0.0-rc)

二、測試說明

a、這是一個記錄對象存儲文件記錄的表,表裏面的數據量大概是9860萬,下面是表結構ssh

CREATE TABLE `ois_file_record` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '代理主鍵',
  `file_name` varchar(128) NOT NULL DEFAULT '' COMMENT '文件名稱(包含後綴名)',
  `file_folder` varchar(64) NOT NULL DEFAULT '' COMMENT '文件夾名稱(長度限制)',
  `file_key` varchar(255) DEFAULT NULL COMMENT '',
  `file_type` int(11) NOT NULL DEFAULT '6' COMMENT '',
  `file_size` bigint(11) NOT NULL DEFAULT '0' COMMENT '',
  `identify` varchar(64) NOT NULL DEFAULT '' COMMENT '',
  `storage_type` int(11) NOT NULL COMMENT '',
  `bucket_type` int(11) NOT NULL COMMENT '',
  `bucket_name` varchar(64) NOT NULL DEFAULT '' COMMENT '',
  `status` int(11) NOT NULL DEFAULT '1' COMMENT '',
  `is_delete` int(11) NOT NULL DEFAULT '0' COMMENT '',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
  PRIMARY KEY (`id`),
  KEY `idx_file_key` (`file_key`) USING HASH COMMENT '',
  KEY `idx_identify` (`identify`) USING HASH COMMENT ''
) ENGINE=InnoDB AUTO_INCREMENT=98603554 DEFAULT CHARSET=utf8 COMMENT='文件記錄表' |

b、下面這個SQL是業務方用到的一個統計SQL,咱們就用這個SQL對比下Mysql、Tidb三、Tidb4的速度ide

SELECT SUM(file_size) as fileSize,COUNT(id) as fileCount,DATE_FORMAT(create_time,'%Y-%m-%d') as dateTime FROM ois_file_record WHERE identify = 'vehicle' and storage_type = 4 and bucket_type = 2 and is_delete = 0 and create_time > '2019-12-01 00:00:00' and file_key LIKE '%/video_data/%' GROUP BY DATE_FORMAT(create_time,'%Y-%m-%d') \G工具

三、測試過程

a、下圖是Mysql上的結果,這個SQL跑出來須要8分鐘4秒
Tidb性能對比(v3.0.12 VS v4.0.0-rc)
b、下圖是v4.0.0-rc版本,沒有開啓tiflash副本的結果,這個SQL跑出來須要25秒
Tidb性能對比(v3.0.12 VS v4.0.0-rc)
Tidb性能對比(v3.0.12 VS v4.0.0-rc)性能

c、下圖是v4.0.0-rc版本,開啓1個tiflash副本的結果,這個SQL跑出來須要7.5秒
Tidb性能對比(v3.0.12 VS v4.0.0-rc)
d、下圖是v3.0.12的版本,這個SQL跑出來須要32秒
Tidb性能對比(v3.0.12 VS v4.0.0-rc)測試

3、總結

一、Tidb 4.0 對於AP場景,在不開啓Tiflash的狀況下,相對於3.0的版本性能 提高不太明顯,可是開啓Tiflash副本的話,性能提高特別大,我上面的場景提高了4倍
二、咱們使用Tidb主要是兩個場景,一個是大數據量解決Mysql分庫分表的問題,不須要業務方寫業務邏輯,也不依賴中間件,平滑從Mysql遷移到Tidb;另外一個場景是AP場景,咱們把生產環境的多個庫經過DM匯聚到Tidb集羣作報表、統計相關業務
三、Tidb 4.0,最吸引個人就是數據存儲同時支持行存(tikv)+列存(tiflash),而且能夠獨立分開部署,相互不影響,用戶無需關係本身的查詢是AP仍是TP,Tidb會本身判斷
四、4.0畢竟剛RC了幾天,仍是有些小問題的,可是官方響應很積極,我以爲這也是爲啥Tidb能發展這麼好很重要的緣由吧,我測試過程當中遇到幾個問題以下:
a、Tiup部署的時候,Y/N那塊若是輸入一個其餘字符,程序就直接退出了,我以爲這塊應該優化下,判斷用戶輸入的不是Y或者N的話就一直讓用戶輸入,而不是直接退出
b、Tiup用普通用戶部署的時候不成功,個人這個普通用戶從中控機到目標機已經作好了ssh免密碼登陸,而且有sudo權限,這塊也反饋給官方了
c、集羣中止在啓動以後,監控頁面Services Port Status沒數據了,這塊也反饋給官方了
d、4.0和3.0對於only_full_group_by的處理應該是不同了,我3.0和4.0的sql_mode徹底同樣,可是上面的SQL在4.0上沒法執行,這個也反饋給官方大數據

相關文章
相關標籤/搜索