MOT SQL覆盖和限制

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

    MOT不支持以下特性:

    • 跨引擎操作:不支持跨引擎(磁盘+MOT)的查询、视图或事务。计划于2021年实现该特性。
    • MVCC、隔离:不支持没有快照/可序列化隔离。计划于2021年实现该特性。
    • 原生编译(JIT):SQL覆盖有限。此外,不支持存储过程的JIT编译。
    • 本地内存限制为1GB。一个事务只能更改小于1GB的数据。
    • 容量(数据+索引)受限于可用内存。未来将提供Anti-caching和数据分层功能。
    • 不支持全文检索索引。
    • 不支持逻辑复制特性。

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

    MOT限制

    MOT功能限制:

    • 按范围分区
    • AES加密
    • 流操作
    • 自定义类型
    • 子事务
    • DML触发器
    • DDL触发器
    • “C”或“POSIX”以外的排序规则
    • 修改表结构
    • 创建including表
    • 创建as select表
    • 按范围分区
    • 创建无日志记录子句(no-logging clause)的表
    • 创建可延迟约束主键(DEFERRABLE)
    • 重建索引
    • 使用子命令创建架构

    不支持的数据类型

    • UUID
    • User-Defined Type (UDF)
    • Array data type
    • NVARCHAR2(n)
    • Clob
    • Name
    • Blob
    • Raw
    • Path
    • Circle
    • Reltime
    • Bit varying(10)
    • Tsvector
    • Tsquery
    • JSON
    • HSTORE
    • Box
    • Text
    • Line
    • Point
    • LSEG
    • POLYGON
    • INET
    • CIDR
    • MACADDR
    • Smalldatetime
    • BYTEA
    • Bit
    • OID
    • Money
    • 无限制的varchar/character varying
    • HSTORE
    • 在小数和数值类型上创建索引

    • 在可空列上创建索引

    • 单表创建索引总数>9

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

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

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

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

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

    不支持的DML

    • Merge into
    • Select into
    • Lock table
    • Copy from table
    • 查询涉及两个以上的表
    • 查询有以下任何一个情况:
      • 非原生类型的聚合
      • 窗口功能
      • 子查询子链接
      • 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
    • Set operations
    • Constraint dependencies