阿里雲原生資料庫POLARDB壓力測試報告
作者:桐碧2018 來源:雲棲社群
原文連結: https://yq.aliyun.com/articles/618651?spm=a2c4e.11153940.bloghomeflow.427.162d291aRoS8gf
POLARDB介紹
POLARDB是阿里雲ApsaraDB資料庫團隊研發的基於雲端計算架構的下一代關係型資料庫,其最大的特色是計算節點(主要做SQL解析以及儲存引擎計算的伺服器)與儲存節點(主要做資料塊儲存,資料庫快照的伺服器)分離,其次,與傳統的雲資料庫一個例項一份資料複製不同,同一個例項的所有節點(包括讀寫節點和只讀節點)都訪問儲存節點上的同一份資料,最後,藉助優秀的RDMA網路以及最新的塊儲存技術,PolarDB的資料備份耗時可以做到秒級別(備份時間與底層資料量無關),這三點相結合,我們可以推斷出POLARDB不但滿足了公有云計算環境下使用者業務快速彈性擴充套件的剛性需求(只讀例項擴充套件時間與底層資料量無關),同時也滿足了網際網路環境下使用者對資料庫伺服器高可用的需求(伺服器當機後無需搬運資料重啟程式即可服務)。
以下測試來自於袋鼠雲技術部。
POLARDB架構
一寫多讀
POLARDB採用分散式叢集架構,一個叢集包含一個主例項和至少一個只讀例項(暫時僅支援一個,用於保障高可用)。主例項處理讀寫請求,只讀例項僅處理讀請求。主例項和只讀例項之間採用Active-Active的Failover方式,提供資料庫的高可用服務。
計算與儲存分離
POLARDB採用計算與儲存分離的設計理念,滿足公有云計算環境下使用者業務彈性擴充套件的剛性需求。資料庫的計算節點(DB Server)僅儲存後設資料,而將資料檔案、Redo Log等儲存於遠端的儲存節點(Chunk Server)。各計算節點之間僅需同步Redo Log相關的後設資料資訊,極大降低了主例項和只讀例項間的延遲,而且在主例項故障時,只讀例項可以快速切換為主伺服器。
讀寫分離
讀寫分離資料庫接入功能,是POLARDB叢集預設免費提供的一個透明、高可用、自適應的負載均衡能力。透過讀寫分離地址,SQL請求自動轉發到POLARDB叢集的各個例項,提供聚合、高吞吐的併發SQL處理能力。
高速鏈路互聯
資料庫的計算節點和儲存節點之間採用高速網路互聯,並透過RDMA協議進行資料傳輸,使得I/O效能不再成為瓶頸。
共享分散式儲存
多個計算節點共享一份資料,而不是每個計算節點都儲存一份資料,極大降低了使用者的儲存成本。基於全新打造的分散式塊裝置和檔案系統,儲存容量可以線上平滑擴充套件,不會受到單機伺服器配置的影響,可應對上百TB級別的資料規模。
資料多副本、Parallel-Raft協議
資料庫儲存節點的資料採用多副本形式,確保資料的可靠性,並透過Parallel-Raft協議保證資料的一致性。
優點:
備份速度快,增加只讀節點速度快。
只讀例項無延遲。
引數
POLARDB預設關閉了doublewrite buffer,關閉了binlog。
壓測方案
使用sysbench oltp標準壓測程式分別壓測讀、寫兩種場景的效能。
環境準備
PolarDB: 8C64G
ECS:2C2G, CentOS 2.7(三臺)
Sysbench 0.5
sysbench安裝
yum -y install mysql-devel
yum -y install automake
yum -y install libtool
wget
unzip 0.5.zip
cd sysbench-0.5
./autogen.sh
./configure
make
cd sysbench
壓測步驟
準備資料
sysbenchpath/sysbench−−test=sysbenchpath/sysbench−−test=sysbench_path/tests/db/oltp.lua --mysql-host=ip−−mysql−port=3306−−mysql−user=ip−−mysql−port=3306−−mysql−user=mysql_user --mysql-password=mysqlpassword−−mysql−db=mysqlpassword−−mysql−db=table_name --mysql-table-engine=innodb --oltp-table-size=[[table_size/10] --oltp-tables-count=$oltp_tables_count -db-driver=mysql prepare
注意事項:
1.如果測試POLARDB不能使用外網連線串(時延高難以達到最佳效能)使用非VPC的內網連線串要達到最佳的效能需要使用3~4臺ECS同時進行壓測才能發揮Polardb最佳效能,使用VPC網路單臺ECS壓測就能達到POLARDB最佳的效能
(建議使用VPC連線串)
2.POLARDB的特點是讀寫分離,sysbench 測試時需要單獨測試讀和寫 ,避免使用讀寫混合sysbench命令測試,這樣能最大的發揮POLARDB的效能優勢,詳細測試命令如下:
壓測寫效能
使用sysbench準備資料,單表1000萬資料,總共100個表,每個表的空間大約2G。
sysbenchpath/sysbench−−test=sysbenchpath/sysbench−−test= sysbenchpath/tests/db/oltp.lua --mysql-host=ip−−oltp−tables−count=ip−−oltp−tables−count=oltp_tables_count --mysql-user=mysqluser−−mysql−password=mysqluser−−mysql−password=mysql_password --mysql-port=3306 --db-driver=mysql --oltp-table-size=[[table_size/10] --mysql-db=tablename−−max−requests=tablename−−max−requests=[tablesize/10]−−max−time=tablesize/10]−−max−time=max_time --oltp_simple_ranges=0 --oltp-distinct-ranges=0 --oltp-sum-ranges=0 --oltporder-ranges=0 --oltp-point-selects=0 --num-threads=$threads --randtype=uniform run
壓測讀效能
壓測選用5個表,每個表1000萬資料,總共1億條資料進行壓測。分表採用1,2,4,8,16,32個併發測試寫入效能。
sysbenchpath/sysbench−−test=sysbenchpath/sysbench−−test= sysbenchpath/tests/db/oltp.lua --mysql-host=ip−−oltp−tables−count=ip−−oltp−tables−count=oltp_tables_count --mysql-user=mysqluser−−mysql−password=mysqluser−−mysql−password=mysql_password --mysql-port=3306 --db-driver=mysql --oltp-table-size=[[table_size/10] --mysql-db=tablename−−max−requests=tablename−−max−requests=[tablesize/10]−−oltpsimpleranges=0−−oltp−distinct−ranges=0−−oltp−sum−ranges=0−−oltp−order−ranges=0−−max−time=tablesize/10]−−oltpsimpleranges=0−−oltp−distinct−ranges=0−−oltp−sum−ranges=0−−oltp−order−ranges=0−−max−time=max_time --oltp-read-only=on --num-threads=$threads run
注:
$sysbench_path:sysbench原始碼位置 $ip資料庫的IP地址者公網連線串 $mysql_user 資料庫使用者名稱 $mysql_password 資料庫密碼 $table_name 資料庫的名字 $oltp_tables_count 資料庫表的數量 $table_size 資料庫表的大小
壓測結果
讀取效能壓測結果
在32個併發的時候,取得了最好的讀區效能,讀取QPS為46813.94,平均SQL響應時間2.05毫秒。
寫效能壓測結果
32個併發的時候,取得了最好的寫入效能,寫QPS為156273.72,平均事物響應時間5.09毫秒。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31473948/viewspace-2168507/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jmeter壓力測試報告 - DEMOJMeter測試報告
- 讓測試事半功倍軟體壓力測試工具分享,壓力測試報告怎麼收費?測試報告
- 軟體壓力測試怎麼做?出具壓力測試報告軟體測評中心測試報告
- 軟體壓力測試流程和測試工具分享,讓你寫壓力測試報告再也不愁測試報告
- 軟體產品為什麼要做壓力測試?壓力測試報告如何獲取?測試報告
- [資料庫]000 - ?Sysbench 資料庫壓力測試工具資料庫
- Redis5 壓力測試結果反饋報告Redis
- 關於資料庫壓力測試的故事資料庫
- NewSQL資料庫壓力測試工具系列——SysbenchSQL資料庫
- 軟體壓力測試有哪些測試流程?軟體測試報告收費情況測試報告
- 一次資料庫壓力測試的故事資料庫
- mysql之 mysql資料庫壓力測試工具(mysqlslap)MySql資料庫
- 使用orastress!進行資料庫壓力測試(zt)AST資料庫
- ORACLE壓力測試Oracle
- laravel壓力測試Laravel
- MACOSXApacheab壓力測試MacApache
- NGINX壓力測試Nginx
- mysqlslap壓力測試MySql
- 壓力測試工具
- 資料庫壓力測試工具tiobench,orion,lmbench,netperf資料庫
- nginx壓力測試方法:Nginx
- 壓力測試指令碼指令碼
- 軟體壓力測試常見流程有哪些?專業出具軟體測試報告公司分享測試報告
- (一)效能測試(壓力測試、負載測試)負載
- RestCloud測試平臺,支援壓力測試RESTCloud
- nosql redis資料庫壓力測試基準工具redis-benchmarkSQLRedis資料庫
- 運維攻堅之jmeter壓力測試報錯運維JMeter
- 壓力測試7分鐘後,開始報NullPointerExceptionNullException
- Apache Bench Web 壓力測試ApacheWeb
- oracle壓力測試之orastress!OracleAST
- 壓力測試工具之FIO
- webbench進行壓力測試Web
- mysqlslap壓力測試介紹MySql
- 壓力測試工具之mysqlslapMySql
- 網站壓力測試工具網站
- Mysql 壓力測試工具sysbenchMySql
- Oracle壓力測試:HammeroraOracle
- Jmeter效能測試 —— 壓力模式JMeter模式