暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MyRocks VS Xenon TokuDB 性能测试

云DB 2017-03-09
1173

1、介绍

MyRocks  是Facebook公司推出的一个高压缩,高性能写入的MySQL分支。

项目地址: https://github.com/facebook/mysql-5.6

   基于RocksDB开发 MyRocks = MySQL + Rocks引擎

   支持zst压缩算法


Xenon TokuDB是对Percona公司的TokuDB进行Patch优化。 

项目地址: https://github.com/XeLabs/tokudb

   引入的优化点:

  • 支持xtrabackup直接备份  https://github.com/XeLabs/tokudb-xtrabackup  打过针对TokuDB备份的Patch的分支。 

  • 加入ZST压缩算法(From MyRocksDB)

  • 支持binlog group commit

  • 引入性能计数器 show engine tokudb status ,更多选项。


2、测试方法说明

  • 基本环境

基于某云环境: 高性能主机,

操作系统 ubuntu  16 core 16G内存, 1T 高速盘。 


  • MySQL版本

MyRocks :   版本库最新版本 MySQL-5.6.30  

xenon-tokudb :基于Percona-server-5.7.17 增加优化参考介绍中。


  • MyRocks配置

rocksdb

default-storage-engine=rocksdb

skip-innodb

default-tmp-storage-engine=MyISAM

binlog_format=ROW

collation-server=utf8_bin

transaction-isolation=READ-COMMITTED


rocksdb_max_open_files=-1

rocksdb_base_background_compactions=1

rocksdb_max_background_compactions=8

rocksdb_max_total_wal_size=1G

rocksdb_max_background_flushes=4

rocksdb_block_size=16384

rocksdb_block_cache_size=8G

rocksdb_table_cache_numshardbits=6


# rate limiter

rocksdb_bytes_per_sync=4194304

rocksdb_wal_bytes_per_sync=4194304

rocksdb_rate_limiter_bytes_per_sec=104857600 #100MB/s


# triggering compaction if there are many sequential deletes

rocksdb_compaction_sequential_deletes_count_sd=1

rocksdb_compaction_sequential_deletes=199999

rocksdb_compaction_sequential_deletes_window=200000


rocksdb_default_cf_options=write_buffer_size=128m;target_file_size_base=32m;max_bytes_for_level_base=512m;level0_file_num_compaction_trigger=4;level0_slowdown_writes_trigger=10;level0_stop_writes_trigger=15;max_write_buffer_number=4;compression_per_level=kNoCompression:kNoCompression:kNoCompression;bottommost_compression=kZlibCompression;compression_opts=-14:1:0;block_based_table_factory={cache_index_and_filter_blocks=1;filter_policy=bloomfilter:10:false;whole_key_filtering=1};level_compaction_dynamic_level_bytes=true;optimize_filters_for_hits=true

rocksdb_override_cf_options=cf_link_pk={prefix_extractor=capped:20};rev:cf_link_id1_type={prefix_extractor=capped:20}


  • tokudb配置参数

    loose_tokudb_cache_size=8G

    loose_tokudb_directio=ON

  • loose_tokudb_fsync_log_period=1000

    tokudb_commit_sync=0


 

  • 测试方法:

    •  insert 2千万记录测试(使用iibench.py)

      python ./iibench.py --db_host=192.168.0.2 --db_port=3306 --db_user=wubx --db_password=wubxwubx --db_name=wubx --engine=TokuDB --table_name=wubx --max_rows=20000000 --rows_per_report=100000 --secondary_indexes=1 --insert_only  --setup


      (对这个脚本感兴趣的可以加作者QQ/WeiXin: 82565387  更多测试也可以一块交流。)


      (一个测试下来,距离企望差别太远,就没在继续了,希望有了解的朋友联系我,给指出来可以提善的地方)


3、测试结果对比

  • 在tokudb_cache_size = 8G 下 insert 2千万记录

     MyRocks的大小统计,我是统计了$datadir/.rocksdb下的sst文件,因为就创建了一张表,所以就统计一下这里的SST文件大(正确度待定)


  • 按insert 10万记一次写入速度,大概情况参考:



4、总结

     本次测试MyRocks并没有让人眼前一亮,反而带来的很多失望。 性能是一方面,有可能是现在对MyRocks不了解,没办法做更多的优化。主要失望是:官方在文档方面真的太弱了,努力空间无限。

     另外对MyRocks的文件管理方面也是看着有种太Low的感觉一推的SST文件,难以区别属于那个表。目前来看MyRocks到真正的成熟,路线还比较久远。

     从性能测试上来看Xenon-TokuDB比MyRocks差不多高出来40%以上。 

     但对MyRocks有一点值的表杨的就是性能吞吐非常的稳定。没有大波动,数据文件更小一点,优势不明显。期待MyRocks发展的更快。

    BTW: 如果想进行MyRocks测试的同学,请下载版本库里的文件,不要下载他们放出来的Release包(Too old)

5、参考

      关于MyRocks可以参考: http://mysql.taobao.org/monthly/2016/08/03/           这篇文章里面有一些Facebook测试的数据。在云的环境,看不到这个趋势,有物理机环境的朋友,也可以测试一下。

6、感谢

   感谢某云(创业公司)提供的高性能主机,感觉真的不错。 磁盘IO轻松200M左右的写入。过段也可以来一个基于云主机的性能测试:)。

   

文章转载自云DB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论