行存引擎

更新时间:
复制为 MD 格式

AnalyticDB for MySQL行存引擎,是面向行存表的高并发实时引擎,适用于基于主键的高并发点查和多列投影的快速查询。本文为您介绍云原生数据仓库 AnalyticDB MySQL 版行存引擎的使用方法。

前提条件

费用说明

  • 计算资源:按量付费,按照Serving资源组的ACU数量和单价收费。

  • 存储空间:按量付费,按照热数据存储空间价格收费。

详细计费请参见产品定价

支持的数据类型

分类

数据类型

说明

布尔类型

  • boolean

取值:true、false

数值类型

  • tinyint

  • smallint

  • int

  • bigint

  • float

  • double

当前不支持decimal,可以通过以下配置将decimal类型自动转换为double,但会导致精度损失。

set ADB_CONFIG ROW_STORE_DECIMAL_TO_DOUBLE=true

字符类型

  • varchar

  • binary

  • blob

时间类型

  • date

  • time

  • datetime

  • timestamp

复杂类型

  • point

  • array<int>

  • array<array<int>>

  • map<varchar, int>

复杂类型只支持基本读写操作,数据实际以二进制形式存储,可正常序列化,但无法参与函数运算。

支持以下数据类型作为主键:

  • 布尔类型:boolean

  • 数值类型:tinyint、smallint、int、bigint

  • 字符类型:varchar、binary、blob

  • 时间类型:date、time、datetime、timestamp

使用说明

创建行存表

CREATE TABLE:指定ENGINE = 'row_store'

  • 主键:表中需指定主键,不支持为空,最多支持4列。

  • 表字段类型:不支持修改。

  • 索引:默认为主键列索引,可手动给其他列创建索引;字符串类型,也可通过FULLTEXT INDEX创建全文索引。

  • 表生命周期:通过TTL管理表生命周期,最小单位为天。

创建示例

CREATE DATABASE test_db;

CREATE TABLE test_db.row_store_table
(
    a int NOT NULL,
    b int,
    c varchar,
    PRIMARY KEY(a)
)
ENGINE = 'row_store'
TABLE_PROPERTIES = '{"row_store_ttl": 1}';

----手动创建索引----
CREATE TABLE test_db.row_store_table
(
    a int NOT NULL,
    b int,
    c varchar,
    PRIMARY KEY(a),
    INDEX c_idx(c),
    INDEX bc_idx(b, c)
)
ENGINE = 'row_store'

---创建全文索引---
CREATE TABLE  test_db.row_store_table
(
    a int NOT NULL,
    b int,
    c varchar,
    PRIMARY KEY(a),
    FULLTEXT INDEX c_idx(c),
)
ENGINE = 'row_store'

数据操作

支持以下操作:

  • INSERT INTO:主键重复时,忽略插入数据。

  • REPLACE INTO:主键重复时,使用新插入数据覆盖老数据。

  • INSERT ON DUPLICATE KEY UPDATE

  • INSERT SELECT FROM

  • INSERT OVERWRITE SELECT

  • UPDATE

  • DELETE

其他DDL操作示例

  • 加减列

    --加列--
    ALTER TABLE test_db.row_store_table
      ADD COLUMN bool boolean,
      ADD COLUMN STR varchar;
    --减列--
    ALTER TABLE test_db.row_store_table
      DROP COLUMN bool;
  • 加减索引

    --加索引--
    ALTER TABLE test_db.row_store_table
      ADD INDEX c_idx(c);
    --减索引--
    ALTER TABLE test_db.row_store_table
      DROP INDEX c_idx;
  • TRUNCATE TABLE

    TRUNCATE TABLE test_db.row_store_table;
  • DROP TABLE

    DROP TABLE test_db.row_store_table;

性能测试

TPCH 10GB的测试数据集下,AnalyticDB for MySQL行存引擎整体点查性能提升10倍+,RT降低80%+,性能详细结果如下。

测试场景

并发数

QPS

RT

PK点查

50

5259.0/s

9ms

100

10481.1/s

9ms

300

31347.0/s

9ms

500

42257.3/s

11ms

1000

82103.0/s

12ms

PK点查(IN (xx,xx,xx)

100

2611/s

38ms

300

4422.3/s

67ms

500

6829.7/s

72ms

1000

6075.8/s

163ms