Skip to content

gitzhqian/HDBMSengine

 
 

Repository files navigation

HDBMS

HDBMS is a testbed for different storage layouts.

This testbed is based on the DBx1000 system, whose concurrency control scalability study can be found in the following paper:

[1] Xiangyao Yu, George Bezerra, Andrew Pavlo, Srinivas Devadas, Michael Stonebraker, Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores, VLDB 2014

Build & Test

To build the database.

make -j

To test the database

python test.py

Configuration

DBMS configurations can be changed in the config.h file. Please refer to README for the meaning of each configuration. Here we only list several most important ones.

THREAD_CNT        : Number of worker threads running in the database.
WORKLOAD          : Supported workloads include YCSB and TPCC
CC_ALG            : Concurrency control algorithm. Seven algorithms are supported 
                    (DL_DETECT, NO_WAIT, HEKATON, SILO, TICTOC) 
MAX_TXN_PER_PART  : Number of transactions to run per thread per partition.

Configurations can also be specified as command argument at runtime. Run the following command for a full list of program argument.

./rundb -g 

Run

The DBMS can be run with

./rundb

Outputs

txn_cnt: The total number of committed transactions. This number is close to but smaller than THREAD_CNT * MAX_TXN_PER_PART. When any worker thread commits MAX_TXN_PER_PART transactions, all the other worker threads will be terminated. This way, we can measure the steady state throughput where all worker threads are busy.

abort_cnt: The total number of aborted transactions. A transaction may abort multiple times before committing. Therefore, abort_cnt can be greater than txn_cnt.

run_time: The aggregated transaction execution time (in seconds) across all threads. run_time is approximately the program execution time * THREAD_CNT. Therefore, the per-thread throughput is txn_cnt / run_time and the total throughput is txn_cnt / run_time * THREAD_CNT.

time_{wait, ts_alloc, man, index, cleanup, query}: Time spent on different components of DBx1000. All numbers are aggregated across all threads.

time_abort: The time spent on transaction executions that eventually aborted.

latency: Average latency of transactions.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 68.7%
  • Makefile 20.8%
  • C 5.3%
  • CMake 4.8%
  • Python 0.4%