FlashSQL / MySQL-Data-Redistribution

Data Redistribution on MySQL

Repository from Github https://github.comFlashSQL/MySQL-Data-RedistributionRepository from Github https://github.comFlashSQL/MySQL-Data-Redistribution

MySQL Data Redistribution

Publication

  • Bohyun Lee, Mijin An, Sangwon Lee, "A Case for Space Compaction of B-Tree Nodes on Flash Storage", IEEE Access Vol. 10 2022, April 2023
  • Publication Link

Motivation

While B-Tree is a ubiquitous index structure used in managing data, it is well known for its low space utilization in nodes. Such space under-utilization is detrimental to flash storage in terms of cost and performance. In particular, the logical space waste in B-tree will amplify physical writes inside flash storage, worsening the transaction throughput.

Contribution

Our evaluation results from running OLTP benchmarks(TPC-C) using the data redistribution MySQL clearly show that those optimizations improve transaction throughput (i.e., more than 50%) with less space and cost (i.e., less than 40%) in flash storage. Also the overall index space utilization is improved.

Prerequisites & Installation Guide

  1. Install prerequisites of mysql-5.6.26. Follow the instructions in the site.
  2. Clone this repository.
$ git clone https://github.com/FlashSQL/MySQL-Data-Redistribution.git
  1. Run mysqld server to run MySQL.
  2. Compare with Vanilla MySQL and see how table size changes

Implementation Details about Data Redistritbution

  • reserved free space are applied according to the record sizes and update pattern
  • added a new function in btr0btr.cc: btr_page_redistribute_before_split()
  • returns the inserted record
  • btr_page_redistribute_before_split() is called during btr_page_split_and_insert()(btr0btr.cc) before split is performed
  • modifications in srv0srv and fil0fil are for adding table id and table name

Future Work

We are planning to create additonal branches (MySQL-5.7, MySQL-5.8) for porting.

References

About

Data Redistribution on MySQL

License:Other


Languages

Language:C++ 56.6%Language:C 32.0%Language:Java 3.6%Language:Perl 2.6%Language:Roff 1.1%Language:NASL 0.8%Language:Yacc 0.7%Language:CMake 0.7%Language:Shell 0.6%Language:Objective-C 0.5%Language:Pascal 0.2%Language:HTML 0.2%Language:Python 0.1%Language:GAP 0.1%Language:PHP 0.1%Language:Makefile 0.1%Language:SWIG 0.0%Language:Lex 0.0%Language:M4 0.0%Language:Scilab 0.0%Language:JavaScript 0.0%Language:Batchfile 0.0%Language:SourcePawn 0.0%Language:POV-Ray SDL 0.0%Language:Assembly 0.0%Language:Awk 0.0%Language:Pawn 0.0%Language:Visual Basic 6.0 0.0%