YCSB benchmark, AntsDB beats mainstream relational databases by more than 100%
Introduction
YCSB stands for Yahoo! Cloud Serving Benchmark. It is the de facto database benchmark today. It supports a wide range of database types with a pluggable architecture that can be easily expanded to measure new database technologies.
Benchmark Methods
The benchmark used 30 million records data volume. Each record is 1 KiB in size. We used 4 benchmark workloads provided by YCSB.
- Loading benchmark – loading 30 m records into an empty database. It is used to measure the data import performance.
- Read only benchmark – it is used to measure analytic performance of a database
- Read heavy (90% read 10% write) – it is used to measure the performance of user interactive applications.
- Write heavy (50% read 50% write) – it is used to measure the performance of batch processing applications.
Benchmark Setup
The benchmark was performed on Amazon AWS EC2 i3.4xlarge instance. Below is the summary of the system configuration.
CPU | Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz, 8 cores, 16 threads |
Memory | 122 GiB |
Storage | 1.7T * 2 NVMe SSD |
Operating System | CentOS 7.4.1708 |
Comparing Database | MySQL 5.5.56, PostgreSQL 9.2.23, Database O 12.2.0.1.0, AntsDB 18.05.02 |
Java | 1.8.0_161-b14 |
Database Configuration
AntsDB | humpback.space.file.size=256 humpback.tablet.file.size=1073741824 |
MySQL | innodb_file_per_table=true innodb_file_format=Barracuda innodb_buffer_pool_size=50G innodb_flush_log_at_trx_commit=0 max_connections=200 |
PostgreSQL | shared_buffers = 30GB bgwriter_delay = 10ms synchronous_commit = off effective_cache_size = 60GB |
Database O | MEMORY_TARGET=50g |
Loading Test
The data was imported into database using 16 threads. Unit of measurement is records/second.
Read Only Test
The test was conducted using different number of threads. All tested databases achieved the highest throughput with 24 threads as show in the diagram below. Unit of measurement is transactions/second.
Read Heavy Test
The test was conducted using different number of threads. All tested databases achieved the highest throughput with 24 threads as show in the diagram below. Unit of measurement is transactions/second.
Write Heavy Test
The test was conducted using different number of threads. All tested databases achieved the highest throughput with 24 threads as show in the diagram below. Unit of measurement is transactions/second.
Conclusion
AntsDB has a clear lead over the other popular databases across all test categories. Internally, AntsDB has adopted a design vastly different from the traditional database engines. The locking is achieved using CPU level atomic operation. Files are organized using Log Structured Merge Tree. Index is implemented using lockless skip list. All disk I/O is done using memory mapped file. These techniques all together shows a significant advantage.
Due to the resource constraint, both the database server and test software ran on the same hardware so that part of the system resource were consumed by the benchmarking program. It is less perfect because in reality applications and database are likely to run on different machines. However we are expecting better performance with a dedicated database server.
Leave a Reply