- 博客(377)
- 收藏
- 关注
原创 openGauss 配置客户端接入认证
在配置“pg_hba.conf”文件时,请依据通讯需求按照格式内容从上至下配置记录,优先级高的需求需要配置在前面。openGauss和扩容配置的IP优先级最高,用户手动配置的IP请放在这二者之后,如果已经进行的客户配置和扩容节点的IP在同一网段,请在扩容前删除,扩容成功后再进行配置。这条信息说明已经连接了服务器,但服务器拒绝了连接请求,因为没有在它的pg_hba.conf配置文件里找到匹配的记录。因为认证时系统是为每个连接请求顺序检查“pg_hba.conf”里的记录的,所以这些记录的顺序是非常关键的。
2024-06-25 14:22:51
1232
原创 openGauss 默认权限机制
openGauss支持以下的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、CREATE、CONNECT、EXECUTE、USAGE、ALTER、DROP、COMMENT、INDEX和VACUUM。对象所有者的权限(例如ALTER、 DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隐式拥有的,即只要拥有对象就可以执行对象所有者的这些隐式权限。数据库对象创建后,进行对象创建的用户就是该对象的所有者。表1 ACL权限缩写。
2024-06-25 14:21:52
673
原创 openGauss 扩展FDW与其他openGauss特性
为了执行压缩,我们将索引或表切换到新的内存池,遍历所有实时数据,删除每行并使用新池插入数据,最后删除池,就像执行DROP那样。在执行期间,查询迭代相关的表行,并执行各种任务,如每次迭代的更新或删除。和PostgreSQL不同的是,MOT存储引擎是嵌入在openGauss内部的,表由openGauss管理。它还处理该关系的索引创建,DROP TABLE和DROP INDEX,以及先前在FDW中不支持的VACUUM和ALTER TABLE。为了支持MOT表的创建,重用了标准的FDW语法。
2024-06-25 14:21:22
707
原创 openGauss 角色
它们提供对特定的、通常需要高权限的操作的访问,可以将这些角色GRANT给数据库内的其他用户或角色,让这些用户能够使用特定的功能。具有调用函数pg_cancel_backend、pg_terminate_backend和pg_terminate_session来取消或终止其他会话的权限,但不能操作属于初始用户和PERSISTENCE用户的会话。以gs_role_开头的角色名作为数据库的内置角色保留名,禁止新建以“gs_role_”开头的用户/角色,也禁止将已有的用户/角色重命名为以“gs_role_”开头;
2024-06-25 14:20:39
1320
原创 openGauss 将磁盘表转换为MOT
因此,如果在多表查询、存储过程或事务中访问原始表,则必须将所有相关的磁盘表转换为MOT,或者更改应用程序或数据库中的相关代码。下面介绍如何手动将基于磁盘的表转换为MOT,如何使用gs_dump工具导出数据,以及如何使用gs_restore工具导入数据。此模式与原始表相同,只是所有不支持的类型都已转换为支持的类型。磁盘表直接转换为MOT尚不能实现,这意味着尚不存在将基于磁盘的表转换为MOT的ALTER TABLE语句。检查待转换为MOT的磁盘表的模式是否包含所有需要的列。SMALLTALK 复制 全屏。
2024-06-25 14:19:58
654
原创 openGauss 行级访问控制
当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性(PERMISSIVE | RESTRICTIVE)类型,通过AND或OR方式拼接,应用到执行计划上。行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。示例:某表中汇总了不同用户的数据,但是不同用户只能查看自身相关的数据信息,不能查看其他用户的数据信息。
2024-06-25 14:19:24
376
原创 openGauss 归档账本数据库
如果归档成功,函数返回t,反之则返回f。如果归档成功,函数返回t,反之则返回f。该结果表明,当前节点全局区块表导出成功。账本数据库接口仅审计管理员可以调用。该结果表明当前节点用户历史表导出成功。对指定用户历史表进行归档操作。执行全局区块表导出操作。
2024-06-25 14:18:41
523
原创 openGauss 管理员
要创建新的安全管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库,三权分立打开时,请以安全管理员身份连接数据库,并使用带CREATEROLE选项的。要创建新的审计管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库,三权分立打开时,请以安全管理员身份连接数据库,并使用带AUDITADMIN选项的。监控管理员是指具有MONADMIN属性的帐户,具有查看dbe_perf模式下视图和函数的权限,亦可以对dbe_perf模式的对象权限进行授予或收回。初始用户会绕过所有权限检查。
2024-06-25 14:18:08
929
原创 openGauss 更新表中数据
批量更新或删除数据后,会在数据文件中产生大量的删除标记,查询过程中标记删除的数据也是需要扫描的。故多次批量更新/删除后,标记删除的数据量过大会严重影响查询的性能。但是可以通过声明一个被更新的行必须满足的条件。只有在表里存在主键的时候,才可以通过主键指定一个独立的行。这里的表名称也可以使用模式名修饰,否则会从默认的模式路径找到这个表。新的字段值不仅可以是常量,也可以是变量表达式。在SET子句中的等号是一个赋值,而在WHERE子句中的等号是比较。在这里省略了WHERE子句,表示表中的所有行都要被更新。
2024-06-25 14:16:54
458
原创 openGauss 对比-磁盘与MOT
下表简要对比了基于openGauss磁盘的存储引擎和MOT存储引擎的各种特性。openGauss MOT引擎。openGauss 磁盘存储。纵向扩容(多核,NUMA)英特尔x86+鲲鹏ARM。3(同步、异步、组提交)对比:基于磁盘与MOT。数据容量(数据+索引)SQL和功能集覆盖率。
2024-06-25 14:16:19
182
原创 openGauss 创建-删除MOT
创建MOT非常简单。只有MOT中的创建和删除表语句与openGauss中基于磁盘的表的语句不同。SELECT、DML和DDL的所有其他命令的语法对于MOT表和openGauss基于磁盘的表是一样的。有关MOT的功能限制(如数据类型),请参见。
2024-06-25 14:15:44
167
原创 openGauss 创建和管理索引
如果让数据库系统在ca_address_sk属性上维护一个索引,用于快速定位匹配的元组,则数据库系统只需要在搜索树上查找少数的几层就可以找到匹配的元组,这将会大大提高数据查询的性能。假如用户需要经常查询表tpcds.customer_address_bak中ca_address_sk是5050,且ca_street_number小于1000的记录,使用以下命令进行查询。执行如下命令对索引分区_web_returns_p2_P8_index_重命名_web_returns_p2_P8_index__new。
2024-06-25 14:15:09
1120
原创 openGauss 创建和管理数据库
命令查看当前数据库存储编码),则在创建数据库对象时,如果对象名中含有多字节字符(例如中文),超过数据库对象名长度限制(63字节)的时候,数据库将会将最后一个字节(而不是字符)截断,可能造成出现半个字符的情况。初始时,openGauss包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。这个命令删除了数据库中的系统目录,并且删除了磁盘上带有数据的数据库目录。用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库,赋予创建数据库的权限参见。
2024-06-25 14:14:12
660
原创 openGauss 创建和管理视图
视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。当CREATE VIEW中存在OR REPLACE时,表示若以前存在该视图就进行替换,但新查询不能改变原查询的列定义,包括顺序、列名、数据类型、类型精度等,只可在列表末尾添加其他的列。当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。
2024-06-25 14:13:37
434
原创 openGauss 查看参数值
openGauss安装后,有一套默认的运行参数,为了使openGauss与业务的配合度更高,用户需要根据业务场景和数据量的大小进行GUC参数调整。postgres为需要连接的数据库名称,8000为数据库主节点的端口号。server_version显示数据库版本信息的参数。方法二:使用pg_settings视图。以操作系统用户omm登录数据库主节点。查看数据库运行参数当前取值。MAKEFILE 复制 全屏。方法一:使用SHOW命令。使用如下命令连接数据库。查看服务器的版本号。
2024-06-25 14:12:53
511
原创 openGauss 参数设置
SET设置的会话级参数优先级最高,其次是ALTER设置的,其中ALTER DATABASE设置的参数值优先级高于ALTER USER设置,这三种设置方式设置的优先级都高于gs_guc设置方式。内部使用参数,不推荐用户设置。postgres为需要连接的数据库名称,8000为数据库主节点的端口号。postgres为需要连接的数据库名称,8000为数据库主节点的端口号。postgres为需要连接的数据库名称,8000为数据库主节点的端口号。postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
2024-06-24 18:00:37
878
原创 openGauss Schema
数据库创建初始,默认具有一个名为public的Schema,且所有用户都拥有此Schema的usage权限,只有系统管理员和初始化用户可以在public Schema下创建函数、存储过程和同义词对象,其他用户即使赋予create权限后也不可以创建上述三种对象。当不同Schema中存在同名的对象时,查询对象未指定Schema的情况下,将从搜索路径中包含该对象的第一个Schema中返回对象。通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA。
2024-06-24 17:59:52
467
原创 openGauss NUMA-aware分配和亲和性
MOT有一个智能内存控制模块,它预先为各种类型的内存对象分配了内存池。这种智能内存控制可以提高性能,减少锁并保证稳定性。事务的内存对象分配始终是NUMA-local,从而保证了CPU内存访问的最佳性能,降低时延和争用。被释放的对象返回到内存池中。在事务期间最小化使用操作系统的malloc函数可以避免不必要的锁。
2024-06-24 17:59:17
556
原创 openGauss mysql_fdw
使用外表前,可以在openGauss server所在的机器上,使用MariaDB/MySQL Server的客户端,使用对应的用户名密码确认能否成功连接MariaDB/MySQL Server并进行操作。在openGauss上建立外表时,不会同步在MariaDB/MySQL Server上建表,需要自己利用MariaDB/MySQL Server的客户端连接MariaDB/MySQL Server建表。编译mysql_fdw需要安装MariaDB的开发库和头文件,推荐使用MariaDB的。
2024-06-24 17:58:41
909
原创 openGauss MOT纵向扩容架构
这是数据库行业的公认问题。在PostgreSQL外部数据封装特性的支持下,作为其他数据源的代理的MOT数据库可以创建外表,如MySQL、Redis、X3等。MOT的近线性扩容效果明显优于所有现有方案,并且尽可能接近于获得最佳效果,因现有方案皆受限于硬件(如电线)的物理限制和局限性。通过FDW集成MOT可以重用最上层的openGauss功能,从而显著缩短MOT的上市时间,同时不影响SQL的覆盖范围。为了支持所有缺失的功能,SQL层和FDW接口层已扩展,从而为插入MOT事务存储引擎提供必要的基础设施。
2024-06-24 17:58:08
893
原创 openGauss MOT资源利用率
在4路96核512GB RAM的x86服务器上测试的资源利用率如下所示。MOT能够高效持续消耗几乎所有可用的CPU资源。例如,192核390万tpmC的CPU利用率几乎达到100%。
2024-06-24 17:57:22
427
原创 openGauss MOT应用场景
对于启用已证明是瓶颈的最活跃、高争用和对性能敏感的应用程序表,以及需要可预测的低延迟访问和高吞吐量的表来说,MOT特别有用。MOT可以根据负载的特点,显著加快应用程序的整体性能。MOT通过提高数据访问和事务执行的效率,并通过消除并发执行事务之间的锁和锁存争用,最大程度地减少重定向,从而提高了事务处理的性能。MOT的极速不仅因为它在内存中,还因为它围绕并发内存使用管理进行了优化。数据存储、访问和处理算法从头开始设计,以利用内存和高并发计算的最新先进技术。
2024-06-24 17:56:09
254
原创 openGauss MOT样例TPC-C基准
TPC-C基准是衡量联机事务处理(OLTP)系统性能的行业标准基准。它基于一个复杂的数据库和许多不同的事务类型。这些事务类型在此基准上执行。TPC-C基准测试既不依赖硬件,也不依赖软件,因此可以在每个测试平台上运行。基准模型的官方概述,见tpc.org网站(该数据库由9个不同结构的表组成,因此也包括9种类型的数据。每个表的数据大小和数量不同。在数据库上混合执行五种不同类型和复杂性的并发事务。这些大部分是在线事务或者部分排队等待延迟批处理。
2024-06-24 17:55:35
993
原创 openGauss MOT性能基准
评估openGauss MOT性能和磁盘性能的所有测试都使用了同步日志记录和在MOT中优化的group-commit=on版本。最后我们进行了额外测试,评估MOT快速采集大量数据的能力,并将其作为中间层数据采集解决方案的替代方案。使用存储过程方法可能会产生更高的性能结果,因为它需要大大减少网络往返和数据库封装SQL处理周期。),并且使用交互式SQL命令而不是存储过程来生成工作负载。我们的性能测试是基于业界和学术界通用的TPC-C基准。测试使用了BenchmarkSQL(请参见。2020年6月完成全部测试。
2024-06-24 17:54:52
202
原创 openGauss MOT外部支持工具
为了支持MOT,修改了以下外部openGauss工具。因此,gs_ctl增量构建对于MOT来说不是以增量方式工作,而是以全量方式工作。但是,检查点的位置是从源服务器中的checkpoint_dir获取的,并传输到源数据目录中,以便正确备份。检查点从源服务器的checkpoint_dir读取到目标服务器的checkpoint_dir。此工具用于从主服务器创建备服务器,以及当服务器的时间线偏离后,将服务器与其副本进行同步。在操作结束时,工具将获取最新的MOT检查点,同时考虑checkpoint_dir配置值。
2024-06-24 17:54:16
277
原创 openGauss MOT统计
统计信息主要用于性能分析或调试。在生产环境中,通常不打开它们(默认是关闭的)。统计信息主要由数据库开发人员使用,数据库用户较少使用。统计信息保存在数据库服务器日志中。该日志位于data文件夹中,命名为postgresql-DATE-TIME.log。对性能有一定影响,特别是对服务器。对用户的影响可以忽略不计。有关详细的配置选项,请参阅。
2024-06-24 17:53:45
172
原创 openGauss MOT特性及价值
例如,在基于Arm/鲲鹏的华为TaiShan服务器和基于英特尔至强的戴尔x86服务器上,执行TPC-C基准测试(交互事务和同步日志)。MOT提供的吞吐率增益在2路服务器上达到2.5倍,4路服务器上达到3.7倍,在4路256核Arm服务器上达到480万tpmC。此外,高负载和高争用的情况是所有领先的行业数据库都会遇到的公认问题,而MOT能够在这种情况下极高地利用服务器资源。MOT在高性能(查询和事务延迟)、高可扩展性(吞吐量和并发量)甚至在某些情况下成本(高资源利用率)这些方面拥有显著优势。
2024-06-24 17:53:14
302
原创 openGauss MOT索引
这个添加的后缀是指向行本身的指针,该行具有8个字节的常量大小,并且值对该行是唯一的。虽然行数据占用相同的内存大小,但每个索引(主索引或辅助索引)的每行内存平均高了16字节——基于磁盘的表使用基于锁的B树,大小为29字节,而MOT的Masstree大小为45字节。]的免锁索引,用于多核系统的快速和可扩展的键值(KV)存储,通过B+树的Trie实现。Masstree索引是用于数据和索引管理的MOT内存布局的核心。MOT的主要创新是增强了原有的Masstree数据结构和算法,它不支持非唯一索引(作为二级索引)。
2024-06-24 17:52:43
287
原创 openGauss MOT数据采集速度
预计MOT将针对这一场景进行多项额外的甚至重大的性能改进。更多关于大规模数据流和数据采集的信息,请参阅。该测试模拟海量物联网、云端或移动端接入的实时数据流,快速持续地把海量数据注入到数据库。
2024-06-24 17:52:03
168
原创 openGauss 事务隔离说明
openGauss基于MVCC(多版本并发控制)并结合两阶段锁的方式进行事务管理,其特点是读写之间不阻塞。SELECT是纯读操作,UPDATE和DELETE是读写操作。读写操作和纯读操作之间并不会发生冲突,读写操作之间也不会发生冲突。每个并发事务在事务开始时创建事务快照,并发事务之间不能检测到对方的更改。读写操作,支持的是行级锁,不同的事务可以并发更新同一个表,只有更新同一行时才需等待,后发生的事务会等待先发生的事务提交后,再执行更新操作。
2024-05-16 18:33:27
551
1
原创 openGauss 数据安全维护建议
将log_min_error_statement参数的值设置为PANIC,可以避免将出错的SQL语句记录在系统日志中。因为在默认配置下,当SQL语句执行错误时,日志中会记录出错的SQL语句,而这些SQL语句中可能包含用户个人数据。因为日志级别(log_min_messages)设置为DEBUGx(x为DEBUG级别,取值范围为1~5)时,调试日志中记录的信息可能包含用户的个人数据。为保证openGauss数据库中的数据安全,避免丢失数据,非法访问数据等事故发生,请仔细阅读以下内容。
2024-05-16 18:32:57
306
原创 openGauss 通过创建临时表并截断原始表来执行深层复制
与使用永久表相比,使用临时表可以提高性能,但存在丢失数据的风险。如果数据丢失是不可接受的,请使用永久表。该方法使用CREATE** TEMP **TABLE ... AS语句创建原始表的临时表,然后截断原始表并从临时表填充它完成原始表的深层复制。使用CREATE** TEMP **TABLE AS语句创建表customer_t的临时表副本customer_t_temp。在新建表需要保留父表的主键属性,或如果父表具有依赖项的情况下,建议使用此方法。删除临时表副本customer_t_temp。
2024-05-16 18:32:25
387
原创 openGauss 数据导入和查询的并发
开启事务T1,不提交的同时开启事务T2,事务T1开始执行COPY,事务T2开始执行SELECT,事务T1和事务T2都执行成功。事务T2中查询看不到事务T1新COPY进来的数据。开启事务T1,不提交的同时开启事务T2,事务T1开始执行COPY,然后提交,事务T2查询,可以看到事务T1中COPY的数据。开启事务T1,不提交的同时开启事务T2,事务T1开始执行COPY,然后提交,事务T2 查询,看不到事务T1中COPY的数据。REPEATABLE READ级别。READ COMMITTED级别。
2024-05-16 18:31:47
308
原创 openGauss 通过INSERT语句直接写入数据
openGauss数据库支持完整的数据库事务级别的增删改操作。INSERT是最简单的一种数据写入方式,这种方式适合数据写入量不大,并发度不高的场景。通过JDBC驱动连接数据库执行INSERT语句向openGauss数据库写入数据。使用openGauss数据库提供的客户端工具向openGauss数据库写入数据。用户可以通过以下方式执行。
2024-05-16 18:31:11
444
原创 openGauss 无权限角色导出数据
示例一:执行gs_dump导出数据,用户jack不具备导出数据库human_resource的权限,而角色role1具备该权限,要实现导出数据库human_resource,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。示例三:执行gs_dumpall导出数据,用户jack不具备导出所有数据库的权限,而角色role1(管理员)具备该权限,要实现导出所有数据库,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。指定导出使用的角色名。
2024-05-16 18:30:37
383
原创 openGauss 限制
不过,如果订阅者数据库预期有某种转换或者容错,那么序列需要被更新到最后的值,要么通过从发布者拷贝当前数据的防范(也许使用gs_dump),要么从表本身决定一个足够高的值。注意当恢复到非最新时间点时,由于订阅端复制源记录的remote_lsn可能大于发布端当前的wal日志插入位置,因此在这之间提交的事务无法被解码复制,在remote_lsn之后提交的事务才被解码。发布订阅基于逻辑复制实现,继承所有逻辑复制的限制,同时发布订阅还有下列额外的限制或者缺失的功能。只有表支持复制,包括分区表。
2024-05-16 18:30:05
292
原创 openGauss 相同表的INSERT和DELETE并发
开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后,提交事务T1,事务T2再执行DELETE语句时,此时显示DELETE 0,事务T1提交完成后,事务T2依旧看不到事务T1的数据,一个事务中前后查询到的数据是一致的。开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后,提交事务T1,事务T2再执行DELETE语句时,此时显示DELETE 1,事务T1提交完成后,事务T2可以看到此条数据,可以删除成功。REPEATABLE READ级别。
2024-05-16 18:29:28
397
原创 openGauss 相同表的并发INSERT
开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后,执行事务T2的INSERT语句,可以执行成功,读已提交和可重复读隔离级别下,此时在事务T1中执行SELECT语句,看不到事务T2中插入的数据,事务T2中执行查询语句看不到事务T1中插入的数据。开启事务T1,不提交的同时开启事务T2,事务T1执行INSERT完成后直接提交,事务T2中执行INSERT语句后执行查询语句,看不到事务T1中插入的数据。REPEATABLE READ级别。READ COMMITTED级别。
2024-05-16 18:28:55
385
原创 openGauss 相同表的并发UPDATE
开启事务T1,不提交的同时开启事务T3,事务T1开始执行UPDATE,事务T3开始执行UPDATE,事务T1执行成功,事务T3等待超时后会出错。更新相同行时,事务T1未提交时,未释放锁,导致事务T3执行不成功。开启事务T1,不提交的同时开启事务T2,事务T1开始执行UPDATE,事务T2开始执行UPDATE,事务T1和事务T2都执行成功。更新不同行时,更新操作拿的是行级锁,不会发生冲突,两个事务都可以执行成功。
2024-05-16 18:28:21
406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人