有奖捉虫:云通信与企业服务文档专题,速来> HOT
TXRocks 是腾讯云 TXSQL 团队基于 RocksDB 开发的事务型存储引擎,兼具更加节省存储空间和写⼊放⼤更低的优势。

产品介绍

TXRocks 是腾讯云 TXSQL 团队基于 RocksDB 开发的事务型存储引擎,得益于 RocksDB LSM Tree 存储结构,既减少了 InnoDB 页面半满和碎片浪费,又可以使用紧凑格式存储,因此 TXRocks 在保持与 InnoDB 接近性能的前提下,存储空间相比 InnoDB 可以节省一半甚至更多,非常适合对事物读写性能有要求,且数据存储量大的业务。

前提条件

数据库版本须为 MySQL5.7、8.0,架构为双节点。

购买云数据库 MySQL 实例(RocksDB 引擎)

您可以在云数据库 MySQL 购买页 购买实例时,选择引擎为 RocksDB,其他参数项可参考 创建 MySQL 实例


说明
RocksDB 是 key-value 存储引擎,以高效写入能力与高压缩存储著称,目前暂时仅支持 MySQL5.7、8.0版本可选择引擎为 RocksDB。

创建 RocksDB 表

如果创建实例时设置了默认引擎为 RocksDB,则建表时默认引擎就是 RocksDB。您可以通过如下命令查看默认引擎:
show variables like '%default_storage_engine%';


当默认引擎是 RocksDB 时,建表语句不许指定存储引擎。

表创建成功后,后续的使用方法与 InnoDB一样,数据会存储在 RocksDB 引擎。

引擎功能限制

TXRocks 在引擎功能上有一些限制,具体如下表所示:
功能分类
功能项
TXRocks 限制
DDL
Online DDL
不⽀持,例如不⽀持 ALTER TABLE ... ALOGRITHM=INSTANT 功能,Partition 管理操作仅⽀持 COPY 算法
SQL 功能
外键
不⽀持外键(Foreign Key)
分区表
不⽀持分区表 (Partition)
⽣成列
不⽀持⽣成列 (Generated Columns)
显式 Default 表达式
不支持,如 CREATE TABLE t1(c1 FLOAT DEFAULT(RAND()))ENGINE=ROCKSDB; 会失败,报错 'Specited storage engine' is not supported for default value expressions.
加密表
不⽀持加密表
索引
空间索引
不⽀持空间索引(Spatial Index)、空间数据类型(如 GEOMETRY、POINT等)
全⽂索引
不⽀持全⽂索引(Fulltext Index)
多值索引
不⽀持多值索引(multi-valued index)
复制
组复制
不⽀持组复制(Group Replication)
binlog 格式
仅⽀持 ROW 格式,不⽀持 stmt 或者 mixed 格式
克隆插件
不⽀持克隆插件(Clone Plugin)
可传输表空间
不⽀持可传输表空间(Transportable Tablespace)
事务与锁
LOCK NOWAIT 和 SKIP LOCKED
不⽀持 LOCK NOWAIT 和 SKIP LOCKED
间隙锁
不⽀持间隙锁(Gap Lock)
Savepoint
不⽀持 Savepoint
部分更新 LOB 字段
不⽀持部分更新 LOB 字段
XA 事务
不建议使⽤

参数说明

说明
在创建云数据库 MySQL 实例时,选择 RocksDB 为默认存储引擎后,可以根据下表的参数说明调整参数模板以便适应自身业务。

MySQL 5.7 相关参数列表

参数名称
是否需要重启
默认值
允许值
描述
rocksdb_use_direct_io_for_flush_and_compaction
ON
ON/OFF
compaction 时是否使用 DIO。
rocksdb_flush_log_at_trx_commit
1
0/1/2
控制何时将日志写入磁盘。
类似于 innodb_flush_log_at_trx_commit,事务提交时是否进行同步。
等于0时,事务提交时不同步;
等于1时,每次事务提交时都同步;
等于2时,每1秒同步一次。
rocksdb_lock_wait_timeout
1
1-1073741824
锁等待超时时间,单位秒。
rocksdb_deadlock_detect
ON
ON/OFF
死锁检测开关,开启后,有关所有死锁的信息将记录在 mysqld 错误日志中。
rocksdb_manual_wal_flush
ON
ON/OFF
rocksdb_max_total_wal_size,WAL 超过这个大小,RocksDB 会开始强制列族落盘,以保证删除最老的 WAL 文件。

MySQL 8.0 相关参数列表

参数名称
是否需要重启
默认值
允许值
描述
rocksdb_flush_log_at_trx_commit
1
0/1/2
控制何时将日志写入磁盘。
类似于 innodb_flush_log_at_trx_commit,事务提交时是否进行同步。
等于0时,事务提交时不同步;
等于1时,每次事务提交时都同步;
等于2时,每1秒同步一次。
rocksdb_lock_wait_timeout
1
1-1073741824
锁等待超时时间,单位秒。
rocksdb_merge_buf_size
524288(=512K)
100-18446744073709551615
创建二级索引过程中用到的 merge-sort buffer 大小。
rocksdb_merge_combine_read_size
8388608 (=8M)
524288(=512K)-18446744073709551615
创建二级索引过程中用到的多路归并过程使用的内存大小。
rocksdb_deadlock_detect
ON
ON/OFF
死锁检测开关。
rocksdb_manual_wal_flush
ON
ON/OFF
rocksdb_max_total_wal_size,WAL 超过这个大小,RocksDB 会开始强制列族落盘,以保证删除最老的 WAL 文件。

RocksDB 引擎监控项

下表为 RocksDB 的引擎监控指标。
指标
描述
rocksdb_bytes_read
读磁盘量
rocksdb_bytes_written
写磁盘量
rocksdb_block_cache_bytes_read
读数据块数
rocksdb_block_cache_bytes_write
写数据块数
rocksdb_wal_log_capacity
写 WAL 日志大小