文章目录

  • 一、环境部署
    • 1.1 OS配置
      • 1.1.1 关闭防火墙
      • 1.1.2 关闭selinux
      • 1.1.3 关闭大页
    • 1.2 数据库部署
    • 1.3 启用tokudb和rocksdb
  • 二、引擎对比
    • 2.1 TokuDB
    • 2.2 RocksDB

一、环境部署

1.1 OS配置

1.1.1 关闭防火墙

systemctl stop firewalld.service #停止防火墙
systemctl disable firewalld.service #禁止开机启动

1.1.2 关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
cat /etc/sysconfig/selinux

1.1.3 关闭大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled

1.2 数据库部署

tar xf Percona-Server-8.0.21-12-r7ddfdfe-el7-x86_64-bundle.tar
yum localinstall percona-server-*
...Installing : percona-server-server-8.0.21-12.2.el7.x86_64                                                                                                                        4/9
Percona Server is distributed with several useful UDF (User Defined Function) from Percona Toolkit.
Run the following commands to create these functions:
mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'"
mysql -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'"
mysql -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"
See http://www.percona.com/doc/percona-server/8.0/management/udf_percona_toolkit.html for more detailsInstalling : percona-server-rocksdb-8.0.21-12.2.el7.x86_64                                                                                                                       5/9 * This release of Percona Server is distributed with RocksDB storage engine.* Run the following script to enable the RocksDB storage engine in Percona Server:ps-admin --enable-rocksdb -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>]Installing : percona-server-test-8.0.21-12.2.el7.x86_64                                                                                                                          6/9 Installing : percona-server-tokudb-8.0.21-12.2.el7.x86_64                                                                                                                        7/9 * This release of Percona Server is distributed with TokuDB storage engine.* Run the following script to enable the TokuDB storage engine in Percona Server:ps-admin --enable-tokudb -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>]...systemctl start mysqldcat /data/mysql/logs/error.log | grep 'temporary password'

1.3 启用tokudb和rocksdb

[root@zijie lib]# ps-admin --enable-tokudb -uroot -pZIjie@97125
Checking SELinux status...
INFO: SELinux is disabled.Checking if TokuDB plugin is available for installation ...
INFO: ha_tokudb.so library for TokuDB found at /usr/lib64/mysql/plugin/ha_tokudb.so.Checking location of jemalloc library ...
INFO: jemalloc library needed for TokuDB found at /usr/lib64/libjemalloc.so.1Checking transparent huge pages status on the system...
INFO: Transparent huge pages are currently disabled on the system.Checking if THP_SETTING variable is set to never or madvise in /etc/sysconfig/mysql...
INFO: Variable THP_SETTING is set in /etc/sysconfig/mysql.Checking if LD_PRELOAD variable is set for libjemalloc.so.1 in /etc/sysconfig/mysql...
INFO: Variable LD_PRELOAD for libjemalloc.so.1 is set in /etc/sysconfig/mysql.Checking TokuDB engine plugin status...
INFO: TokuDB engine plugin is not installed.Installing TokuDB engine...
INFO: Successfully installed TokuDB engine plugin.[root@zijie lib]# ps-admin --enable-rocksdb -uroot -pZIjie@97125
Checking if RocksDB plugin is available for installation ...
INFO: ha_rocksdb.so library for RocksDB found at /usr/lib64/mysql/plugin/ha_rocksdb.so.Checking RocksDB engine plugin status...
INFO: RocksDB engine plugin is not installed.Installing RocksDB engine...
INFO: Successfully installed RocksDB engine plugin.root@mysql 17:39:  [(none)]> show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| TokuDB             | YES     | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology             | YES          | YES  | YES        |
| FEDERATED          | NO      | Federated MySQL storage engine                                             | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| ROCKSDB            | YES     | RocksDB storage engine                                                     | YES          | YES  | YES        |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
11 rows in set (0.00 sec)

二、引擎对比

2.1 TokuDB

  TokuDB 是 一个支持高并发插入存储引擎,适用 MySQL 和 MariaDB。其独特的 “分形树”索引:提供了将“随机读写” 变成了 “顺序读写” 的功能,从而拥有了高insert性能;使用的块更大,使数据得以更好的压缩。

优点

  • 高压缩比,默认使用zlib进行压缩,尤其是对字符串(varchar,text等)类型有非常高的压缩比,比较适合存储日志、原始数据等。官方宣称可以达到1:12。

  • 在线添加索引,不影响读写操作

  • HCADER 特性,支持在线字段增加、删除、扩展、重命名操作,(瞬间或秒级完成)

  • 支持完整的ACID特性和事务机制

  • 非常快的写入性能, Fractal-tree在事务实现上有优势,无undo log,官方称至少比innodb高9倍。

  • 支持show processlist 进度查看

  • 数据量可以扩展到几个TB;

  • 不会产生索引碎片;

缺点

  • 不支持外键(foreign key)功能,如果表有外键,切换到 TokuDB引擎后,此约束将被忽略。

  • TokuDB 不适大量读取的场景,因为压缩解压缩的原因。CPU占用会高2-3倍,但由于压缩后空间小,IO开销低,平均响应时间大概是2倍左右。

  • online ddl 对text,blob等类型的字段不适用

  • 没有完善的热备工具,只能通过mysqldump进行逻辑备份

适用场景

  • 访问频率不高的数据或历史数据归档
  • 数据表非常大并且时不时还需要进行DDL操作

2.2 RocksDB

  RocksDB是由 Facebook 基于 LevelDB 开发的一款提供键值存储与读写功能的 LSM-tree 架构引擎。用户写入的键值对会先写入磁盘上的 WAL (Write Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类存储引擎更高的写吞吐。内存中的数据达到一定阈值后,会刷到磁盘上生成 SST 文件 (Sorted String Table),SST 又分为多层(默认至多 6 层),每一层的数据达到一定阈值后会挑选一部分 SST 合并到下一层,每一层的数据是上一层的 10 倍(因此 90% 的数据存储在最后一层)。RocksDB 允许用户创建多个 ColumnFamily ,这些 ColumnFamily 各自拥有独立的内存跳表以及 SST 文件,但是共享同一个 WAL 文件,这样的好处是可以根据应用特点为不同的 ColumnFamily 选择不同的配置,但是又没有增加对 WAL 的写次数。

优点

  • innodb空间浪费, B tree分裂导致page内有较多空闲,page利用率不高。innodb现有的压缩效率也不高,压缩以block为单位,也会造成浪费。
  • 写入放大:innodb 更新以页为单位,最坏的情况更新N行会更新N个页。RocksDB append only方式 另外,innodb开启double write也会增加写入。
  • RocksDB对齐开销小:SST file (默认2MB)需要对齐,但远大于4k, RocksDB_block_size(默认4k) 不需要对齐,因此对齐浪费空间较少
  • RocksDB索引前缀相同值压缩存储,节省空间
  • RocksDB占总数据量90%的最底层数据,行内不需要存储系统列seqid (innodb聚簇索引列包含trxid,roll_ptr等信息)

缺点

  • 大value的场景不友好
  • 不适于大规模数据的存取

适用场景

  • 对写性能要求很高,同时有较大内存来缓存SST块以提供快速读的场景;
  • SSD等对写放大比较敏感以及磁盘等对随机写比较敏感的场景;
  • 需要变长kv存储的场景;
  • 小规模元数据的存取;

MySQL引擎——TokuDB与RocksDB相关推荐

  1. Percona Server for MySQL 安装TokuDB引擎

    Percona Server for MySQL 安装TokuDB引擎 TokuDB主要优点:insert数据比Innodb快的多,数据压缩比要Innodb高 官方文档https://docs.per ...

  2. MySQL · 引擎特性 · InnoDB 事务子系统介绍

    前言 在前面几期关于InnoDB Redo和Undo实现的铺垫后,本节我们从上层的角度来阐述InnoDB的事务子系统是如何实现的,涉及的内容包括:InnoDB的事务相关模块,如何实现MVCC及ACID ...

  3. MySQL · 引擎分析 · InnoDB行锁分析

    前言 理解InnoDB行锁,分析一条SQL语句会加什么样的行锁,会锁住哪些数据范围对业务SQL设计和分析线上死锁问题都会有很大帮助.对于InnoDB的行锁,已经有多篇月报进行了介绍,这里笔者借鉴前面月 ...

  4. MySQL引擎特性GIS-R-TREE

    MySQL引擎特性GIS-R-TREE Geohash用于代表位置的经纬度编码成一个字符串,支持WGS 84 Coordinate System MySQL支持的空间数据类型包括GEOMETRY,PO ...

  5. 深入浅析mysql引擎

    mysql引擎 mysql数据库引擎取决于mysql在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译mysql.在缺省情况下,mysql支持三个引擎:ISAM,MYISAM和HEAP.另 ...

  6. 添加mysql引擎错误

    在添加mysql引擎时,可能出现如下错误: Can't open shared library '/usr/local/mysql/lib/mysql/plugin/ha_innodb.so' (er ...

  7. MySQL · 引擎特性 · InnoDB 崩溃恢复过程

    在前面两期月报中,我们详细介绍了 InnoDB redo log 和 undo log 的相关知识,本文将介绍 InnoDB 在崩溃恢复时的主要流程. 本文代码分析基于 MySQL 5.7.7-RC ...

  8. 15_clickhouse,MySQL引擎;MySQL和ClickHouse中数据类型的对应关系

    20.MySQL引擎 20.1.MySQL引擎 20.2.MySQL和ClickHouse中数据类型的对应关系 20.3.示例 20.MySQL引擎 20.1.MySQL引擎 MySQL引擎可实现对M ...

  9. 【clickhouse】Clickhouse的MySQL引擎同步数据不准确 Decimal

    文章目录 1.概述 2. 场景2 2.1 概述 1.概述 我想从MySQL同步数据到Clickhouse,但是发现Clickhouse的MySQL引擎同步数据不准确,精度丢失而且还是不对的.(很多数据 ...

最新文章

  1. 转自一个面试者的“提示”
  2. JavaScript初学者编程题(25)
  3. Linux SVN命令详解
  4. 有微型计算机广告,广告还会受欢迎?都是斯巴达克显卡惹的“祸”
  5. 循环序列模型 —— 1.6 语言模型和序列生成
  6. java ee面试题专家总结(必看),Java EE面试题专家总结(必看)
  7. 程序员惊魂 12 小时:“���”引发线上事故
  8. 灰度世界算法(Gray World Algorithm)
  9. TypeScript系列教程--初探TypeScript
  10. 【iCore4 双核心板_ARM】例程十八:USBD_VCP实验——虚拟串口
  11. yml文件配置数据库
  12. border的属性及写法大全:实线、点线、虚线、双线、混合用法
  13. ORACLE表空间碎片整理
  14. 教程篇(7.0) 01. 介绍FortiClient和FortiClient EMS ❀ FortiClient EMS ❀ Fortinet 网络安全专家 NSE 5
  15. 长视频请回答2020:技术如何让流媒体更“酷”?
  16. python里美元怎么表示_说说 Python 正则表达式中的插入字符、美元字符
  17. JS防抖(Debouncing)和节流(Throttling)
  18. 高中新课程作业本 地理 必修1 参考答案下
  19. -moz、-ms、-webkit, -o各什么意思
  20. 数字图像处理之灰度化

热门文章

  1. Python画图-中使用plt生成的图的legend,设置字体大小
  2. 农村家庭致富小机器有哪些
  3. 眼睛慢慢眯成一条线的人都是实力很强劲的,教你在Unity中通过BlendShape来实现角色面部表情过渡切换(Animation)
  4. dtw-package(使用R语言应用DTW)
  5. 奇葩公司按代码行数算工资,员工一个月提成2.6万遭开除
  6. Phoenix的使用方式详解
  7. BZOJ2761 不重复数字
  8. 【Linux普通用户指令权限】
  9. 使用队列思想完成解决击鼓传花问题
  10. 【无标题】C语言闭包学习编程