3月31日,openGauss 2.0.0 版本正式上线!openGauss 2.0.0 是openGauss社区发布的第一个Release版本。2.0.0版本与之前版本保持兼容的同时,也新增了众多特性,特别是在高性能、高安全和智能化的打造上有了更大的突破。
1 鲲鹏NUMA架构优化,实现性能业界领先
openGauss | 2P | 4P | 线性度 |
---|---|---|---|
架构优化后 | 150 | 230 | 150% |
4P鲲鹏性能达到230万tpmC(每分钟处理交易量,被业界广泛用于衡量计算机系统的事务处理能力),满足1.5倍线性度,单机TP性能保持业界领先,同时也证明了openGauss足以支撑金融行业新核心业务系统场景。
-
openGauss根据鲲鹏处理器的多核NUMA架构特点,进行了一系列针对NUMA架构特性的相关优化。一方面降低了跨核内存访问的时延问题,另一方面充分发挥了鲲鹏多核算力优势,通过日志无锁并行插入、SQL ByPass、动态剪枝等关键技术,大幅提升交易型负载系统的处理性能。
-
openGauss基于鲲鹏920所使用的架构利用LSE扩展指令集实现高效的原子操作,有效提升CPU利用率,从而提升线程间同步性能、XLog写入性能等。
-
openGauss基于鲲鹏920提供的L3缓存CacheLine,实现热点数据访问优化,有效提高缓存访问命中率,降低Cache缓存一致性维护开销,大幅提升系统整体的数据访问性能。
2 全密态、AI特性加持,引领数据库发展新方向
2.1 突破纯软数据密文查询和计算关键技术,提供性能更优的全密态检索方案
- 全密态数据处理(含数据密态插入、更新、表达式等值过滤),性能劣化不超过5%。
- 密态等值查询落地openGauss,全面推进全密态技术标准行业落地,开放机密计算生态。
2.2 强化AI4DB的数据库自调优、自诊断能力,突破DB4AI原生库内机器学习机制
- 索引推荐 有效解决90%以上因索引配置不当导致的慢查询;TPC-DS标准benchmark数据集下有60%的SQL语句可获得不同程度的性能提升。
- 监控与异常检测 问题发现效率相比人工on-call提升1倍,在TPC-C标准benchmark数据集上验证发现人工注入故障场景下的问题召回率高达到90%以上。
- MADLib兼容 支持60+ MADLib生态的算法。
3 新增众多企业级特性 持续构建openGauss数据库竞争力
openGauss 2.0.0 新增特性:
- 极简安装 极简版省去集群管理工具,直接提供数据库内核二进制文件,可以快速的启动数据库实例,安装配置简单,适合个人开发者使用。
- 支持延迟备库 支持在备机延时指定的时间后恢复主机发来的XLOG日志,延时后的备机相当于提供了一份可查询的指定时间段前的数据副本,方便纠正过程操作错误。
- 备机支持逻辑复制 支持外部DRS连接备机进行逻辑解码,降低主机压力。
- 扩容工具优化 支持不停服在线扩容,同时支持备机和级联备扩容。
- 灰度升级 优化升级工具,增加灰度升级能力,支持业务在线升级。可支持社区1.1.0版本灰度升级到2.0.0版本。
- 备机IO写放大优化 优化备机IO,降低单次检查点刷盘IO量,有效解决auto vacuum/vacuum慢问题。
- WDR诊断报告 WDR诊断报告新增“Effective CPU”、“WalWrite NoWait”、“Soft Parse”、“Non-Parse CPU”四个数据库运行指标,提升系统DFx分析能力。
- Data Studio客户端工具特性 Data Studio对openGauss多个内核特性提供支持,包括:
- 增加pldebugger调试功能。
- 增加pldebugger调试功能的回滚,在使用Data Studio调试前增加选项来保证调试函数在修改完数据后回退。
- 支持xml和serial(big|normal|small)类型。
- 支持在Data Studio中创建和展示外表对象。
- 列存表增加支持partial_cluster_key约束。
- 全局临时表支持DDL的展示和导出。
- 创建分区表支持LOCAL和GLOBAL标记。
- 增加MOT表的展示。
openGauss 1.0.1新增特性:
openGauss 1.0.1定位为Update版本,与原来的1.0.0版本特性功能保持兼容,新增特性如下:
-
XML类型 XML数据类型可以用于存储XML数据。将XML数据存到text类型中的优势在于它能够为结构良好性来检查输入值,并且还支持函数对其进行类型安全性检查。要使用这个数据类型,编译时必须使用configure --with-libxml。
-
伪列ROWNUM ROWNUM为查询出来的每一行记录生成一个序号,从1开始依次递增且不会重复。
-
聚合函数median median返回给定数值的中值,中值是在一组数值中居于中间的数值,如果参数集合中包含偶数个数字,函数median将返回位于中间的两个数的平均值。
-
全局临时表 每个数据库只需要创建一次临时表,全局临时表对象放在数据字典中。临时表(Temporary table)用于保存事务或会话期间的中间结果集,临时表中保存的数据只对当前会话可见,所有会话都看不到其他会话的数据;即使当前会话已经提交了(commit)数据,别的会话也看不到它的数据。临时表可以是会话的,临时表中的数据可以跨提交存在,即提交之后仍然存在,但是断开连接后再连接时数据就没有了。也可以是基于事务的,提交之后数据就消失。
-
外部表 数据不存在于数据库中的表。通过向DB提供描述外部表的元数据,可以把一个操作系统文件或者外部数据源当成数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问。外部表是对数据库表的延伸。FDW(Foreign Data Wrappers)插件允许在openGauss里访问其他异构数据库的表,openGauss支持Foreign Data Wrappers for oracle(oracle_fdw),Foreign Data Wrappers for MySQL(mysql_fdw)和Foreign Data Wrappers for PostgreSQL(Postgres_fdw),从而支持在openGauss中访问异构其他数据库。使用这些插件需要安装相应数据库的客户端包,需要重新编译openGauss,在configure时配置enable_mysql_fdw和enable_oracle_fdw. 数据库启动后使用create extension创建扩展组件,create server配置异构数据库连接参数,create user mapping创建异构用户映射关系,CREATE FOREIGN TABLE创建指定数据库的外表。
-
物化视图 物化视图是数据库查询结果数据的本地副本,存储基于数据表的数据,也可以称为快照。在关系型数据库中普通的视图是一种虚拟(virtual)表,只是存储SQL语句。而物化视图是将视图的查询结果缓存(cached)到了具体(concrete/materialized)表中,存储实际的数据。物化视图主要用于预先计算并保存表连接或聚合等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果。物化视图使用查询重写(query rewrite)机制,不需要修改原有的查询语句,引擎自动选择合适的物化视图进行查询重写,完全对应用透明。
-
外键 外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表,外键建立了主表和从表之间的参照完整性约束。
-
UPSERT(insert on conflict do) 当插入遇到约束错误时,直接返回或者改为执行UPDATE.
-
存储过程内commit,单独调试和调用无参数存储过程可以省去括号 在存储过程中可以调用commit, 分批提交数据,保证数据的可靠性。支持设置断点和单步调试,存储过程调试是一种调试手段,可以在存储过程开发中,一步一步跟踪存储过程执行的流程,根据变量的值,找到错误的原因或者程序的bug,提高问题定位效率。
-
自治事务 自治事务(autonomous transaction)允许你创建一个"事务中的事务",它能独立于其父事务提交或回滚。利用自治事务,可以开始一个新事务,完成一些工作,然后提交或回滚,所有这些都不影响当前所执行事务的状态。自治事务约束参照规格约束的自治事务部分说明。
-
关键字别名 关键字如name、value、type作为查询结果列别名。
-
逻辑复制 在逻辑复制中把主库称为源端库,备库称为目标端数据库,源端数据库根据预先指定好的逻辑解析规则对WAL文件进行解析,把DML操作解析成一定的逻辑变化信息(标准SQL语句),源端数据库把标准SQL语句发给目标端数据库,目标端数据库收到后进行应用,从而实现数据同步。逻辑复制只有DML操作。逻辑复制可以实现跨版本复制,异构数据库复制,双写数据库复制,表级别复制。
-
增量备份/恢复(beta) 支持对数据库进行全量备份和增量备份,支持对备份数据进行管理,查看备份状态。支持增量备份的合并,过期备份的删除。数据库服务器动态跟踪页面更改,每当一个关系页被更新时,这个页就会被标记为需要备份。增量备份功能需要打开GUC参数 enable_cbm_tracking, 以便允许服务器跟踪修改页。
-
恢复到指定时间点(PITR) 时间点恢复(Point In Time Recovery)基本原理是通过基础热备 + WAL预写日志 + WAL归档日志进行备份恢复。重放WAL记录的时候可以在任意点停止重放,这样就有一个在任意时间的数据库一致的快照。即可以把数据库恢复到自开始备份以来的任意时刻的状态。在恢复时可以指定恢复的停止点位置为TID,时间和LSN。
-
备机replay模式 主备双机同步支持remote_apply模式,在remote_apply模式下,主机需要等待备机日志redo恢复完才返回给应用。
-
全局分区索引(Global Partitioned Indexes) 全局索引就是在全表上创建索引,它是独立的索引。如果查询引用非分区字段时可以提升性能。
-
基于范围分区的自动扩展分区 INTERVAL分区是针对Range类型分区的一种功能拓展。对连续数据类型的Range分区,如果插入的新数据值与当前分区均不匹配,Interval-Partition特性可以实现自动的分区创建。分区字段必须是整型或时间类型。
-
并行查询(beta) 支持并行扫描算子,优化 SQL 语句的执行方式,从单一线程,最多使用单个 CPU 运算的模式,提升到多线程,协同完成工作的模式。并行查询消耗更多的硬件资源,但大大提高了任务的执行效率。当前支持顺序扫描,nestloop算子的并行查询。
-
OS平台 支持openEuler 20.3 LTS on X86-64和麒麟V10 on ARM;支持在openEuler和CentOS的容器上运行。
◾ 支持Alter System set语法修改数据库实例级参数
在会话内通过alter system set语句可以修改系统参数的值。根据不同参数的要求,在重新连接或者重启数据库后,可以修改成功并将参数写入postgresql.conf和postgresql.conf.bak配置文件中。
- 支持ipv6协议 数据库支持使用ipv6协议进行连接。
- postgis插件 postgis一个空间数据库,它增加了地理对象的支持,它使用的数据类型为点、线、面,允许在SQL中进行空间关系位置查询。使用该功能前需要安装postgis插件。
- 支持Gin索引 gin索引,即通用倒排索引,是一个存储集合的数据结构。gin索引适合用于多值类型的元素搜索,比如数组和全文检索。
- 支持存储过程调试 通过安装pldebuger插件,可以对函数和存储过程的SQL语句进行调试。
- 支持备机扩容 支持工具对数据库集群进行扩容备机。可以从单机或者主备数据库最多扩容到一主四备。
- 支持WDR自动诊断分析报告 WDR(Workload Diagnosis Report)基于两次不同时间点系统的性能快照数据,生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。
- 支持异构数据库事务级同步能力(限DML)
- 支持容器化部署(alpha) 提供单机数据库的容器化部署能力。先通过脚本构建数据库的docker镜像,启动镜像后,可以将单机数据库以容器化方式部署运行。
4 开放治理,多个伙伴加入社区 社区组织架构更加完善
北京超图软件股份有限公司、北京优炫软件股份有限公司、北京快立方科技有限公司等公司已经签署CLA,正式加入openGauss社区,越来越多的力量加入到社区建设中来。 截止目前openGauss已经成立包括OM、In-place Update、IoT、AI等11个专项兴趣小组(简称SIG),包括海量数据、云和恩墨、工商银行、清华大学等多个组织的成员发起或参与到社区的各个SIG小组,带领小组成员拓展技术方向,贡献新特性,实现下一个版本的技术规划。同时社区技术委员也开始运作,openGauss社区开放治理成架构日趋完善。 经过半年多的发展和沉淀,openGauss无论从技术演进、社区生态建立、商业落地均已进入快速成长期,未来openGauss将围绕客户场景和需求持续构建更多竞争力,打造企业级数据库开源社区。
5 感谢openGauss社区贡献者 让我们一起打造一个有温度的社区
(以下名单为社区开发者Gitee账号,排名不分先后) <font size=2> wanfang5, chendong76, liumin35, sqyyeah, zhanghuan96, yangweiqiang, zhang_xubo, zhangjianjun_code, daiguatutu, jia_junfeng1, scarbor_fair, lvmiao1229, tiantianxiangshang2020_admin, wanggzzs, zzzzzdb, lee1002, opengauss-bot, solinin, zhangzhijingMY, haomeng802, gaojia629, gitwangxx, zhanglu626, aiyotian, struggle_hw, wuyuechuan, hongyehongye1, vastbase_yzhang, xiangxinyong, yunlongg, blue_dwwc, cyw-0-ng, yansong_lee, zhouxiongjia, Alacebat_admin, guoweibiao, qumin201452, wenbling, zhang-tingting27, llzx373, zha_hw, anikikong, chenguojie, gongsiyi150, justbk, liushengxi, liyang0608, pan-jun, totaj, willemjiang, wind-rain-gs, zhangxiaohai928, chenxiaobin19, cui-zhenyu, gentle_hu, liang_-123, sun_xu_zong, wan005, wang-tq, y1309639, baiyejuan, emmajiang, houjhibofa, husthxd, kivaking, li-jun056, lijiangbei, lvhui123456, otis4631, xixicat, yangyang374, zhanglf-zkfr, diagon-alley, hillseas, jerome-duomi, jin_li, li_jianqiu, liao-shiting, lys6676, nifinity, qinzhiyan, ricardo_cui, sundan0108, vastdata_admin, wangpy_1092, xiezhipeng1, yidianjiujin, yinzhishu, you-and-me, ywzq1161327784, alienmoe, bang1232, bzhaoop, dolphin-m, du-yuying, eloce, enbokang, gauss__gaoshi, giteegauss, grozazz, gwx5327679, haowen17, hemny, hthinks, huzhengce, jane_minjun, jia-weili, johnnyzhou, kexulin, kixiong, like11, luo_zihao5524, ningyali, nwen_hw, pikeTWG, qian-dan, realzhouqingqing, reganhe_xx, siven_dev, unicorn_penq, vinothv, weim-123, willloong, wustczx, xh19, xianhongye, xiong_xjun, xue_meng_en, yang558, ylfan96, yutang1, zbxue, Adoube_548, RayH2020, april01xxx, barbedcc, bertliu, big_pig_123, bosihouzi, bowen9799, catofpei, chen_chenn, chennaidong, chenzang, chunlei007, cylfsbm, dikk123, eumenide5, flytigerman, fss567, gwchengcheng, huanglongjun1, husan1024, iambowen1984, initlove, jcc123, jeffee, jie_lei, jimmyhujiming, jinyu_opengauss, jitao10, kamusis, karna, krircc, lazpf, liangweii, lilexun, linxiaoxu131415, liuwei37218, lizhenfeng123, lj-it, lmte3e4, lorand, luyao201, ma_xiaodi, matrix0xcc, nanmu2018, nonolili527, open__gs__2020, ouruiting, panchenbo, puti_a, qq45068, romber, s36326, seulingfeng, shi-dongrong, stanleyren, su-zixin, sun_madman, tbing8803, templingfeng, tomas__junny, tonyhehe, toyato, trollzhao, wang_deng_yang, wangrui_rui, wei-haixu, weihan666, wjmcat, wjzeng, wn952000, wotchin, wu-yaxin, wuyi1405, xinmiaomiao, xmgps, xzyinyong, yang-zhen-a, yangkang52, yikunkero, ympc, yuwenboj, yuzhenglin, yz_db, zfy1110, zhaorenhai, zhongjun2, zhouzhishan, zilf, zju_hzd, zmm0810, zp123456, zumingjiang, zzcyd, 282656323, Cairo-SR8, Datrilla, Hsiung_xcw, I-1688, I-am-a-robot, IreneByron, JuhuaCan, MartinChoo, MrVulcan, OAGroup, QiuyeLin, ShawDa, VickyGroup, Xiao__Ma, YangHao666666, a-i-c, aaronwell, abelit, acidxyz, alan10, alexchar, andrewj, angelyoyou, anormalcell, aocool, aranadall, ariesdevil, aristophanes, ashnah0, awesomeleo, banpo_code_guest, bigDataEngine, bihua111, bluegenius, boleynsu, boz01, buter, castleBo, cevinc, cgo6, changxidb, chaocat, charleyw, chenchen746, chengfa110, chenhao7253886, chenlinfeng3, chenxiaobin6o9, chinapenglin, chla, chosending, chshfei, click2cloud_beta, click2cloud_ninja, coca, code_wolf, codewithselena, creationos, cting66, cyj10727, cyqw, dabudaqiu, danqu722, database_structure, ddwolf, deadsec, dengxuyue, dercury, ding_jie_001, docker_ming, drdstech, dreamr126, duoketang, duomibabi, duyanrong, echo3301, edollar, enmotech, eric-yuanhui, ericwangpeng, ericyuanhui, fenghui111, flyly, frankdemo, fuhm_star, fyw, gaiguoqiang12, gaoyunlong12, garyhuc, gauppo, gauss2, georgecao, ginin, git-dancer, glowd, guldan1982, guoliang_li, guoxinying123, gwp2464, gyt0221, handan_new_port_network_867494626, hangjin2020, hanxinke, he_ray, hellozuochao, hezhixiang1, hiha2120290476, hitmr_12, hljhnu, hly_rick_sanchez, hongfeiq, honglubaba, houlei0055, huangchengcheng1, huangning2, huangyinfu, huangzijian888, huawei_8, huaweigauss, hust_lilin, huxiangyu, igingo, iloveuever, infomation1, ironlee123, isoftstar, isupermap, isxiaoze, jackchenchenchen, jarekzhang, jianfenglee, jiang_jianyu, jiangxiangbo, jiaruozhi, jiawen1987, jiazongxiu, jidedong, jixi_hexi, jjjtheripper, joe2hpimn, junhangis, kcana, kidd__cn, king-gao, lance5401, lansehanbing, leerway, lesliexx, less_sleep, lhfree, li_songfeng, liheng188, lihongda12, linianA, lionxu_admin_admin, lisa100, lishifu_db, lishuaituan, littleFuBaby, liu_hui0228, liu_hui199828, liu_yang_ywxkhhh, liujunchigo, liuxu34, liuyu85cn, lixianlin01, liyifeng-seu, lllllllly, looplocked, lpbeijing, lqd-holy, lqkitten, luciferfgy, luo0303, luohongbins, maceatmore, majianboopengauss, meimeidtt, minshengyunwei, mobnet, moonjer, morinson, mujinqiiang, mxl_123456, mywind_code, nkuacac, nu_58212367, null_254_0217, opengauss_yanghaiyan, opengaussorg, opgauss, oscqascan, pei-jisheng, pengweijunPanda, pfzheng, pig_man3393, pizero, pku__lisihao, plusvolcano, popastin, powerqy, pure_qsh, qin-wei, qindongqd, qqleee, real_zychen, redflag, refactor_liu, reliance, romberli, shaga, shashwati-mishra, shenyuflying, shenzhen_panda_1515019109, shiddan, shinestarstar, shirley12qiu, shirley_zhengx, shiyaXA, sl0915, sneha-bhiwankar, song-zhenyu0612, song_haidong, souffle, ssnoda, ststshuitao, suniumo, suoren, susircode, sword-fairy-water-easy, sword_fairy_water_easy, szshfy, tangyibo, tedlz123, testHpro, th__under, the_real_fengfuming, thexiong7, thundercw, tianbing8803, toolscreator, travelliu, tuohai666, turquesalan, tuzouzhi999, viashaw, victor-zhc, victoryGroup, vincent1988, voyllente, wang-zhenzhen27, wang-zili, wang_pei_heng, wangdengke6, wangxinlian, wangzhijun2018, wcting163, wei_chao_xu, weidongkl, winginsky, winsty, wumizhang, wuxue77, wuzisanshengshi, wx_422c5b54d5, xiaomayifg, xiaotao-huang, xiepy, xiliu_h, xinhe65045, xiongdaofu, xq_gitee, xu_hong_liang, xue-weijing, xukunpeng, xulijie09, xushiyao, xzx666, yangdi07, yanghaos, yangshaoxing1001, yangyingchao, yaoyaoo2011, yeah_lang, yin-jue-song, yipianyouzi, yl_lisen, yonglehou, yongzhuli, youtubezou, ysenmiao, yuejiashen, yujiangaaa, yukai_k, yunmeng, yuzhang_li, yxotis, yyt030, yzk630, z0wang, zag2020, zankyfun4, zengchen1024, zerodefect, zha__hw123, zhang_jiecr7, zhang_yangeng, zhangfengzhi123, zhangshujie82, zhangtong1204, zhangxinyao1986, zhangy13, zhangyulong34, zhao_fangyang, zhaodu, zhaowx_admin, zheng_zelin, zhengchengguang, zhengtongyan, zhengyang168, zhengyuhanghans, zhouqinsupermap, zhouqinsupermap_admin, zhouzhiwei1992, zhu_jinwei, zhuzhijiao, zooah, zou_jinda, zsfxy, zwgiles </font>
Gauss松鼠会是汇集数据库爱好者和关注者的大本营, 大家共同学习、探索、分享数据库前沿知识和技术, 互助解决问题,共建数据库技术交流圈。