1. 程式人生 > >如何選擇合適的數據庫?

如何選擇合適的數據庫?

val action 應該 同學 很難 自己 監控 歷史記錄 真心

如何選擇合適的數據庫?

雲數據庫這個新大陸,並且對比了騰訊雲數據庫和自建數據庫的性能,發現在不對自建數據庫進行優化的前提下,雲數據庫相比較自建數據庫還是有很大性能上的優勢的。

拿雲數據庫跟自建數據庫比,不是開玩笑嗎。確實,雲數據庫跟自建數據庫在具體的硬件配置上沒法完全統一,比如硬盤是普通磁盤還是SSD,網絡帶寬跟穩定性是否有差異等。於是萌生了一個想法,借了朋友的阿裏雲賬號,來看看同樣都是雲數據庫,同樣配置的情況下,阿裏雲和騰訊雲各自能給出多優秀的答卷。

同樣的,這次選擇了阿裏雲數據庫RDS的4核8G和8核32G版本,對比同樣配置的騰訊雲數據庫,在不修改參數、不做配置改動的前提下,使用sysbench進行分別進行壓力測試,詳細配置如下表所示:

對象

內存

CPU

硬盤

CVM操作系統

MySQL版本

sysbench版本

阿裏雲

8G/32G

4核/8核

200G雲盤

CentOS 7.2 64位

5.7

1.0.9

騰訊雲

8G/32G

4核/8核

200G雲盤

CentOS 7.6 64位

5.7

1.0.9

為了保證公平公正,需要控制大部分變量,包括用來進行測試的雲主機的軟硬件配置和網絡帶寬(均通過內網連接)。接下來就可以進行測試了,這次測試的數據依然是由sysbench自動生成,20張表x1000萬行數據,線程數從20-500,每組測試兩次取平均值,依然采用讀寫混合的模式比較QPS和TPS等性能參數指標。

結果比想象的有趣,騰訊雲在50線程以下的時候表現超出阿裏雲太多,維持在1.5-2倍,在100-200線程的時候,騰訊雲的吞吐量維持在阿裏雲的1.2倍左右,但是阿裏雲對並發能力的支持效果好過騰訊雲。在500線程的時候,阿裏雲依然能保持在46000+並發的水平,遠高於騰訊雲的28000+。

看起來整體走勢基本相同,騰訊雲數據庫的峰值表現在50-100線程之間,不過騰訊雲數據庫的性能力真心強啊,最好的時候甩了阿裏雲一倍以上。在32G內存的支持下,阿裏雲和騰訊雲並發性能也有了提升,在500線程的時候阿裏雲一直保持恐怖的穩定,筆者特地又加測了750和1000線程,知道1000線程時阿裏雲仍保持70000+的QPS,不過騰訊雲也不甘示弱,維持在60000的高水平。

TPS(Transactions Per Second)表示服務器每秒處理的事務,因為跟事務掛鉤,也是MySQL在OLTP場景一個非常重要的測量指標。整體來看,騰訊雲的可用性高於阿裏雲,不過對多線程的支持上還是較阿裏雲稍差一些。

此外還比較了延時等其他穩定性指標,騰訊雲跟阿裏雲基本相同,因為篇幅問題就不在文章中貼圖了,感興趣的同學也可以自己動手測一下。

另外要給阿裏雲開發小哥哥們提個建議,在測試過程中,使用阿裏雲主機的遠程連接Web版輸入長指令實在是太痛苦了,一旦輸入就很難修改,往往要刪掉重來。另外遠程連接的反應很慢,而且屏幕一滾動就開始顯示亂碼,建議開發小哥哥們改進一下。

不過這裏要稱贊一下阿裏雲數據庫的性能監控,做的實在是高大上,看著很舒心.

在測試的時候可以實時監控QPS/TPS,還有連接數和網絡,比起看sysbench的平均數據信息量大多了,可以看到的性能的抖動。還可以翻歷史記錄。到這裏才發現,原來雲數據庫賣的可不僅僅是數據庫,還有數據管理、性能監控、系統告警等等功能呢,這下明白朋友公司為什麽要用雲數據庫了。不說了,找老板聊聊去。

最後還是要給出一個結論,通過的簡單測試,發現MySQL的吞吐量性能(QPS/TPS),在較低線程數的時候騰訊雲遠好於阿裏雲,隨著線程數增加,騰訊雲數據庫在性能上增長不及阿裏雲,但總體仍強於阿裏雲,在500線程+的戰場,騰訊雲落後於阿裏雲。不過隨著硬件配置增長,二者對並發的支持也在不斷增加,到8核32G內存往上,騰訊雲跟阿裏雲在高並發場景下差距已經不大。

把測試結果給朋友看,朋友翻了個白眼:“高並發還用什麽MySQL,那時候應該用Redis啦。”

什麽?Redis,不熟啊,有沒有雲數據庫Redis版給玩一下。一搜,嘿,還真有,下次來測一下Redis。

如何選擇合適的數據庫?