文档中心MogDBMogDB StackUqbar
v2.1

文档:v2.1

支持的版本:

MogDB 2.1.0

1. 版本说明

MogDB 2.1.0版本于2022年1月11日发布。2.1.0版本基于2.0版本进一步增强,并合入了openGauss 2.1.0版本的新增特性。

说明:MogDB 2.1.0是Preview版本,该版本生命周期为半年。

2. 新增特性

2.1 集成openGauss 2.1.0版本新增特性

  • 存储过程兼容性增强
  • SQL引擎能力增强
  • 支持Ustore存储引擎
  • 支持段页式存储
  • 基于Paxos分布式一致性协议的高可用
  • AI4DB和DB4AI竞争力持续构筑
  • 日志框架及错误码整改
  • JDBC客户端负载均衡及读写分离
  • 支持cmake脚本编译
  • 列存表支持主键唯一键约束
  • 支持jsonb数据类型
  • 支持unique sql自动淘汰
  • UCE故障感知
  • 支持GB18030字符集
  • 备机catch优化
  • 客户端工具gsql支持readline命令自动补齐
  • 动态数据脱敏
  • 支持国密算法
  • 防篡改账本数据库
  • 内置角色和权限管理机制
  • 透明加密
  • 全密态数据库增强
  • 支持dblink
  • 支持Ubuntu系统
  • 支持Hash索引
  • upsert支持子查询
  • min/max函数支持ip地址类型
  • 增加array_remove/array_replace/first/last函数
  • Data Studio客户端工具适配内核特性

2.2 x86架构性能优化

优化x86架构下的多核性能,TPC-C高并发下性能达到PostgreSQL 14的1.5-5倍,主要优化点有:

  • 支持NUMA绑核
  • 无锁WAL
  • Cache友好数据结构

2.3 在线创建及重建索引

支持在执行create index和reindex index时指定CONCURRENTLY选项,以不阻塞DML语句执行的方式创建和重建索引,提升索引的可维护性。支持普通表上的索引和分区表全局索引的在线创建和重建。

相比于普通的创建和重建索引,在线创建和重建的方式可能需要更长的时间才能完成。

列存表上的索引、分区表本地索引和临时表上的索引不支持在线方式创建索引及重建。

相关页面

2.4 增强Oracle兼容能力

2.4.1 支持Orafce插件

说明:需要用户下载plugin包 ,并手工安装使用。

通过集成orafce插件,支持以下Oracle兼容语法:

  • SQL Queries
    • DUAL table
  • SQL Functions
    • Mathematical functions
      • BITAND
      • COSH
      • SINH
      • TANH
    • String functions
      • INSTR
      • LENGTH
      • LENGTHB
      • LPAD
      • LTRIM
      • NLSSORT
      • REGEXP_COUNT
      • REGEXP_INSTR
      • REGEXP_LIKE
      • REGEXP_SUBSTR
      • REGEXP_REPLACE
      • RPAD
      • RTRIM
      • SUBSTR
      • SUBSTRB
    • Date/time functions
      • ADD_MONTHS
      • DBTIMEZONE
      • LAST_DAY
      • MONTHS_BETWEEN
      • NEXT_DAY
      • ROUND
      • SESSIONTIMEZONE
      • SYSDATE
      • TRUNC
    • Data type formatting functions
      • TO_CHAR
      • TO_DATE
      • TO_MULTI_BYTE
      • TO_NUMBER
      • TO_SINGLE_BYTE
    • Conditional expressions
      • DECODE
      • LNNVL
      • NANVL
      • NVL
      • NVL2
    • Aggregate functions
      • LISTAGG
      • MEDIAN
    • Functions that return internal information
      • DUMP
  • SQL Operators
    • Datetime operator
  • Packages
    • DBMS_ALERT
    • DBMS_ASSERT
    • DBMS_OUTPUT
    • DBMS_PIPE
    • DBMS_RANDOM
    • DBMS_UTILITY
    • UTL_FILE

相关页面

2.4.2 支持connect by语法

提供兼容oracle的connect by语法,实现层级结构的数据查询控制,并展示等级、循环、起始层级等。

提供oracle兼容的层级查询功能,可以按照指定的连接关系,起始条件等按照树状结构展示数据内容,数据层级,路径等。

通过start with条件指定层级查询的根行,根据这些行进行递归查询来获取所有子行,以及子行的子行等。

通过connect by条件指定层级间父行与子行关系,来确定每一行的满足条件的所有子行。

如果存在连接,无论是连接语句,还是from或where子句中,先获取连接后的结果集,然后再进行层级查询。

语句中如果存在where过滤条件,先执行层级查询后再将结果集进行过滤,而不是过滤掉不满足的行以及其所有子行。

可以通过level伪列查看该行所在层级,sys_connect_by_path查看从根行到该行的路径,以及connect_by_root查看根行等辅助功能。

相关页面

2.4.3 可更新视图

支持可更新视图,用户可以对视图进行Insert/Update/Delete操作,更新操作会直接作用到视图对应基表。

不是所有视图都可更新,视图中的行与基表中的行必须要是一一对应关系,即视图的内容不能是基于聚合或窗口函数创建而来。

对于多表连接的视图,如果某一个基表的主键(唯一键)可以作为视图的主键(唯一键),则该视图也支持更新,更新结果作用到主键来源的基表。

相关页面

2.4.4 重建视图时变更列

在视图重建时,支持减少列、更改列名操作,本命令仅对非物化视图有效。

相关页面

2.4.5 支持systimestamp函数

返回数据库所在服务器的当前系统日期和时间,以及时区信息。

相关页面

2.4.6 支持sys_guid函数

系统根据当前时间和机器码,生成并返回一个16字节的全局唯一标识符。

相关页面

2.5 新增支持PostgreSQL插件

说明:需要用户下载plugin包 ,并手工安装使用。

  • pg_repack插件:通过触发器机制,提供在线重建表的功能,主要用于在线缩减表中的空闲空间大小。
  • wal2json插件:通过逻辑复制机制,以json形态提供持续的数据变更内容,主要用于异构复制等情况。
  • pg_trgm插件:实现trgm分词算法,实现更好的全文检索能力。
  • pg_prewarm插件:将指定的数据表预先缓存到共享内存中,加快数据的访问速度。
  • pg_bulkload插件:不经过共享内存直接加载数据到数据文件中,加快了数据库批量导入的速度。

2.6 支持读扩展

说明:配套ShardingSphere 5.1.0及后续版本,需要用户手工下载安装。

MogDB通过集成ShardingSphere的Proxy来支持读扩展能力:

  • 读写事务自动路由到主库执行,只读事务自动路由到备库执行;在有更高读一致性要求场景下,也可以通过hint控制只读事务也路由到主库执行;

  • 支持自动识别并配置读写节点,无需配置主备角色,在配置列表中自动发现主备库;

  • 支持切换后自动识别主备角色,无需额外操作,自动识别新的主备角色并正确路由;

  • 支持备节点的自动负载均衡:当备库宕机恢复或者新备库加入时,在备库复制状态正常后,会自动加入到读负载均衡中;

2.7 其他

  • nlssort函数支持GBK字符集生僻字按拼音排序

    相关页面SELECT

  • ALTER SEQUENCE支持修改increment

    相关页面ALTER SEQUENCE

  • 对于TIMESTAMP WITH TIME ZONE类型,可以在TO_CHAR使用TZH,TZM,TZD,TZR参数来输出时区信息

    相关页面类型转换函数

2.8 Preview特性

说明:Preview特性需要通过以下方式手动开启。

alter system set enable_poc_feature = on;
-- 或
alter system set enable_poc_feature to on;
-- 或在MogDB数据目录下的postgresql.conf配置文件中加入enable_poc_feature = on
-- 重启后生效

2.8.1 行存表压缩

支持在创建行存表(astore)时指定是否为压缩表,对于开启压缩的行存表,系统自动对表数据进行压缩,以节省存储空间。当往压缩表写入数据时,系统自动根据每列数据的特征选择合适的压缩算法,用户也可以直接指定每一列使用的压缩算法。

实际压缩率和数据内容强相关,典型场景下可达到50%的压缩率;开启压缩特性后有一定性能损耗,典型TPC-C模型下性能损耗在5%以内,实际性能影响取决于实际系统负载情况。

对于非压缩表,也可通过Alter Table的方式修改为压缩表,对于后续新写入的数据将自动进行压缩。

相关页面

2.8.2 二级分区

支持创建二级分区表,数据自动按照分区方式进行分区存储,以提升大数据量下的存储和查询效率,支持的二级分区组合有:

  • List-List
  • List-Range
  • List-Hash
  • Range-List
  • Range-Range
  • Range-Hash

支持对单个Partition和SubPartition进行查询;

支持对Partition Key,SubPartition Key或其组合条件进行分区裁剪,进一步优化分区查询效率;

支持对分区表或一级分区进行truncate,vacuum 操作;

Update操作时,支持数据跨分区移动(不支持Partition/SubPartition Key为List或Hash分区类型);

支持对二级分区的备份恢复。

相关页面


3. 修复缺陷

3.1 集成openGauss 2.1.0版本修复缺陷

  • I435UP explain语句执行报错
  • I44QS6 执行函数select get_local_active_session() limit 1 ;数据库挂掉
  • I4566H 分区表拆分分区update global index 后查询结果与master版本不一致
  • I45822 全局临时表的GPC全局计划缓存信息查询存在问题
  • I442TY PITR指定时间戳恢复失败
  • I45T7A 环境变量分离方式安装的数据库,远程备份异常
  • I464G5 gs_ctl build备机重建指定非实例目录失败报错信息不一致
  • I45TTB file_fdw目前不支持的文件类型创建外表成功,未进行相应报错
  • I491CN cidr类型的网络地址子网掩码为32时,在函数中调用max时报
  • I496VN 备机xlog大量堆积后,修正归档地址,归档失败
  • I49HRV 开启备机归档,备机归档慢,switchover后新主机异常慢
  • I492W4 om安装的数据库,进行mysql_fdw和oracle_fdw外表相关操作数据库core掉
  • I498QT 最大可用模式,同步备参数为ANY2情况下,主机持续压力的情况下,kill-9停止其中一个同步备,主机事务阻塞2s
  • I49L15 开启2备机归档,减容+扩容其中一个节点,另一个节点归档异常
  • I43MTG 新增函数开发者指南无相关资料
  • I42YW8 upsert子查询相关资料未补充
  • I45WDH file_fdw,不支持fixed格式,在开发者指南支持类型应该去掉相关说明
  • I484J0 gs_initdb -T参数未增加校验,且按照指导手册设置后取值不正确
  • I471CS 数据库pgxc_node_name存在‘-’字符时,数据库异常退出,存在残留临时表未清理干净时,无法自动清理和vacuum
  • I40QM1 执行gs_basebackup过程中备节点异常,gs_basebackup进程阻塞无法退出
  • I3RTQK 备节点使用gs_basebackup备份失败,提示could not fetch mot checkpoint info: , status:7

3.2 MogDB 2.1.0版本修复缺陷

  • gs_probackup恢复数据库时提示which doesn't support recovery_target_lsn
  • Statement_history表无法清理
  • 模式级联删除操作引起数据库异常宕机
  • gsql中\d无法查询到同义词对应的表或视图的字段信息
  • lengthb函数不支持blob等大对象字段
  • 在开启sha256验证以后原先md5加密的用户仍然可以通过md5验证成功登陆
  • MogDB中嵌套存储过程内部的raise输出过于细节

4. 兼容性

本版本支持以下操作系统及CPU架构组合:

操作系统 CPU架构
CentOS 7.x X86_64(Intel,AMD,海光,兆芯)
Redhat 7.x X86_64(Intel,AMD,海光,兆芯)
openEuler 20.03LTS ARM(鲲鹏)、X86_64(Intel,AMD,海光,兆芯)
银河麒麟V10 ARM(鲲鹏)、X86_64(Intel,AMD,海光,兆芯)
统信UOS V20-D / V20-E ARM(鲲鹏)、X86_64(Intel,AMD,海光,兆芯)
统信UOS V20-A X86_64(Intel,AMD,海光,兆芯)
Copyright © 2011-2024 www.enmotech.com All rights reserved.