mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
124 lines
4.4 KiB
Markdown
124 lines
4.4 KiB
Markdown
|
PerconaFT
|
||
|
======
|
||
|
|
||
|
PerconaFT is a high-performance, transactional key-value store, used in the
|
||
|
TokuDB storage engine for Percona Server and MySQL, and in TokuMX, the
|
||
|
high-performance MongoDB distribution.
|
||
|
|
||
|
PerconaFT is provided as a shared library with an interface similar to
|
||
|
Berkeley DB.
|
||
|
|
||
|
To build the full MySQL product, see the instructions for
|
||
|
[Percona/tokudb-engine][tokudb-engine]. To build TokuMX, see the instructions
|
||
|
for [Percona/percona-server-mongodb][mongo]. This document covers PerconaFT only.
|
||
|
|
||
|
[tokudb-engine]: https://github.com/Percona/tokudb-engine
|
||
|
[mongo]: https://github.com/Percona/percona-server-mongodb
|
||
|
|
||
|
|
||
|
Building
|
||
|
--------
|
||
|
|
||
|
PerconaFT is built using CMake >= 2.8.9. Out-of-source builds are
|
||
|
recommended. You need a C++11 compiler, though only GCC >= 4.7 and
|
||
|
Apple's Clang are tested. You also need zlib development packages
|
||
|
(`yum install zlib-devel` or `apt-get install zlib1g-dev`).
|
||
|
|
||
|
You will also need the source code for jemalloc, checked out in
|
||
|
`third_party/`.
|
||
|
|
||
|
```sh
|
||
|
git clone git://github.com/Percona/PerconaFT.git percona-ft
|
||
|
cd percona-ft
|
||
|
git clone git://github.com/Percona/jemalloc.git third_party/jemalloc
|
||
|
mkdir build
|
||
|
cd build
|
||
|
CC=gcc47 CXX=g++47 cmake \
|
||
|
-D CMAKE_BUILD_TYPE=Debug \
|
||
|
-D BUILD_TESTING=OFF \
|
||
|
-D USE_VALGRIND=OFF \
|
||
|
-D CMAKE_INSTALL_PREFIX=../prefix/ \
|
||
|
..
|
||
|
cmake --build . --target install
|
||
|
```
|
||
|
|
||
|
This will build `libtokudb.so` and `libtokuportability.so` and install it,
|
||
|
some header files, and some examples to `percona-ft/prefix/`. It will also
|
||
|
build jemalloc and install it alongside these libraries, you should link
|
||
|
to that if you are planning to run benchmarks or in production.
|
||
|
|
||
|
### Platforms
|
||
|
|
||
|
PerconaFT is supported on 64-bit Centos, should work on other 64-bit linux
|
||
|
distributions, and may work on OSX 10.8 and FreeBSD. PerconaFT is not
|
||
|
supported on 32-bit systems.
|
||
|
|
||
|
[Transparent hugepages][transparent-hugepages] is a feature in newer linux
|
||
|
kernel versions that causes problems for the memory usage tracking
|
||
|
calculations in PerconaFT and can lead to memory overcommit. If you have
|
||
|
this feature enabled, PerconaFT will not start, and you should turn it off.
|
||
|
If you want to run with transparent hugepages on, you can set an
|
||
|
environment variable `TOKU_HUGE_PAGES_OK=1`, but only do this for testing,
|
||
|
and only with a small cache size.
|
||
|
|
||
|
[transparent-hugepages]: https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-memory-transhuge.html
|
||
|
|
||
|
|
||
|
Testing
|
||
|
-------
|
||
|
|
||
|
PerconaFT uses CTest for testing. The CDash testing dashboard is not
|
||
|
currently public, but you can run the tests without submitting them.
|
||
|
|
||
|
There are some large data files not stored in the git repository, that
|
||
|
will be made available soon. For now, the tests that use these files will
|
||
|
not run.
|
||
|
|
||
|
In the build directory from above:
|
||
|
|
||
|
```sh
|
||
|
cmake -D BUILD_TESTING=ON ..
|
||
|
ctest -D ExperimentalStart \
|
||
|
-D ExperimentalConfigure \
|
||
|
-D ExperimentalBuild \
|
||
|
-D ExperimentalTest
|
||
|
```
|
||
|
|
||
|
|
||
|
Contributing
|
||
|
------------
|
||
|
|
||
|
Please report bugs in PerconaFT to the [issue tracker][jira].
|
||
|
|
||
|
We have two publicly accessible mailing lists for TokuDB:
|
||
|
|
||
|
- tokudb-user@googlegroups.com is for general and support related
|
||
|
questions about the use of TokuDB.
|
||
|
- tokudb-dev@googlegroups.com is for discussion of the development of
|
||
|
TokuDB.
|
||
|
|
||
|
and two for TokuMX:
|
||
|
|
||
|
- tokumx-user@googlegroups.com is for general and support related
|
||
|
questions about the use of TokuMX.
|
||
|
- tokumx-dev@googlegroups.com is for discussion of the development of
|
||
|
TokuMX.
|
||
|
|
||
|
All source code and test contributions must be provided under a [BSD 2-Clause][bsd-2] license. For any small change set, the license text may be contained within the commit comment and the pull request. For larger contributions, the license must be presented in a COPYING.<feature_name> file in the root of the PerconaFT project. Please see the [BSD 2-Clause license template][bsd-2] for the content of the license text.
|
||
|
|
||
|
[jira]: https://tokutek.atlassian.net/browse/FT/
|
||
|
[bsd-2]: http://opensource.org/licenses/BSD-2-Clause/
|
||
|
|
||
|
|
||
|
License
|
||
|
-------
|
||
|
|
||
|
PerconaFT is available under the GPL version 2, and AGPL version 3, with slight modifications.
|
||
|
See [COPYING.AGPLv3][agpllicense],
|
||
|
[COPYING.GPLv2][gpllicense], and
|
||
|
[PATENTS][patents].
|
||
|
|
||
|
[agpllicense]: http://github.com/Perona/PerconaFT/blob/master/COPYING.AGPLv3
|
||
|
[gpllicense]: http://github.com/Perona/PerconaFT/blob/master/COPYING.GPLv2
|
||
|
[patents]: http://github.com/Perona/PerconaFT/blob/master/PATENTS
|