阿里云
阿里云大学认证0元起
发表主题 回复主题
  • 303阅读
  • 1回复

基于 Percona Server for MySQL 体验 MyRocks

级别: 论坛版主
发帖
9347
云币
14150
~!TRR .  
c~iAjq+c  
前言 eEMU,zCl  
@j?)uJ0Q  
2 1]8 7$  
RocksDB是facebook基于LevelDB实现的一款可嵌入式的持久化键值(Key-Value)存储数据库,目前为facebook内部大量业务提供服务。由于其有高性能和高适配性的特点,所以被大量的应用于对传统数据库引擎的高性能改造,例如商业数据库引擎 TerarkDB 分布式关系型数据库 TIDB 等都是应用了 ROCKSDB 来实现高性能的。 3+2cD  
Kq2,J&Ca3  
介绍 A>W8^|l6+-  
8^6dK  
fs wQ*  
经过 Facebook 大量工作,将 RocksDB 作为 MySQL 的一个存储引擎移植到 MySQL,称之为 MyRocks。 经过多年的发展,MyRocks 已经比较成熟,已进入了facebook MySQL的主分支了。其他 MySQL 分支包括 Percona Server for MySQL 和 MariaDB Server 都集成了 MyRocks。  w#\*{EN  
MyRockS 跑分:http://jetware.io/blog/redmine-performance-on-myrocks、[url]https://www.percona.com/blog/2018/04/30/a-look-at-myrocks-performance/[/url], 本来还想翻译翻译贴图出来的,没想到那么多图 gN/6%,H}  
$oU40HA)W]  
H8'_.2vwX  
RocksDB与innodb的比较 DZ~qk+,I  
b(|1DE0Cv  
  • 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等信息
Kn+m9  
>@9>bI+Q  
 Percona MyRocks !/Wp0E'A  
1dahVc1W  
j^'op|l  
Percona MyRocks 是 MyRocks for Percona Server 的实现,安装了 Percona Server 的环境可以非常方便的集成 MyRocks 引擎,和 FaceBook 的 MyRocks 差异在于 事务隔离级别 的实现上。 O+Qt8,  
ffqz :6  
安装 ]Uee!-dZ  
KZ;Q71  
?E:L6,a  
首先,我们需要安装有 Percona Server,安装教程:Percona Server 5.7 安装教程 ?XNQ_m8f  
安装 percona-server-rocksdb: J}UG{RttI  
RHEL\CentOS: c3$h-M(jVJ  
  1. yum install Percona-Server-rocksdb-57.x86_64
{@8TGHKv  
ypK1 sw  
Deiban\Ubuntu: 1hn4YcHb  
  1. apt-get install percona-server-rocksdb-5.7
k{q4Zz[  
PtT=HvP!k  
1^4z/<ZWm  
安装好后我们回看到这句话: 8V$:th('  
  1. * This release of Percona Server is distributed with RocksDB storage engine.
  2. * Run the following script to enable the RocksDB storage engine in Percona Server:
  3.        ps-admin --enable-rocksdb -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>]
(d2|r)O  
{Bb:S"7NX  
也就是说我们需要运行相关语句: !K~:crUV|S  
运行: lSzLR~=Au  
  1. ps-admin --enable-rocksdb -u root -p密码
l].Gz`L  
a*Oc:$  
VaIFE~>E&  
然后就成功激活插件并关闭 Transparent huge pages 了 gI SP .  
  1. mysql> SHOW ENGINES;
  2. +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
  3. | Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
  4. +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
  5. | ROCKSDB            | YES     | RocksDB storage engine                                                     | YES          | YES  | YES        |
  6. | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
  7. | CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
  8. | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
  9. | InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
  10. | PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
  11. | ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
  12. | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
  13. | FEDERATED          | NO      | Federated MySQL storage engine                                             | NULL         | NULL | NULL       |
  14. | MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
  15. +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
  16. 10 rows in set (0.00 sec)
8- U1Y  
|E YJbL;1%  
c[~LI<>ic  
使用 Gz9w1[t  
l12_&o"C~  
CAhkv0?8  
具体如何使用 ROCKSDB 引擎 cJnAwIs_e`  
我们在创建表和修改表的时候,加入 ENGINE=RocksDB 就可以使用了。 H8g1SMT  
例如: 1b,,uI_  
  1. mysql> use mf8biz;
  2. mysql> CREATE TABLE `juncedup_usermeta` (
  3.   `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  4.   `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  5.   `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  6.   `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
  7.   PRIMARY KEY (`umeta_id`),
  8.   KEY `user_id` (`user_id`),
  9.   KEY `meta_key` (`meta_key`(191))
  10. ) ENGINE=RocksDB;
nf7l}^/UE  
cCoa3U/  
q@}eYQ=P|e  
如果我们想激进一点可以把默认引擎设置为 ROCKSDB: ^MUSq(  
修改 /etc/my.cnf 文件,在 [mysqld] 下加入: dvAvG.;U  
  1. default-storage-engine=ROCKSDB
+x3T^G  
wm$1LZ8o-`  
c<`Z[EY(t  
然后重启 MySQL 服务即可。
级别: 菜鸟
发帖
72
云币
103
只看该作者 沙发  发表于: 09-30
Re基于 Percona Server for MySQL 体验 MyRocks
第一次听说这个 q+A^JjzT  
学习了。 ya!RiHj  
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个