开启高压缩引擎(X-Engine)

更新时间:2025-01-16 08:51:11

本文将为您详细介绍如何开启高压缩引擎(X-Engine),以及开启过程中所需的条件和相关注意事项。

前提条件

  • 内核版本需满足以下条件:

    • 8.0.1.1.31及以上。

    • 8.0.2.2.12及以上。

    您可以通过查询版本号来确认集群版本。

  • 多主集群(库表)不支持开启高压缩引擎(X-Engine)

  • 集群的读写(RW)节点规格不小于8 GB,且集群中的只读(RO)节点的规格需大于或等于RW节点的规格。

  • 集群未加入全球数据库网络(GDN)。

注意事项

  • 高压缩引擎(X-Engine)存在引擎以及大事物功能上存在相关限制。

    使用限制

    引擎功能限制
    大事务功能限制

    分类

    功能

    说明

    SQL功能

    外键

    不支持

    临时表

    不支持

    Generated Column

    不支持

    Handler API

    不支持

    列属性

    最大列长度(longblob/longtext/json)

    32 MB

    GIS地理数据类型

    不支持所有GIS相关数据类型(包含geometry、point、linestring、polygon、multipoint、multilinestring、multipolygon、geometrycollection)

    索引

    哈希索引

    不支持

    空间索引

    不支持(所有与全文索引相关的创建、使用均不支持)

    事务

    事务隔离级别

    支持如下2个隔离级别:

    • 读已提交(RC)

    • 可重复读(RR)

    单个事务支持的最大数据量

    32 MB

    Savepoint

    不支持

    XA事务

    支持内部XA事务

    锁粒度

    • 支持表级别锁和行级别锁

    • 不支持GAP

    Skip Locked

    不支持

    Lock Nowait

    不支持

    字符集

    非索引列支持的字符集

    非索引列支持所有的字符集(校对规则)

    索引列支持的字符集

    • latin1(latin1_bin)

    • gbk(gbk_chinese_ci、gbk_bin)

    • utf8(utf8_general_ci、utf8_bin)

    • utf8mb4(utf8mb4_0900_ai_ci、utf8mb4_general_ci、utf8mb4_bin)

    主从复制

    Binlog格式

    支持如下3种格式:

    • stmt

    • row

    • mixed

    说明

    默认为row,采用stmt/mixed在特定并发场景可能存在数据安全性问题。

    说明

    对于X-Engine引擎中其他未列出的功能,默认其功能特性与InnoDB引擎相同。

    X-Engine目前不支持大事务。当一个事务修改的行数等于或大于10000行时,X-Engine会启用commit in middle功能,即X-Engine会在内部提交该事务,并重新开启一个子事务继续执行该事务。但commit in middle并不能遵循严格意义上的事务原子性(Atomicity),因此您在使用过程中需要注意如下几点:

    • 假设需要开启一个事务插入大量数据,但在数据插入过程中,由于commit in middle功能,已经先提交了一部分数据,其它请求就可以访问到插入的数据。

    • 假设需要开启一个事务修改大量数据,已经执行了commit in middle的事务将无法回滚。

      DROP TABLE t1;
      CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
      BEGIN;
      call insert_data(12000); //插入12000行数据,触发commit in middle,前10000行数据已经提交。
      rollback;// 回滚只能把最后2000条数据回滚。
      SELECT COUNT(*) FROM t1; // 这里仍然能够查询到10000条数据。
      +----------+
      | COUNT(*) |
      +----------+
      |    10000 |
      +----------+
      1 row in set (0.00 sec)
    • 假设开启一个需要修改且删除大量数据的事务,由于commit in middle功能,DELETE操作读不到本事务中新插入的行,导致新插入的数据未被DELETE。

      DROP TABLE t1;
      CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
      call insert_data(10000);
      BEGIN;
      INSERT INTO t1 VALUES(10001,10001), (10002,10002);
      DELETE FROM t1 WHERE c1 >= 0;// DELETE操作触发commit in middle,导致delete操作没有读到本事务插入的行。
      commit;
      SELECT * FROM t1;
      +-------+-------+
      | c1    | c2    |
      +-------+-------+
      | 10001 | 10001 |
      | 10002 | 10002 |
      +-------+-------+
      2 rows in set (0.00 sec)
  • 开启高压缩引擎(X-Engine)时会自动重启集群。重启集群的过程中,会出现30秒以内的连接闪断。建议您在业务低谷期执行该操作并确保应用具备重连机制。

  • 开启高压缩引擎(X-Engine)后:

    • 为避免已存储在高压缩引擎(X-Engine)中的表访问异常,不支持关闭该功能。

    • 不支持加入全球数据库网络(GDN)。

操作步骤

您可以通过以下两种方法来开启高压缩引擎(X-Engine)。

方法一:在已购买的集群上一键开启高压缩引擎(X-Engine)

  1. 登录PolarDB控制台,选择集群所在地域,在集群列表中单击目标集群ID进入详情页。

  2. 在左侧导航栏选择配置与管理 > 数据生命周期,并在X-Engine高压缩引擎(温数据)页签中单击一键开启

    说明

    若您未看到X-Engine高压缩引擎(温数据)页签,请检查您的集群是否满足前提条件

    image

  3. 设置X-Engine比例对话框中,您可以根据实际业务场景自定义调整高压缩引擎(X-Engine)的内存资源占比,单击立即开启

    以下为您展示三种典型场景下的存储引擎内存资源占比配置,供您参考。您可根据实际业务场景进行配置。

    适用场景

    InnoDB引擎内存资源占比(百分比)

    X-Engine内存资源占比(百分比)

    适用场景

    InnoDB引擎内存资源占比(百分比)

    X-Engine内存资源占比(百分比)

    使用InnoDB引擎存储热数据,X-Engine引擎存储冷数据,且归档后的冷数据基本不会被访问。

    80

    20

    使用InnoDB引擎存储热数据,X-Engine引擎存储冷数据,且归档后的冷数据仍然会被更新或查询。

    50

    50

    使用InnoDB引擎存储少量表,X-Engine引擎存储大量表,并且数据会被更新或查询。

    20

    80

    说明
    • 开启高压缩引擎(X-Engine)后,您可以在集群配置与管理 > 数据生命周期页面的X-Engine高压缩引擎(温数据)页签中,根据实际业务场景随时调整内存资源比例。

    • X-Engine内存资源占比设置范围为10%~90%。若您使用X-Engine引擎存储所有表,无InnoDB引擎表,则可以设置X-Engine内存资源占比为90%。

方法二:在新购集群时,选择高压缩引擎(X-Engine)

在新购PolarDB MySQL时,您可以选择存储引擎为InnoDB & 高压缩引擎,并调整高压缩引擎比例。更多信息,请参见购买集群存储引擎选项。

说明

开启高压缩引擎(X-Engine)后,您可以在集群配置与管理 > 数据生命周期页面的X-Engine高压缩引擎(温数据)页签中,根据实际业务场景随时调整内存资源比例。

image

image

  • 本页导读 (1)
  • 前提条件
  • 注意事项
  • 操作步骤
  • 方法一:在已购买的集群上一键开启高压缩引擎(X-Engine)
  • 方法二:在新购集群时,选择高压缩引擎(X-Engine)
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等