Differences between MyRocks variants

You are viewing an old version of this article. View the current version here.

MyRocks is available in

  • Facebook's MySQL branch (based on MySQL 5.6, upcoming 8.0)
  • MariaDB (10.2 and 10.3)
  • Percona Server 5.7

this page lists differences between these variants.

This is a work in progress. The contents are not final

RocksDB data location

FB and Percona store RocksdDB files in $datadir/.rocksdb. MariaDB puts them in $datadir/#rocksdb. This is more friendly for packaging and OS scripts.

Compression algorithms

  • FB's branch doesn't provide binaries. One needs to compile it with appropriate compression libraries.
  • In MariaDB, available compression algorithms can be seen in @@rocksdb_supported_compression_types variable. The set of supported compression algorithms depends on the platform.
    • On Ubuntu 16.04 (current LTS) it is Snappy,Zlib,LZ4,LZ4HC .
    • On CentOS 7.4 it is Snappy,Zlib.
    • In the bintar tarball it is Snappy,Zlib.
  • Percona Server supports: Zlib, ZSTD, LZ4 (the default), LZ4HC. Not supported algorithms:Snappy, BZip2, XPress.

RocksDB version

  • FB's branch provides rocksdb_git_hash *status* variable.
  • MariaDB provides @@rocksdb_git_hash *system* variable.
  • Percona Server doesn't provide either.

Binlog position in information_schema.rocksdb_global_info

  • FB branch provides information_schema.rocksdb_global_info type=BINLOG, NAME={FILE, POS, GTID}.
  • Percona Server doesn't provide it
  • MariaDB doesn't provide it.

One use of that information: One can take the output of myrocks_hotbackup and make it a new master.

Gap Lock Detector

  • FB branch has a "Gap Lock Detector" feature. It is at SQL layer. It can be controlled with gap_lock_XXX variables and is disabled by default (gap-lock-raise-error=false, gap-lock-write-lock=false).
  • Percona Server has gap lock checking ON but doesn't seem to have any way to control it? Queries that use Gap Lock on MyRocks fail with an error like this:
mysql> insert into tbl2 select * from tbl1;
ERROR 1105 (HY000): Using Gap Lock without full unique key in multi-table or multi-statement transactions
is not allowed. You need to either rewrite queries to use all unique key columns in WHERE equal conditions,
or rewrite to single-table, single-statement transaction.  Query: insert into tbl2 select * from tbl1
  • MariaDB doesn't include Gap Lock Detector.

Details

The above comparison was made using

  • FB/MySQL 5.6.35
  • Percona Server 5.7.20-19-log
  • MariaDB 10.2.13 (MyRocks is beta)

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.