首页 > 数据库 >openGauss MOT-SQL覆盖和限制

openGauss MOT-SQL覆盖和限制

时间:2024-04-28 09:59:12浏览次数:20  
标签:创建 clause 支持 MOT 索引 SQL openGauss

MOT SQL覆盖和限制

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

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

不支持的特性

MOT不支持以下特性:

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

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

MOT限制

MOT功能限制:

  • 分区
  • AES加密、数据动态脱敏、行级访问控制
  • 流操作
  • 自定义类型
  • 子事务
  • DML触发器
  • DDL触发器

不支持的DDL操作

  • 修改表结构
  • 创建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
  • 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

不支持的索引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

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

不支持的DML

  • Merge into
  • Select into
  • Lock table
  • Copy from table
  • Upsert

原生编译和轻量执行不支持的查询

  • 查询涉及两个以上的表
  • 查询有以下任何一个情况:
    • 非原生类型的聚合
    • 窗口功能
    • 子查询子链接
    • 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

标签:创建,clause,支持,MOT,索引,SQL,openGauss
From: https://www.cnblogs.com/renxyz/p/18163086

相关文章

  • openGauss MOT-VACUUM清理
    MOTVACUUM清理使用VACUUM进行垃圾收集,并有选择地分析数据库,如下所示。【openGauss】在openGauss中,VACUUM用于回收死元组占用的存储空间。在正常的openGauss操作中,删除的元组或因更新而作废的元组不会从表中物理删除。只能由VACUUM清理。因此,需要定期执行VACUUM,特别是在频繁......
  • openGauss dblink
    dblinkdblink是一个可以在一个openGauss数据库会话中连接到其它openGauss数据库的工具,同libpq支持的连接参数一致,可参考链接参数。openGauss默认不编译dblink,下面依次介绍如何编译和使用dblink。编译dblink当前dblink的源码放在contrib/dblink目录中。在编译安装完openGauss数......
  • openGauss file_fdw
    file_fdwfile_fdw模块提供了外部数据封装器file_fdw,可以用来在服务器的文件系统中访问数据文件。数据文件必须是COPYFROM可读的格式,具体请参见COPY的介绍。使用file_fdw访问的数据文件是当前可读的,不支持对该数据文件的写入操作。当前openGauss会默认编译file_fdw,initdb的时候......
  • SqlServer中根据某几列获取重复的数据将其删除并保留最新一条
    有时候,我们某个数据表中,可能有几列的数据都是一样的,此时我们可能想查询出这几列数据相同的所有数据行,并保留最新一条,将其他重复的数据删除。......
  • openGauss Foreign-Data-Wrapper
    ForeignDataWrapperopenGauss的FDW(ForeignDataWrapper)可以实现各个openGauss数据库及远程服务器(包括数据库、文件系统)之间的跨库操作。目前支持的远程数据库类型包括Oracle、Mysql(MariaDB)、openGauss(postgres_fdw)、file_fdw、dblink。用于Oracle的外部数据包装器mysql_......
  • openGauss MOT-SILO增强特性
    MOTSILO增强特性SILO[对比:磁盘与MOT]凭借其基本算法流程,优于我们在研究实验中测试的许多其他符合ACID的OCC算法。然而,为了使SILO成为产品级机制,我们必须用许多在最初设计中缺失的基本功能来增强它,例如:新增对交互式事务的支持,其中事务的SQL运行在客户端实现,而不是作为服务器端......
  • openGauss 如何解决-out-of-memory-allocating-xxx-bytes-after-a-total-of-xxx-bytes
    如何解决"outofmemoryallocatingxxxbytesafteratotalofxxxbytes"报错问题如何解决编译过程中出现的“outofmemoryallocatingxxxbytesafteratotalofxxxbytes”报错。回答报错原因:脚本中的编译过程都添加了-sj参数,同时机器配置较低,内存不足,并发数太大导致......
  • openGauss 轻量版安装包编译
    轻量版安装包编译使用build/script/cmake_package_mini.sh脚本构建openGauss轻量版安装包。前提条件已按照搭建编译环境的要求准备好相关软硬件,并且已参考代码下载下载了代码。已完成开源软件编译构建,具体请参见开源软件编译构建。了解cmake_package_mini.sh脚本的参数选项......
  • openGauss 如何解决-Configure-error-C-compiler-cannot-create-executables-报错
    如何解决“Configureerror:Ccompilercannotcreateexecutables”报错问题如何解决版本编译时出现的“Configureerror:Ccompilercannotcreateexecutables”报错。回答报错原因:binarylibs文件不完整或者被损坏。解决办法:若binarylibs是通过开源软件构建而来,请重新构......
  • openGauss 如何解决-g++-fatal-error-Killed-signal-terminated-program-cclplus-报错
    如何解决"g++:fatalerror:Killedsignalterminatedprogramcclplus"报错问题如何解决编译过程中出现的"g++:fatalerror:Killedsignalterminatedprogramcclplus"报错。回答报错原因:脚本中的编译过程都添加了-sj参数,并发数太大导致错误。解决办法:编译过程中降......