tencent cloud

云数据库 MySQL

TXRocks 引擎使用须知

PDF
聚焦模式
字号
最后更新时间: 2024-12-31 15:52:04
TXRocks 是腾讯 TXSQL 团队基于 RocksDB 开发的事务型存储引擎,兼具更加节省存储空间和写⼊放⼤更低的优势。

产品介绍

TXRocks 是腾讯 TXSQL 团队基于 RocksDB 的事务型存储引擎,得益于 RocksDB LSM Tree 存储结构,既减少了 InnoDB ⻚⾯半满和碎⽚浪费,⼜可以使⽤紧凑格式存储,因此 TXRocks 在保持与 InnoDB 接近的性能的前提下,存储空间相⽐ InnoDB 可以节省⼀半甚⾄更多,⾮常适合对事务读写性能有要求,且数据存储量⼤的业务。

前提条件

数据库版本须为 MySQL 5.7、8.0,架构为双节点。

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

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

说明:
RocksDB 是 key-value 存储引擎,以高效写入能力与高压缩存储著称,目前暂时仅支持 MySQL 5.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 日志大小

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈