How Alibaba Cloud RDS Outperforms Tencent and AWS in MySQL Benchmarks
This article presents a detailed MySQL performance benchmark of Alibaba Cloud RDS, Tencent Cloud RDS, and AWS RDS using sysbench, analyzes configuration differences, shows results across mixed, read‑only, and no‑index update workloads, and offers practical recommendations for cloud database tuning.
1. Introduction
MySQL performance benchmarking may look simple with sysbench or tpcc, but it is a technical activity, especially when comparing performance across different cloud providers because parameter settings differ. Without clarifying configuration differences, results can be misleading.
This article benchmarks three mainstream cloud databases, focusing on QPS and TPS under various load scenarios. The results are not intended as purchase advice.
2. Benchmark
2.1 Instance Information
Alibaba Cloud RDS instance configuration:
Tencent Cloud RDS instance configuration:
AWS RDS instance configuration:
To keep default parameters comparable, the high‑availability, high‑performance template was selected. The key differences are the sync_binlog and innodb_flush_log_at_trx_commit settings, known as the “dual‑1 mode”.
2.2 Benchmark Model
Tool version: sysbench 0.5
Concurrency levels: 24 48 72 96 120 144 168 192 256 512 1024 Three classic sysbench scenarios were used:
Read‑write mixed mode (OLTP) for general workloads.
Read‑only mode (primary‑key selects) for read‑heavy workloads.
No‑index update mode (pure writes) to evaluate TPS.
Read‑Write Mixed Mode
Command:
sysbench --test=/opt/sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 --mysql-db=sysbench --mysql-user=sysbench --mysql-password=xxxx --mysql-host=xxxx --mysql-port=3306 --max-time=300 --max-requests=0 --num-threads=$i run
Read‑Only Mode
Command:
sysbench --test=/opt/sysbench/share/sysbench/select.lua --oltp-tables-count=10 --oltp-table-size=5000000 --mysql-db=sysbench --mysql-user=sysbench --mysql-password=xxxx --mysql-host=xxxx --mysql-port=3306 --max-time=300 --max-requests=0 --num-threads=$i run
No‑Index Update
Command:
sysbench --test=/opt/sysbench/share/sysbench/ update_non_index .lua --oltp-tables-count=10 --oltp-table-size=5000000 --mysql-db=sysbench --mysql-user=sysbench --mysql-password=xxxx --mysql-host=xxxx --mysql-port=3306 --max-time=300 --max-requests=0 --num-threads=$i --oltp-test-mode=complex run
3. Benchmark Results Comparison
3.1 Scenario 1 – Read‑Write Mixed Mode
In this scenario Alibaba Cloud RDS outperforms Tencent Cloud RDS and AWS RDS, with QPS about 50‑100% higher and TPS about 60‑90% higher. AWS RDS is roughly 20‑30% faster than Tencent Cloud RDS.
3.2 Scenario 2 – Read‑Only Mode
Under read‑only load, Alibaba Cloud RDS performance is about twice that of Tencent Cloud RDS and AWS RDS.
3.3 Scenario 3 – No‑Index Update
Alibaba Cloud RDS exceeds the other two by 30‑200%. Its performance remains stable as concurrency rises, while Tencent Cloud RDS degrades, likely due to the thread pool being disabled.
4. Potential Influencing Factors
Factors such as MySQL code design, host CPU, disk configuration, RAID controller, MySQL parameters, and network latency affect throughput. For cloud users, most of these are black boxes; only MySQL‑related parameters can be tuned.
Key parameter comparisons:
innodb_buffer_pool_size: Alibaba 24G, Tencent 22G, AWS 24G
binlog size: Alibaba 1.46G, Tencent 1G, AWS 128M (small size may cause performance jitter on AWS)
redo log buffer: Alibaba 8M, Tencent 64M, AWS 8M
innodb_io_capacity: Alibaba 20000, Tencent 20000, AWS 200
innodb_read_io_threads / innodb_write_io_threads: Alibaba 4, Tencent 12, AWS 4
performance_schema: OFF for all
Replication mode: Alibaba async, Tencent async, AWS single‑instance
Thread pool: enabled on Alibaba, disabled on Tencent and AWS
sync_binlog: Alibaba 1000, Tencent 0, AWS 1000
innodb_flush_log_at_trx_commit: 2 for all
Enabling the thread pool on MySQL improves stability under high concurrency.
Explanation of innodb_flush_log_at_trx_commit and sync_binlog settings:
innodb_flush_log_at_trx_commit
If set to 0, the log buffer is written to the log file each second and flushed to disk simultaneously; no disk flush occurs on transaction commit.
If set to 1, MySQL writes the log buffer to the log file and flushes to disk on every commit.
If set to 2, MySQL writes the log buffer to the log file on each commit but flushes to disk only once per second. When sync_binlog=0, MySQL relies on the OS to flush the binary log.
When sync_binlog=N (N>0), MySQL calls fdatasync() after every N writes to the binary log.Choosing a high‑performance version may sacrifice some data safety; users can adjust the parameters via console or tickets.
5. Issues Encountered
During AWS RDS testing, sysbench with 10 tables and 512‑1024 concurrency occasionally failed; increasing connect_timeout mitigated the issue. Tests with 50 or 250 tables succeeded. Alibaba and Tencent RDS did not exhibit initialization failures under high concurrency.
6. Conclusion
Across all three scenarios—read‑write mixed, read‑only, and no‑index update—Alibaba Cloud RDS delivers superior performance compared to Tencent Cloud RDS and AWS RDS, and its performance remains stable as concurrency increases.
Recommendations for cloud users:
Enable the thread pool and increase binlog size (e.g., 1 GB) to avoid performance jitter.
Pay attention to sync_binlog and innodb_flush_log_at_trx_commit values.
Use a newer sysbench version (e.g., 1.0) and create more than 20 tables to avoid initialization failures on AWS.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
