0、導讀
有幸搶鮮測試AliSQL,直接拿來和MySQL 5.7.15對比看看。
AliSQL剛宣布開源,我就送出申請内測名額,節前收到開放内測邀請,于是第一時間進行了測試了解,希望能給大家提供一些參考。
1、關于性能
本次僅用sysbench進行測試,還沒用tpcc做對比,是以測試方案不是太周全。稍後會再釋出tpcc的測試結果。
a、sysbench采用update_non_index.lua模式測試
線程 | AliSQL 5.6.23 | MySQL 5.7.15 | AliSQL相差 |
1 | 2384.99 | 2172.45 | 9.78% |
4 | 6392.04 | 11475.61 | -44.30% |
8 | 10781.69 | 18765.36 | -42.54% |
16 | 14847.25 | 27756.24 | -46.51% |
32 | 26530.64 | 41177.23 | -35.57% |
64 | 36597.29 | 43200.26 | -15.28% |
128 | 50057.16 | 32112.42 | 55.88% |
256 | 63442.05 | 15339.18 | 313.59% |
512 | 60722.04 | 14086.69 | 331.06% |
b、sysbench采用oltp.lua模式測試
187.36 | 224.90 | -16.69% | |
1019.45 | 1292.53 | -21.13% | |
2090.41 | 2569.53 | -18.65% | |
3418.05 | 4812.92 | -28.98% | |
4803.45 | 6746.86 | -28.80% | |
4976.63 | 6946.87 | -28.36% | |
5028.68 | 6924.69 | -27.38% | |
5056.80 | 6799.06 | -25.63% | |
5094.08 | 6233.34 | -18.28% |
從測試結果來看,AliSQL在sysbench的update_non_index方案下并發超過64線程後就呈現優勢了。不過在olto模式下,一直沒有優勢(有可能在更高并發模式下會扳回來,以後有機會再驗證)。
請教了下丁奇,原來AliSQL特别針對寫多讀少的業務場景模式進行了優化,是以在AliSQL的github官網上才建議采用update_non_index模式進行對比測試。
備注0:為什麼選擇MySQL 5.7.15版本進行對比測試
MySQL 5.7已經GA,也到了15小版本。有些比較激進的5.7剛出來沒多久就已經用上了,當5.7在性能和功能上都有很大優勢時,我們為什麼不選用呢?這就是我為什麼直接選擇5.7.15來進行對比的原因。
等我做完tpcc測試後,有可能也會拿官方或Percona 5.6版本再做個對比測試。
備注1:sysbench測試方案
--max-requests=0
--max-time=900
--oltp_tables_count=20
--oltp_table_size=200000
--report-interval=10
--num-threads=$count
--oltp-read-only=off
--rand-type=uniform
備注2:測試機配置
CPU: Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
OS kernel: CentOS 7.2.1511, 3.10.0-327.28.3.el7.x86_64
Memory: 96G
Disk: PCIe SSD
2、關于功能
AliSQL此次開源的版本,新增了下面這些功能:
1. SELECT FOR UPDATE WAIT
2. THD memory usage monitor
3. DDL fast fail
4. Support big column compress
5. Innodb_rseg table to display the rollback information.
6. Thread running control
7. Kill idle transactions
8. table/index statistics
9. Throttle InnoDB IOPS for sql statement
10. SQL filter
11. Relax gtid limitation for some statements
這些功能都是非常實用的,尤其是對類似電商或提供RDS服務的平台幫助非常大。不過,我們也注意到這裡面有些功能在MariaDB/Percona分支版本中同樣具備或能找到替代方案。
此外,它在性能方面所做的改善有:
1、redo log寫優化
2、部分鎖拆分等優化
3、內建了jemalloc
4、衆多InnoDB優化工作,包括合并AIO請求,buffer pool優化、并發線程控制優化、隻讀事務優化、InnoDB表鎖優化、自适應哈希索引(AHI)優化等等
5、GTID優化
能看得出來,這些優化工作也确确實實是從日常的業務痛點中得到的體驗所做出來的改變。
3、寫在最後
最後我想說的是,AliSQL這次開源的姿态不錯,不過還是沒達到之前的預期,放出來的版本至少從功能上看還是有些保留的,期待未來的版本能更具誘惑力,嘿。
至于是否選用AliSQL,我想這是個見仁見智的問題。被MySQL 5.7新特性吸引的話,我想是時候開始嘗鮮了。如果不想用MySQL 5.7的話,AliSQL相比MySQL 5.6還是有很大優勢的,和MariaDB/Percona相比,也是有一些優勢的。
無論如何,我們還是要感謝AliSQL帶給我們的新選擇。
參考:
AliSQL GitHub官網:
https://github.com/alibaba/AliSQL(目前還是私有項目)
未完待續......