并发写入示例-相同表的INSERT和DELETE并发
事务T1:STARTTRANSACTION;INSERTINTOtestVALUES(1,'test1','test123');COMMIT;事务T2:STARTTRANSACTION;DELETEtestWHERENAME='test1';COMMIT;场景1:开启事务T1,不提交的同时开启事务T
管理并发写入操作-并发写入示例
并发写入示例本章节以表test为例,分别介绍相同表的INSERT和DELETE并发,相同表的并发INSERT,相同表的并发UPDATE,以及数据导入和查询的并发的执行详情。CREATETABLEtest(idint,namechar(50),addressvarchar(255));相同表的INSE
管理并发写入操作-并发写入事务的潜在死锁情况
只要事务涉及多个表的或者同一个表相同行的更新时,同时运行的事务就可能在同时尝试写入时变为死锁状态。事务会在提交或回滚时一次性解除其所有锁定,而不会逐一放弃锁定。例如,假设事务T1和T2在大致相同的时间开始:如果T1开始对表A进行写入且T2开始对表B进行写入,则两个事务均可继续而不会发生冲突;但是,如
管理并发写入操作-写入和读写操作
关于写入和读写操作的命令:INSERT,可向表中插入一行或多行数据。UPDATE,可修改表中现有数据。DELETE,可删除表中现有数据。COPY,导入数据。INSERT和COPY是纯写入的操作。并发写入操作,需要等待,对同一个表的操作,当事务T1的INSERT或COPY未解除锁定时,事务T2的INS
管理并发写入操作-事务隔离说明
GaussDB200基于MVCC(多版本并发控制)并结合两阶段锁的方式进行事务管理,其特点是读写之间不阻塞。SELECT是纯读操作,UPDATE和DELETE是读写操作。读写操作和纯读操作之间并不会发生冲突,读写操作之间也不会发生冲突。每个并发事务在事务开始时创建事务快照,并发事务之间不能检测到对方
导入数据-对表执行VACUUM
如果导入过程中,进行了大量的更新或删除行时,应运行VACUUMFULL命令,然后运行ANALYZE命令。大量的更新和删除操作,会产生大量的磁盘页面碎片,从而逐渐降低查询的效率。VACUUMFULL可以将磁盘页面碎片恢复并交还操作系统。对表执行VACUUMFULL。以表product_info为例,V
导入数据-分析表
执行计划生成器需要使用表的统计信息,以生成最有效的查询执行计划,提高查询性能。因此数据导入完成后,建议执行ANALYZE语句生成最新的表统计信息。统计结果存储在系统表PG_STATISTIC中。分析表ANALYZE支持的表类型有行/列存表、HDFS表、ORC格式的OBS外表。ANALYZE同时也支持
导入数据-查看数据倾斜状态
操作场景数据倾斜会造成查询表性能下降。对于记录数超过千万条的表,建议在执行全量数据导入前,先导入部分数据,以进行数据倾斜检查和调整分布列,避免导入大量数据后发现数据倾斜,调整成本高。背景信息GaussDB200是采用Shared-nothing架构的MPP(MassiveParallelProces
深层复制-通过创建临时表并截断原始表来执行深层复制
该方法使用CREATETABLE...AS语句创建原始表的临时表,然后截断原始表并从临时表填充它完成原始表的深层复制。在新建表需要保留父表的主键和外键属性,或如果父表具有依赖项的情况下,建议使用此方法。操作步骤使用CREATETABLEAS语句创建表customer_t的临时表副本customer_
深层复制-使用 CREATE TABLE LIKE 执行深层复制
该方法使用CREATETABLELIKE语句创建原始表的副本,将原始表的数据填充至副本并重命名副本,完成原始表的复制。该方法不继承父表的主键和外键属性,您可以使用ALTERTABLE语句来添加它们。操作步骤使用CREATETABLELIKE语句创建表customer_t的副本customer_t_c
深层复制-使用CREATE TABLE执行深层复制
该方法使用CREATETABLE语句创建原始表的副本,将原始表的数据填充至副本并重命名副本,完成原始表的复制。在创建新表时,可以指定表以及列属性,包括主键和外键。操作步骤执行如下步骤对表customer_t进行深层复制。·使用CREATETABLE语句创建表customer_t的副本customer
导入数据-深层复制
数据导入后,如果需要修改表的分布键、分区键、或者将行存表改列存、添加PCK(PartialClusterKey)约束等场景下,可以使用深层复制的方式对表进行调整。深层复制是指重新创建表,然后使用批量插入填充表的过程。GaussDB200提供了三种深层复制的方式供用户选择。使用CREATETABLE执
更新表中数据-使用合并方式更新和插入数据
在用户需要将一个表中所有的数据或大量的数据添加至现有表的场景下,GaussDB200提供了MERGEINTO语句通过两个表合并的方式高效地将新数据添加到现有表。MERGEINTO语句将目标表和源表中数据针对关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,关联条件不匹配时对目标表执行INS
更新表中数据-使用DML命令更新表
GaussDB200支持标准的数据库操作语言(DML)命令,对表进行更新。操作步骤假设存在表customer_t,表结构如下:CREATETABLEcustomer_t(c_customer_skinteger,c_customer_idchar(5),c_first_namechar(6),c_l
导入数据-使用gs_restore命令导入数据
操作场景gs_restore是GaussDB200提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录归档格式和tar归档格式。gs_restore具备如下两种功能。导入至数据库如果指定了数据库,则
导入数据-使用gsql元命令导入数据
DWS的gsql工具提供了元命令\copy进行数据导入。\copy命令\copy命令格式以及说明参见表1\copy元命令说明。表1\copy元命令说明语法说明\copy{table[(column_list)]|(query)}{from|to}{filename|stdin|stdout|pstd
使用COPY FROM STDIN导入数据-示例2:从MySQL向GaussDB 200进行数据
下面示例演示如何通过CopyManager从MySQL向GaussDB200进行数据迁移的过程。importjava.io.StringReader;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Resul
使用COPY FROM STDIN导入数据-示例1:通过本地文件导入导出数据
在使用JAVA语言基于GaussDB200进行二次开发时,可以使用CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持CSV、TEXT等格式。样例程序如下,执行时需要加载GaussDB200的JDBC驱动。importjava.sql.Con
使用COPY FROM STDIN导入数据-CopyManager类简介
CopyManager是GaussDB200JDBC驱动中提供的一个API接口类,用于批量向GaussDB200集群中导入数据。CopyManager的继承关系CopyManager类位于org.postgresql.copyPackage中,继承自java.lang.Object类,该类的声明如下
使用COPY FROM STDIN导入数据-关于COPY FROM STDIN导入数据
这种方式适合数据写入量不太大,并发度不太高的场景。用户可以使用以下方式通过COPYFROMSTDIN语句直接向GaussDB200写入数据。通过键盘输入向GaussDB200写入数据。详细请参见COPY。通过JDBC驱动的CopyManager接口从文件或者数据库向GaussDB200写入数据。此方