发行说明
用户须知
openGauss是一款极致性能、安全、可靠的关系型(OLTP)开源数据库。采用协议“木兰宽松许可证”(Mulan PSL V2),用户可以自由复制、使用、修改、分发,不论修改与否。
openGauss版本号采用点分位命名规则(X.Y.Z)模式,其中X表示架构变更版本,Y表示每年发布版本,Z表示补丁版本。正常每年会发布一个Y版本,重大架构或特性变更,发布一个新的X版本。openGauss生命周期初步规划为3年。
版本介绍
本版本为openGauss的第一个版本,主要提供如下功能:
- 数据类型,表,临时表,视图,索引,序列,存储过程,函数,触发器等SQL功能;
2.认证,权限管理,网络通信安全,数据库审计等安全特性;
3.主备双机,物理备份,逻辑备份,极致RTO高可用功能;
4.大并发链接,分区,plan hint,NUMA化优化高性能能力。
特性介绍
**标准SQL支持**
支持标准的SQL92/SQL99/SQL2003/SQL2011规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。
**数据库存储管理功能**
支持表空间,可以把不同表规划到不同的存储位置。
**提供主备双机**
事务支持ACID特性、单节点故障恢复、双机数据同步,双机故障切换等。
**应用程序接口**
支持标准JDBC 4.0的特性、ODBC 3.5特性。
**管理工具**
提供安装部署工具、实例启停工具、备份恢复工具。
**安全管理**
支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。
版本使用注意事项
版本技术规格可以参照技术白皮书中的技术指标。
现在最多支持4备,在使用一主多备时,如果主机故障,需要选择一个日志多的备机升主,避免其他备机发生重建。
推荐产品使用一主两备部署模式,保证可靠性和可用性。
已知问题
1.openGauss没有存储空间,文件权限,慢盘监控功能。在存储空间满,文件权限异常时,数据库会退出,日志中会有相应打印信息。在慢盘时,数据库操作会变慢。
2.openGauss只有数据库内核能力,没有主备监控和切换功能。在主备断链,主备日志不匹配时需要进行双机重建。
3.OM默认根据初始配置的主备双机关系启动主备数据库,如果应用对数据库进行了主备切换,需要把新的主备关系通知给OM,避免主备关系发生错乱,导致双机重建。
4.备机只读和并行恢复两个特性不兼容,如果启动了并行恢复,需要关闭备机只读,反之一样。
5.MOT(Memory Optimized Tables)与增量检查点特性不兼容,如果使用MOT,需要关闭增量检查点功能。
CVE漏洞
本版本是openGauss第一个发布版本,没有CVE披露漏洞。
源代码
openGauss主要包含四个代码仓,引用开源软件的补丁代码仓,ODBC驱动代码仓,JDBC驱动代码仓和数据库服务器代码仓:
开源软件代码仓:https://gitee.com/opengauss/openGauss-third_party
JDBC驱动代码仓:https://gitee.com/opengauss/openGauss-connector-jdbc
ODBC驱动代码仓:https://gitee.com/opengauss/openGauss-connector-odbc
数据库服务器代码仓:https://gitee.com/opengauss/openGauss-server
产品描述
本文档对openGauss数据库进行详细描述,包含产品定位、系统架构介绍、应用场景、运行环境、技术指标、基本功能和特性、企业级增强特性介绍等信息。
产品定位
openGauss支持SQL2003标准语法,支持主备部署的高可用关系型数据库。
1.多种存储模式支持复合业务场景。
2.NUMA化数据结构支持高性能。
3.主备模式,CRC校验支持高可用。
系统架构
openGauss是单机系统,在这样的系统架构中,业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并发,实现对数据处理的快速响应。同时通过日志复制可以把数据复制到备机,提供数据的高可靠和读扩展。
软件架构
openGauss是单机系统,支持主备部署。
openGauss逻辑架构如图1所示。
应用场景
**交易型应用**
大并发、大数据量、以联机事务处理为主的交易型应用,如电商、金融、O2O、电信CRM/计费等,应用可按需选择不同的主备部署模式。
**物联网数据**
在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多,采样率高,数据存储为追加模型,操作和分析并重的场景。
运行环境
支持的硬件平台
openGauss支持运行在鲲鹏服务器和通用的x86服务器上:
支持鲲鹏服务器和基于x86_64的通用PC服务器。
支持本地存储(SATA、SAS、SSD)。
支持千兆、万兆Ethernet网络。
支持的操作系统
openEuler release 20.03 (LTS) on ARM。(推荐采用此操作系统)
CentOS 7.6 on X86-64
技术指标
基本功能及特性
企业级增强特性
数据分区
数据分区是数据库产品普遍具备的功能。在openGauss中,数据分区是对数据按照用户指定的策略对数据做的水平分表,将表按照指定范围划分为多个数据互不重叠的部分(Partition)。
openGauss支持范围分区(Range Partitioning)功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。
向量化执行和行列混合引擎
背景信息
在大宽表,数据量比较大、查询经常关注某些列的场景中,行存储引擎查询性能比较差。例如气象局的场景,单表有200~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。
向量化执行
标准的迭代器模型如图1所示。控制流向下(下图实线)、数据流向上(下图虚线)、上层驱动下层(上层节点调用下层节点要数据)、一次一元组(下层节点每次只返回一条元组给上层节点)。
而向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,配合列存特性,可以带来巨大的性能提升。
行列混合存储引擎
openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。
一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不很多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。
如图2所示,行列混合存储引擎可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。
列存下的压缩数据
对于非活跃的早期数据可以通过压缩来减少空间占用,降低采购和运维成本。
openGauss列存储压缩支持Delta Value Encoding、Dictionary、RLE 、LZ4、ZLIB等压缩算法,且能够根据数据特征自适应的选择压缩算法,平均压缩比7:1。压缩数据可直接访问,对业务透明,极大缩短历史数据访问的准备时间。
高可靠事务处理
高并发&高性能
openGauss通过服务器端的线程池,可以支持1W并发链接。通过NUMA化内核数据结构,支持线程亲核性处理,可以支持百万级tpmC。通过页面的高效冷热淘汰,支持T级别大内存缓冲区管理。通过CSN快照,去除快照瓶颈,实现多版本访问,读写互不阻塞。通过增量检查点,避免全页写导致的性能波动,实现业务性能平稳运行。
SQL自诊断
通过执行查询对应的explain performance,获得对应执行计划,是一种十分有效的定位查询性能问题的方法。但是这种方法需要修改业务逻辑,同时输出的日志量大,问题定位的效率依赖于人员的经验。SQL自诊断为用户提供了另一种更为高效易用的性能问题定位方法。
在执行作业之前,配置GUC参数resource_track_level和resource_track_cost,然后运行用户作业,就可以通过查看相关系统视图,获得执行完成的相关查询作业可能存在的性能问题。系统视图中会给出导致性能问题的可能原因,根据这些“性能告警”,参考《开发者指南》中“性能调优 > SQL调优指南 > 典型SQL调优点 > SQL自诊断”章节,就可以对存在性能问题的作业进行调优。
SQL自诊断可以在不影响用户作业,不修改业务逻辑的情况下,诊断出相对准确的性能问题,为用户提供更为易用的性能调优参考。
内存表
内存表把数据全部缓存在内存中,所有数据访问实现免锁并发,实现数据处理的极致性能,满足实时性严苛要求场景。
主备联机
主备双机支持同步和异步复制,应用可以根据业务场景选择合适的部署方式。同步复制保证数据的高可靠,一般需要一主两备部署,同时对性能有一定影响。异步复制一主一备部署即可,对性能影响小,但异常时可能存在数据丢失。openGauss支持页面损坏的自动修复,在主机页面发生损坏时,能够自动从备机修复损坏页面。openGauss支持备机并行日志恢复,尽量降低主机故障时业务不可用的时间。
同时,如果按照主备模式部署,并打开备机可读功能后,备机将能够提供读操作,但不支持写操作(如建表、插入数据、删除数据等),从而缓解主机上的压力。
技术白皮书
部署方案
常用概念
部署形态汇总
部署方案介绍
典型组网
为了保证整个应用数据的安全性,建议将openGauss的典型组网划分为两个独立网络:前端业务网络和数据管理存储网络。
软硬件配置要求
数据库核心技术
支持标准SQL
openGauss数据库支持标准的SQL。SQL标准是一个国际性的标准,定期会进行刷新。SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。遗憾的是,SQL特性的构筑成为了数据库厂商吸引用户和提高应用迁移成本的手段,新的SQL特性在厂商之间差异越来越大,目前还没有机构来进行权威的SQL标准度的测试。
openGauss数据库支持SQL:2011大部分的核心特性,同时还支持部分的可选特性,具体的特性列表可以参考《openGauss 产品描述》。
标准SQL的引入为所有的数据库厂商提供统一的SQL界面,减少使用者的学习成本和应用openGauss程序的迁移代价。
支持标准开发接口
提供业界标准的ODBC及JDBC接口,保证用户业务快速迁移至openGauss。
目前支持标准的ODBC 3.5及JDBC 4.0接口,其中ODBC支持SUSE、Win32、Win64平台,JDBC无平台差异。
事务支持
事务支持指的就是系统提供事务的能力,支持全局事务的ACID,保证事务的原子性、一致性、隔离性和持久性。。
事务支持及数据一致性保证是绝大多数数据库的基本功能,只有支持了事务,才能满足事务化的应用需求。
A:atomicity 原子性
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
C:consistency 一致性
事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务的数量。
I: Isolation 隔离性
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
D:Durability 持久性
在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
支持事务的默认隔离级别是读已提交。保证不会读到脏数据。
事务分为单语句事务和事务块,相关基础接口:
Start transaction; 事务开启
Commit; 事务提交
Rollback; 事务回滚
函数及存储过程支持
函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。
存储过程是SQL、PL/SQL的组合。存储过程可以使执行商业规则的代码从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。
允许客户模块化程序设计,对SQL语句集进行封装,调用方便。
存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。
系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。
支持6种异常信息级别方便客户对存储过程进行调试。
openGauss支持SQL标准中的函数及存储过程增强了存储过程的易用性。
PG接口兼容
兼容PSQL客户端,兼容PostgreSQL标准接口。
支持SQL hint
支持SQL hint影响执行计划生成、提升SQL查询性能。
Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,等多个手段来进行执行计划的调优,以提升查询的性能。
Copy接口支持容错机制
openGauss提供用户封装好的Copy错误表创建函数,并允许用户在使用Copy From指令时指定容错选项,使得Copy From语句在执行过程中部分解析、数据格式、字符集等相关的报错不会报错中断事务、而是被记录至错误表中,使得在Copy From的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。
高性能
CBO优化器
openGauss优化器是典型的基于代价的优化 (Cost-Based Optimization,简称CBO)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价(cost),进而选出整体执行代价最小/首元组返回代价最小的执行方式进行执行。
CBO优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。
行列混合存储
openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。
一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不很多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。
在大宽表、数据量比较大的场景中,查询经常关注某些列,行存储引擎查询性能比较差。例如气象局的场景,单表有200~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。
行存表和列存表各有优劣,建议根据实际情况选择。
行存表
默认创建表的类型。数据按行进行存储,即一行数据紧挨着存储。行存表支持完整的增删改查。适用于对数据需要经常更新的场景。
列存表
数据按列进行存储,即一列所有数据紧挨着存储。单列查询IO小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询,insert插入单条记录性能差。
行存表和列存表的选择原则如下:
更新频繁程度
数据如果频繁更新,选择行存表。
插入频繁程度
频繁的少量插入,选择行存表。一次插入大批量数据,选择列存表。
表的列数
表的列数很多,选择列存表。
查询的列数
如果每次查询时,只涉及了表的少数(<50%总列数)几个列,选择列存表。
压缩率
列存表比行存表压缩率高。但高压缩率会消耗更多的CPU资源。
自适应压缩
当前主流数据库通常都会采用数据压缩技术。数据类型不同,适用于它的压缩算法不同。对于相同类型的数据,其数据特征不同,采用不同的压缩算法达到的效果也不相同。自适用压缩正是从数据类型和数据特征出发,采用相应的压缩算法,实现了良好的压缩比、快速的入库性能以及良好的查询性能。
数据入库和频繁的海量数据查询是用户的主要应用场景。 在数据入库场景中,自适应压缩可以大幅度地减少数据量,成倍提高IO操作效率,将数据簇集存储,从而获得快速的入库性能。当用户进行数据查询时,少量的IO操作和快速的数据解压可以加快数据获取的速率,从而在更短的时间内得到查询结果。
目前,数据库已实现了RLE、DELTA、BYTEPACK/BITPACK、LZ4、ZLIB、LOCAL DICTIONARY等多种压缩算法。数据库支持的数据类型与压缩算法的映射关系如下表所示。
分区
SQL by pass
在典型的OLTP场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,提出了SQL-BY-PASS框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。鲲鹏NUMA架构优化
高扩展
线程高并发
在OLTP领域中,数据库需要处理大量的客户端连接。因此,高并发场景的处理能力是数据库的重要能力之一。
对于外部连接最简单的处理模式是per-thread-per-connection模式,即来一个用户连接产生一个线程。这个模式好处是架构上处理简单,但是高并发下,由于线程太多,线程切换和数据库轻量级锁区域的冲突过大导致性能急剧下降,使得系统性能(吞吐量)严重下降,无法满足用户性能的SLA。
因此,需要通过线程资源池化复用的技术来解决该问题。线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接session,这样把session和thread进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行session的调度管理。
高可用
主备机
为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下,openGauss能够保证故障之前的数据无丢失,满足ACID特性。主备环境可以支持主备和一主多备两种模式。主备模式下,备机需要重做日志,可以升主,。在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备主要用于一般可靠性的OLTP系统能够节省一定的存储资源。而一主多备提供更高的容灾能力,适合于更高可靠性事务处理的OLTP系统。
主备之间可以通过switchover进行角色切换,主机故障后可以通过failover对备机进行升主。
初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要build功能,将主机的数据和WAL日志发送到备机。主机故障后重新以备机的角色加入时,也需要build功能将其数据和日志与新主拉齐。Build包含全量build和增量build,全量build要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量build只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量build来进行故障恢复,如果增量build失败,再继续执行全量build,直至故障恢复。
逻辑备份
openGauss提供逻辑备份能力,可以将用户表的数据以通用的text或者csv格式备份到本地磁盘文件、,并在同构/异构数据库中恢复该用户表的数据。
物理备份
openGauss提供物理备份能力,可以将整个实例的数据以数据库内部格式备份到本地磁盘文件、中,并在同构数据库中恢复整个实例的数据。
物理备份主要分为全量备份和增量备份,区别如下:全量备份包含备份时刻点上数据库的全量数据,耗时时间长(和数据库数据总量成正比),自身即可恢复出完整的数据库;增量备份只包含从指定时刻点之后的增量修改数据,耗时时间短(和增量数据成正比,和数据总量无关),但是必须要和全量备份数据一起才能恢复出完整的数据库。当前openGauss只支持全量备份。
可维护性
支持WDR诊断报告
慢SQL诊断
慢SQL诊断分为两部分:实时慢SQL 和历史慢SQL。
实时慢SQL能根据用户提供的执行时间阈值,输出当前系统中正在执行的,且执行时间超过阈值的作业信息。
历史慢SQL能根据用户提供的执行时间阈值,记录所有超过阈值的执行完毕的作业信息。
历史慢SQL提供表和文件两种维度的查询接口,用户从接口中能查询到作业的执行计划,开始、结束执行时间,执行查询的语句,行活动,内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间等。所有信息都是脱敏的。
应用价值:
实时的慢SQL提供给用户管理尚未执行完毕的作业的接口,用户可以手动结束异常的,消耗过多资源的作业。
历史慢SQL提供给用户对于慢SQL诊断所需的详细信息,用户无需通过复现就能离线诊断特定慢SQL的性能问题。表和文件接口方便用户统计慢SQL指标,对接第三方平台
支持一键式收集诊断信息
提供多种套件用于捕获、收集、分析诊断数据,使问题可以诊断,加速诊断过程。能根据开发和定位人员的需要,从生产环境中将必要的数据库日志、集群管理日志、堆栈信息等提取出来,定位人员根据获得信息进行问题的定界定位
一键式收集工具,根据生产环境中问题的不同,从生产环境中获取不同的信息,从而提高问题定位定界的效率。用户可以通过改写配置文件,收集自己想要的信息:
通过linux命令收集操作系统相关的信息
通过查询系统表或者视图获得数据库系统相关的信息
数据库系统运行日志和集群管理相关的日志
数据库系统的配置信息
数据库相关进程产生的Core文件
数据库相关进程的堆栈信息
数据库进程产生的trace信息
数据库产生的redo日志文件xlog
计划复现信息
数据库安全
访问控制
管理用户对数据库的访问控制权限,涵盖数据库系统权限和对象权限。
支持基于角色的访问控制机制,将角色和权限关联起来,通过将权限赋予给对应的角色,再将角色授予给用户,可实现用户访问控制权限管理。其中登录访问控制通过用户标识和认证技术来共同实现,而对象访问控制则基于用户在对象上的权限,通过对象权限检查实现对象访问控制。用户在为相关的数据库用户分配完成任务所需要的最小权限从而将数据库使用风险降到最低。
支持三权分立权限访问控制模型,数据库角色可分为系统管理员、安全管理员和审计管理员。其中安全管理员负责创建和管理用户,系统管理员负责授予和撤销用户权限,审计管理员负责审计所有用户的行为。
默认情况下,使用基于角色的访问控制模型。客户可通过设置参数来选择是否开启三权分立控制模型。
控制权和访问权分离
针对系统管理员用户,实现表对象的控制权和访问权分离,提高普通用户数据安全性,限制管理员对象访问权限。
该特性适用于如下场景,即对于有多个业务部门的企业,各部门间使用不同的数据库用户进行业务操作,同时存在同级别的数据库维护部门使用数据库管理员进行运维操作,业务部门希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权分离,提高用户数据的安全性。
系统管理员可以在创建用户时指定INDEPENDENT属性,表示该用户为私有用户。针对该用户的对象,数据库管理员(包含初始用户和其他管理员用户)在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。
数据库加密认证
采用基于RFC5802机制的口令加密认证方法。
加密认证过程中采用单向Hash不可逆加密算法PBKDF2,可有效防止彩虹攻击。
创建用户所设置的口令被加密存储在系统表中。整个认证过程中口令加密存储和传输,通过计算相应的hash值并与服务端存储的值比较来进行正确性校验。
统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者口令的正确性。
数据库审计
审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。
用户可以通过参数配置对哪些语句或操作记录审计日志。
审计日志记录事件的时间、类型、执行结果、用户名、数据库、连接信息、数据库对象、数据库实例名称和端口号以及详细信息。支持按起止时间段查询审计日志,并根据记录的字段进行筛选。
数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。
网络通信安全特性
支持通过SSL加密客户端和服务器之间的通信数据,保证客户的客户端与服务器通信安全。
采用TLS 1.2协议标准,并使用安全强度较高的加密算法套件,支持的加密算法套件如表1所示。
行级访问控制
行级访问控制特性将数据库访问粒度控制到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,按照行访问控制策略,读取到的结果可能是不同的。
用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性(PERMISSIVE | RESTRICTIVE)类型,通过AND或OR方式拼接,应用到执行计划上。
行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前行级访问控制支持的SQL语句包括SELECT,UPDATE,DELETE。