openGauss学习笔记92 openGauss 数据库管理内存优化表MOT管理内存表特性使用MOTMOT使用MOT SQL覆盖和限制

2023年 12月 11日 49.8k 0

openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制92.1 不支持的特性92.2 MOT限制92.3 不支持的DDL操作92.4 不支持的数据类型92.5 不支持的索引DDL和索引92.6 不支持的DML92.7 不支持的JIT功能(原生编译和执行)

openGauss学习笔记-92 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT SQL覆盖和限制

MOT设计几乎能够覆盖SQL和未来特性集。例如,大多数支持标准的Postgres SQL,也支持常见的数据库特性,如存储过程、自定义函数等。

下面介绍各种SQL覆盖和限制。

92.1 不支持的特性

MOT不支持以下特性:

  • 隔离性:不支持SERIALIZABLE隔离。

  • 查询原生编译(JIT):SQL覆盖范围有限。

  • 本地内存限制为1GB。一个事务只能更改小于1GB的数据。

  • 容量(数据+索引)受限于可用内存。

  • 不支持全文检索索引。

  • 不支持逻辑复制特性。

  • 不支持保存点。

此外,下面详细列出了MOT、MOT索引、查询和DML语法的各种通用限制,以及查询原生编译的特点和限制。

92.2 MOT限制

MOT功能限制:

  • 分区

  • AES加密、数据动态脱敏、行级访问控制

  • 流操作

  • 自定义类型

  • 子事务:仅支持存储过程的语句块上下文,且有以下限制:MOT恢复支持仅包含SELECT操作的子事务,且仅允许只读回滚。在这种情况下,父事务将中止。

  • DML触发器

  • DDL触发器

  • “C”或“POSIX”以外的排序规则

92.3 不支持的DDL操作

  • CREATE FORIGN table LIKE:有限支持,LIKE可以用于任何表(MOT和堆表),但不带任何选项、数据或索引。

  • 创建as select表

  • 按范围分区

  • 创建无日志记录子句(no-logging clause)的表

  • 创建可延迟约束主键(DEFERRABLE)

  • 重建索引

  • 表空间

  • 使用子命令创建架构

92.4 不支持的数据类型

  • UUID

  • User-Defined Type (UDF)

  • Array data type

  • NVARCHAR2(n)

  • Clob

  • Name

  • Blob

  • Raw

  • Path

  • Circle

  • Reltime

  • Bit varying(10)

  • Tsvector

  • Tsquery

  • JSON

  • Box

  • Text

  • Line

  • Point

  • LSEG

  • POLYGON

  • INET

  • CIDR

  • MACADDR

  • Smalldatetime

  • BYTEA

  • Bit

  • Varbit

  • OID

  • Money

  • Any unlimited varchar/character varying

  • HSTORE

  • XML

  • Int16

  • Abstime

  • Tsrange

  • Tstzrange

  • Int8range

  • Int4range

  • Numrange

  • Daterange

  • HLL

92.5 不支持的索引DDL和索引

  • 在小数和数值类型上创建索引

  • 在可空列上创建索引

  • 单表创建索引总数>9

  • 在键大小>256的表上创建索引

    键大小包括以字节为单位的列大小+列附加大小,这是维护索引所需的开销。下表列出了不同列类型的列附加大小。

    此外,如果索引不是唯一的,额外需要8字节。

    下面是伪代码计算键大小:

    keySize =0;

    for each (column in index){
        keySize += (columnSize + columnAddSize);
    }
    if (index is non_unique) {
        keySize += 8;
    }

    列类型 列大小 列附加大小
    varchar N 4
    tinyint 1 1
    smallint 2 1
    int 4 1
    longint 8 1
    float 4 2
    double 8 3

上表中未指定的类型,列附加大小为零(例如时间戳)。

92.6 不支持的DML

  • Merge into

  • Lock table

  • Copy from table

  • Upsert

92.7 不支持的JIT功能(原生编译和执行)

  • 存储过程编译:仅访问MOT表的存储过程可用。

  • 查询涉及两个以上的表

  • 查询有以下任何一个情况:

    • 非原生类型的聚合

    • 窗口功能

    • 子查询子链接

    • Distinct-ON修饰语(distinct子句来自DISTINCT ON)

    • 递归(已指定WITH RECURSIVE)

    • 修改CTE(WITH中有INSERT/UPDATE/DELETE)

以下子句不支持轻量执行:

  • Returning list

  • Group By clause

  • Grouping sets

  • Having clause

  • Windows clause

  • Distinct clause

  • Sort clause that does not conform to native index order:支持,但所有排序列都必须存在于SELECT中。

  • Set operations

  • Constraint dependencies

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论