Skip to content

FlashSQL/mysql-57-nvdimm-caching

This branch is 5 commits behind JonghyeokPark/mysql-57-nvdimm-caching:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3489f0a · Sep 4, 2020

History

69 Commits
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Sep 4, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
May 15, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Mar 20, 2020
Aug 27, 2020
Mar 20, 2020
Sep 2, 2020
Mar 20, 2020
Mar 20, 2020
Jun 5, 2020
Jul 16, 2020

Repository files navigation

NVDIMM Caching for MySQL 5.7

Optimize MySQL/InnoDB using NVDIMM

Build and install

  1. Clone the source code:
$ git clone https://github.com/meeeejin/mysql-57-nvdimm-caching.git
  1. Modify the PASSWD value in the build script:
$ vi build.sh

#!/bin/bash

BASE_DIR=`pwd -P`
BUILD_DIR=$BASE_DIR/bld
PASSWD="sudo-passwd"
...
  1. Run the script file:
$ ./build.sh

The above command will compile and build the source code with the default option (i.e., caching new-orders and order-line pages). The available options are:

Option Description
--origin No caching (Vanilla version)
--origin-monitor No caching but monitoring the flush status
--nc Caching New-Orders and Order-Line pages (default)
--nc-st Caching New-Orders, Order-Line and Stock pages
--nc-st-od Caching New-Orders, Order-Line, Stock and Orders pages
--mtr Caching New-Orders, Order-Line, Stock and Orders pages with mtr logging enabled

If you want the vanilla version, you can run the script as follows:

$ ./build.sh --origin

Run

  1. Add the following three server variables to the my.cnf file:
System Variable Description
innodb_use_nvdimm_buffer Specifies whether to use NVDIMM cache. true or false.
innodb_nvdimm_buffer_pool_size The size in bytes of the NVDIMM cache. The default value is 2GB.
innodb_nvdimm_buffer_pool_instances The number of regions that the NVDIMM cache is divided into. The default value is 1.
innodb_nvdimm_pc_threshold_pct Wakeup the NVDIMM page cleaner when this % of free pages remaining. The default value is 5.
innodb_nvdimm_home_dir NVDIMM-aware files resident directory

For example:

$ vi my.cnf
...
innodb_use_nvdimm_buffer=true
innodb_nvdimm_buffer_pool_size=2G
innodb_nvdimm_buffer_pool_instances=1
innodb_nvdimm_pc_threshold_pct=5
innodb_nvdimm_home_dir=/mnt/pmem
...
  1. Run the MySQL server:
$ ./bld/bin/mysqld --defaults-file=my.cnf

Releases

No releases published

Packages

No packages published

Languages

  • C++ 53.6%
  • C 21.2%
  • JavaScript 14.5%
  • Java 3.0%
  • CSS 1.8%
  • Perl 1.0%
  • Other 4.9%