【GaussDB国庆献礼】GaussDB 100 HA架构技术建议书(2)

举报
GaussDB100_DBA 发表于 2019/09/26 16:43:31 2019/09/26
【摘要】 3 数据库功能3.1 表和索引3.1.1 表的存储:segemnt和extent(1)Segment对应一个表或索引,如果分区,则对应一个最小分区。(2)Extent是一段连续的磁盘空间,当Segment没有空闲空间时,向表空间申请一个空闲的extent。(3)Extent的默认大小为64K,使用大的extent可以提升全表扫描的效率。930版本支持动态ex...

3      数据库功能

3.1      表和索引

3.1.1        表的存储:segemnt和extent

6dbb7264c413114f1e56_209x193.jpg@900-0-90-f.jpg9fc2a264c41311f5488a_126x183.jpg@900-0-90-f.jpg

(1)Segment对应一个表或索引,如果分区,则对应一个最小分区。

(2)Extent是一段连续的磁盘空间,当Segment没有空闲空间时,向表空间申请一个空闲的extent。

(3)Extent的默认大小为64K,使用大的extent可以提升全表扫描的效率。930版本支持动态extent。

3.1.2        表的存储:Page

5dd4b264c413129d8360_345x215.jpg@900-0-90-f.jpg

页由Page head、tail校检码、row dir、row组成。

Ø  Page head:页面ID、Last SCN、size、ITL count、extent链表前驱和后驱节点。

Ø  Page tail:CRC校检码,用于完整性校检

Ø  Row directory:Slot偏移地址字典,可以通过slot id查找slot在页中的位置。

Ø  Row:数据行,对应表中的一条数据。

Rowid = File ID + Page ID + Slot ID,通过Rowid可以定位到一行数据。

 

3.1.3        表的分类

表的类型

类型说明

样例

普通表(Heap)

数据全局可见,存储在普通表空间,支持分区和lob类型


会话级全局临时表

数据会话级可见,存储在temp表空间,不支持分区和lob类型

create      global temporary table t1

(

         sql_id                                   varchar(100) primary key,

         sql_text                                 varchar(1000)

)

on commit      preserve rows

事务级全局临时表

数据事务级可见,存储在temp表空间,不支持分区和lob类型

create      global temporary table t2

(

         sql_id                                   varchar(100) primary key,

         sql_text                                 varchar(1000)

)

on commit      delete rows

本地临时表

表结构会话级可见,存储在temp表空间,不支持分区和lob类型,表名必须以#为前缀

create      temporary table #t3

(

         sql_id                                   varchar(100) primary key,

         sql_text                                 varchar(1000)

)

Nologging表

数据全局可见,存储在temp2空间,支持分区和lob类型

create      table t4

(

         sql_id                                   varchar(100) primary key,

         sql_text                                 varchar(1000)

)

nologging

 

3.1.4        B树索引的结构

grey.gif

 

Ø  只支持B-Tree索引,不支持Hash、位图等其他类型的索引

Ø  树的顶层是根页,根页面存放下一层每个树枝节点的最小key值

Ø  Key的顺序为升序,页面内升序搜索使用二分查找

Ø  树干节点的每个key值保存指向下层节点的指针(page id)

Ø  叶子节点每个key值存放指向数据行的指针(row id),所有key都保存索引字段值

Ø  扫描到叶子层后的横向扫描,是为了支持范围扫描

Ø  与Oracle不同,高斯的B-Tree索引中包含key为null的数据

 

3.2      常用数据库对象

对象

使用限制

比Oracle多的能力

表

1.索引列的定义长度最大为3900字节

2.不支持二级分区

3.不支持分区的合并、置换等高级能力

4.varchar最大长度是8000字节

1.不仅支持序列,还支持自增列

2.支持MySQL的二级制类型binary、varbinary和longblob

3.支持bool类型

4.支持数组、JSON类型

触发器

1.不支持语法referenceing new as new

1.支持在会话级disable所有触发器

存储过程

1.不支持自定义类型、hash表

2.930版本开始支持package

NA

视图

1.不支持对视图做DML操作

NA

序列

NA

NA

Job

1.不支持修改Job的内容,需要重建

NA

时区

1.只支持数字形式时区'+12:00'

NA

咨询锁

NA

1.不仅支持会话级,还支持事务级咨询锁

2.支持排他和共享咨询锁

同义词

NA

NA

 

3.3      常用系统函数&操作符

参见<<开发者指南>>。

 

3.4      常用高级包

包名

描述

DBMS_DEBUG

用于对存储过程(含自定义函数,触发器)的运行过程调试。

DBMS_LOB

用于处理LOB类型数据。

DBMS_LOCK

用于提供锁管理服务。

DBMS_JOB

用于执行定时任务功能。

DBMS_OUTPUT

用于调试存储过程、函数,或者在zsql命令中显示信息。

DBMS_RAFT

用于GS-Paxos主备维护的包。

DBMS_RANDOM

提供的内置随机数生成器,用于生成随机的数字、字符。

DBMS_SQL

用于执行SQL语句的包。

DBMS_STANDARD

标准包,用于事务管理、异常处理。

DBMS_STATS

用于优化统计的包。

DBMS_UTILITY

用于数据类型处理和计算的包。

 

3.5      常用性能视图

3.5.1        实例

视图名

视图说明

别名

DV_SYS_STATS

实例级性能数据的累计值,包括SQL的每个步骤的执行时间、产生的redo、逻辑读、物理读等数据。

V$SYSSTAT

DV_SYS_EVENTS

实例级等待事件的累计值,等待事件是重要的性能指标,一段时间的Top 等待时间反映了该时间段的性能瓶颈

V$SYSTEM_EVENT

DV_SYSTEM

当前操作系统的CPU/MEM使用情况,该数据直接从操作系统读取,包括CPU使用和虚拟内存换入换出的累计值

V$SYSTEM

DV_WAIT_STATS

data buffer       中各类型的block的等待,对应buffer busy wait等待事件

V$WAITSTAT

 

3.5.2        内存

视图名

视图说明

别名

DV_BUFFER_POOL_STATS

当前BUFFER_POOL的使用统计情况,显示空闲页、常驻页、脏页等数量

V$BUFFER_POOL_STATISTICS

DV_GMA

当前申请的内存信息,高斯内存是预分配,和配置的参数一致

V$SGA

DV_GMA_STATS

当前SGA内存的统计项,包括shared pool和large pool的详细统计

V$SGASTAT

DV_DC_POOLS

当前DC池的情况

V$DC_POOL

DV_PL_MANAGER

存储过程加载到内存的情况

V$PL_MANAGER

DV_LIBRARY_CACHE

共享池中SQL语句的管理信息

V$LIBRARYCACHE

DV_TEMP_POOLS

当前TEMP_POOL的分配情况

V$TEMP_POOL

DV_VM_FUNC_STACK

未释放VM申请时的函数堆栈信息,当系统发生疑似VM泄露时,可以配置_MAX_VM_FUNC_STACK_COUNT,启动该视图能力

V$VM_FUNC_STACK

 

3.5.3        会话、连接和事务

视图名

视图说明

别名

DV_SESSIONS

当前所有的会话情况

V$SESSION

DV_SESSION_EVENTS

会话的所有的等待事件

V$SESSION_EVENT

DV_SESSION_WAITS

会话当前的等待事件

V$SESSION_WAIT

DV_OPEN_CURSOR

当前打开的游标状态

V$OPEN_CURSOR

DV_REACTOR_POOLS

连接池和对应工作线程池信息

V$REACTOR_POOL

DV_SPINLOCKS

当前所有会话对SPINLOCK的使用情况,spin_lock是自旋锁,锁住的语句太长开销比较大 一般是控制一个结构体变量在修改时不被别人修改

V$SPINLOCK

DV_TRANSACTIONS

当前的事务信息

V$TRANSACTION

 

3.5.4        SQL

视图名

视图说明

别名

DV_SQLS

SQL的DML语句执行情况

V$SQLAREA

DV_SQL_POOL

当前系统SQLPOOL使用情况

V$SQLPOOL

DV_LONG_SQL

长SQL的日志

V$LONGSQL

 

3.5.5        锁

视图名

视图说明

别名

DV_LOCKS

当前锁资源情况

V$LOCK

DV_LOCKED_OBJECTS

锁对象的信息

V$LOCKED_OBJECT

DV_USER_ADVISORY_LOCKS

使用中的会话级咨询锁信息

V$USER_ADVISORY_LOCKS

DV_LATCH

当前结构锁的使用情况,latch一般是结构锁,有共享锁,排他锁之分,粒度大

V$LATCH

 

3.5.6        Segment

视图名

视图说明

别名

DV_SEGMENT_STATS

数据库中的heap和index等对象的使用情况

V$SEGMENT_STATISTICS

DV_UNDO_SEGMENTS

undo      segment队列的实时状态信息

V$UNDO_SEGMENT

DV_TEMP_UNDO_SEGMENT

所有temp      undo segment队列的实时状态信息

V$TEMP_UNDO_SEGMENT

 

3.5.7        HA

视图名

视图说明

别名

DV_ARCHIVE_GAPS

备用数据库上的存档间隙的信息

V$ARCHIVE_GAP

 

3.6      常用SQL语法

参见<<开发者指南>>。

 

4      应用开发

4.1      用户表空间和schema

Ø  表空间EXTENTS参数

一个extent里包含的页面数。不指定EXTENTS时,默认一个extent包含8个页面。

增大单个extent的页面数量可以提高IO性能,但如果表空间下存在小表(数据量未达到一个extent大小),会导致空间浪费。

说明:930版本会实现动态extent,那么就不用设置该参数了。

 

Ø  表空间AUTOEXTEND

如果使用自动扩展,对大批量的insert会有一定程度的性能损失,如果对性能要求很高,建议不使用自动扩展。

 

Ø  ALL-IN-MEMORY表空间

默认表空间都是页面通过databuff的hash寻址方式访问,带页面淘汰和加载的机制;内存表空间为了加速访问,把数据全部pin在内存不进行盘交换,并且使用pageid进行基于偏移的直接寻址。除系统表空间之外的所有表空间在创建时都支持指定ALL-IN-MEMORY属性。

 

Ø  schema默认表空间

创建schema要指定默认表空间,schema和表空间最好一一对应,方便按照表空间物理备份,不强制要求。

 

技术建议:

1.EXTENT对IO影响非常大,如果使用的版本未实现动态EXTENT,建议调大表的EXTENT。
2. AUTOEXTEND对大批量的INSERT会有一定程度的性能损失,建议提前扩展好。

3.内存表需要指定ALL-IN-MEMORY表空间。

4.禁止使用SYSTEM表空间保存业务对象。

 

4.2      表的设计

4.2.1        表的设计一般原则

设计点

建议方案

可能产生的问题

单表(非分区表)的规模

数据量<5000万,空间占用<100G

表过大会导致数据非常离散,根据索引扫描数据时物理读高,并且索引的层高也会变大

表/分区的数量

总数量<10万

Segment过多会产生大量的统计信息,系统表空间会增大,同时share pool的DC占用也会变多,buffer pool需要保存Segment头,内存消耗会增大

约束

唯一、非空约束由数据库约束保证

如果由业务保证唯一和非空约束比较麻烦,容易产生垃圾数据

列的类型

1.时间类型用日期类型,不要使用字符串

2.长字符串使用clob,而不要用varchar

时间类型使用字符串占用的空间多,处理也容易出错;列中包括长字符串容易出现行迁移和行链接

列的个数和长度

个数<200,行长度<8000字节

列过长容易出现行迁移和行链接,并且每个数据只能保留几条数据,索引扫描的效率会比较低

Extent的大小

当前还不支持动态extent,对于大表,Extent设置为1M或8M

默认extent是64K,对大表做全表扫描时IO效率低,增大extent,一次IO可以扫描更多的数据块,减少IO次数

数据的更新

避免数据更新后变长,避免大量并发更新同一个数据块,避免对索引列的大量更新

如果把数据更新后变长,容易出现行迁移和ITL等待,需要调大PCTFREE;并发更新同一个数据块可能产生大量的buffer busy wait等待;大量更新索引列也会产生大量空块和索引倾斜,update效率也会降低

数据的删除

大批量数据的删除使用删除分区的方式,而不要用delete的方式

如果使用delete方式删除大量数据,不仅效率低,而且可能导致索引产生大量空块和索引倾斜的问题

 

4.2.2        分区的设计

分区类型

类型说明

适用场景

示例

Range

用户创建分区,分区键大小从小到大,不能往中间插入新分区,分区键一般是date或number类型

适用日志、流水类大表,需要根据时间删除历史数据

CREATE      TABLE WSR$_LONGSQL1

(

         SNAP_ID       BINARY_INTEGER             NOT NULL,

         CTIME                               DATE

)

PARTITION      BY RANGE(SNAP_ID)

(PARTITION      P_0 VALUES LESS THAN (1))

Interval

用户只需要设定分区间隔和初始分区键值,根据插入的数据自动生成对应的分区,分区键一般是date或number类型

同Range分区,比Range分区使用更方便,用户不用提前创建分区,并且可以有数据时再创建分区而不用创建空分区

CREATE TABLE      WSR$_LONGSQL2

(

         SNAP_ID           BINARY_INTEGER        NOT NULL,

         CTIME                               DATE

)

PARTITION      BY RANGE(SNAP_ID) INTERVAL(1)

(PARTITION      P_0 VALUES LESS THAN (1))

List

分区键是离散值,分区需要用户创建

适用在分区键是离散值的场景

CREATE      TABLE WSR$_LONGSQL3

(

         SNAP_ID           BINARY_INTEGER        NOT NULL,

         CTIME                               DATE

)

PARTITION      BY LIST (SNAP_ID)

(PARTITION      P_0 VALUES (1))

Hash

用户设定分区键和分区数,可以自动生成分区,插入数据时根据hash算法选择对应的分区

适用于分区键取值非常多的场景,一般用于把数据隔离开,而不是为了根据分区删除数据,使用hash分区减少buffer busy wait的等待

CREATE      TABLE WSR$_LONGSQL4

(

         SNAP_ID           BINARY_INTEGER        NOT NULL,

         CTIME                               DATE

)

PARTITION      BY HASH (SNAP_ID) PARTITIONS 16

 

dcf46264c413140e32f8_553x298.jpg@900-0-90-f.jpg

4.2.3        索引的设计原则

设计原则

说明

分区表不要创建全局索引

分区表一般创建本地索引(使用local关键字)。如果创建了全局索引,当删除分区时会导致索引失效

不要创建无用的索引

索引会降低DML语句的性能,所以不要创建无用的索引

不要创建冗余的索引

例如下面两个索引,如果在userid, playlistid上创建了索引,就没有必要在userid上创建一个索引。

create      index ix_ums_playcontentlist_userid on t_ums_userplaycontentlist (userid)

create      index ix_ums_playcontentlist_id on t_ums_userplaycontentlist (userid,      playlistid)

索引的key不宜过长

如果索引key过长,会导致索引树高度很大,索引查询效率会降低。对于组合索引,索引的列不宜过多。不要把长字符串列作为索引列,例如描述字段。

组合索引,要把高选择度的列放在前面

如下例所示,useraccount选择度远高于accounttype,所以应该把useraccount作为索引的首列,这样当查询条件中有useraccount而没有accounttype时仍能高效的使用索引。

create      index ix_ums_usrordlib_account_type on t_ums_userorderlib      (useraccount,accounttype)

当需要对大数据量排序时,可以通过创建索引来避免排序

场景:分页查询需要查询歌曲(总数100万),没有查询条件,查询结果需要按照musicname排序,实际绝大部分的查询是前几页。

解决方案:在musicname创建索引,通过索引全扫描来避免排序,只要不是查询的数据非常靠后,效率就很高

一般不在选择率很低的列上创建索引

一般不在状态,用户类型这种取值很少的列上创建索引。但是,有些场景却可以创建这种索引。例如,当需要查询的那部分的取值在数据中的比例很低时或者使用rownum限制了每次只查询出一小批数据。总的原则是,只要一次查询的数据在数据中的比例非常小,那么就适合使用索引。这里之所以说“一次查询”,是因为符合条件的数据可能很多,但是可能使用rownum限制了每次只查100条。

如果where语句中不得不对查询列采用函数查询,如upper函数,需要建立相应函数索引

如果查询条件在列上使用了函数,那么直接在列上创建的索引是无法使用的,必须创建对应的函数索引。如下例所示。

create      index ix_auditionauthlog_tonename on t_ums_auditionauthlog(upper(tonename))

    tablespace      ringidx

 

4.2.4        表结构的修改

支持在线重建索引和修改表结构。索引的创建和重建当前不支持并行。

 

技术建议:

1.表和索引的设计对系统的性能非常关键,需要使用者理解存储结构和设计原则。
2.索引的设计一定要根据查询需求来设计。

3.分区是非常重要的特性,合理的使用分区可以大幅提升性能。

 

4.3      应用框架

Ø  兼容主流java连接池和Java框架

java连接池:c3p0、dbcp、druid;兼容hibenate、ibatis和mybatis。

 

Ø  hibenate方言

选择Oracle方言:org.hibernate.dialect.OracleDialect。

 

4.4      数据库接口

支持C-API,JDBC,ODBC,PYTHON和GO客户端接口。

 

4.5      读写分离

JDBC支持多DN的读写分离,当URL中配置多DN时,可以通过URL中的属性标示来区分JDBC返回的连接是否是区分主机和备机。

 

Ø  配置支持多DN读写分离

连接串格式: jdbc:zenith:rw:@{ip:port }[ , ... ][?useRW={false|true}]

连接串支持指定多个DN的ip,由“,”分割,连接串中一定全部为DN节点。

当useRW属性配置为true时,则JDBC返回的连接可以是连接主机的也可以是连接备机的连接;当useRW为false时,则JDBC返回的连接只能是主机的连接。

 

技术建议:

1.对于非强一致性的查询,建议读备机,减轻主机的压力。

 

4.6      SQL

4.6.1        使用批量绑定接口

Ø  尽量避免逐条commit

高并发逐条commit会产生大量的log file sync等待,对性能影响较大。

 

Ø  使用绑定变量

当前不支持cursor sharing,如果不使用绑定变量,会产生大量的硬解析。

避免使用过多的绑定变量,不推荐insert语句使用几千个value的写法。

 

4.6.2        返回大数据量的分批处理

如果查询结果返回很多数据,设置fetch_size非常重要,如果fetch_size过小会导致交互次数多、查询效率低;如果fetch_size过大或者全部返回,客户端程序的内存可能会撑爆。

这个特性非常重要,应用程序在返回大数据量结果集时就不要分批查询了,只要合理的设置fetch_size就可以一次查询所有数据了,由数据库分批fetch。

 

高斯默认的fetch_size是100,可以在语句级修改,如果结果集较大,建议修改为1000以上。

Ø  JDBC接口

java.sql.PreparedStatement.setFetchSize(int)

 

技术建议:

1.大批量的DML语句,建议使用批量绑定方式。

2.对于返回大结果集的查询,建议通过fetch_size分批处理,不建议业务分页查询。

3.不建议一个SQL过长或过于复杂。

 

4.7      提示(hint)

类型

提示名

使用说明

连接顺序

leading

指定某个表为驱动表,例如leading(a)

ordered

多表连接时指定表的连接顺序,按照from后面表的顺序连接,没有参数

连接方式

use_nl

指定表的连接方式为嵌套循环,例如use_nl(a      b),括号内顺序不重要,括号内支持多个表

use_hash

指定表的连接方式为哈希连接,例如use_hash(a      b),括号内顺序不重要,括号内支持多个表

访问路径

full

指定对某个表全表扫描,例如full(a)

index

指定对某个表使用索引扫描,按照索引的排序方式,默认正序,例如index(a       索引名)

其他

rule

指定使用RBO优化器,不能有分区表等高级特性,不能和其他提示一起使用。

 

技术建议:

1.提示是基于RBO的,加了提示会自动变成RBO,所以加提示要慎重,要加全套提示。

 

5      运维与工具

5.1      数据库管理(DM)

Database Manager是一款基于Web的数据库监控工具,提供丰富的界面展示,可有效监

控多个集群数据库。通过管理员用户和普通用户区分查看和操作权限,对集群数据库

进行安全的监控和运维操作。

 

Database Manager提供的主要功能包括(但不限于):

 

Ø  安装集群

Ø  导入并监控集群

Ø  集群、主机和实例运行监控

Ø  数据库运行监控

Ø  故障诊断分析和上报

Ø  告警分析和上报

Ø  用户管理

Ø  查询监控和TOP查询取消

Ø  巡检

 

5.2      集群管理(CM)

GAUSS100 OLTP CM模块主要针对分布式数据库集群进行系统管理,整个框架包括对外命令、内部的逻辑仲裁、CM与ETCD的交互以及ETCD V3分布式数据管理。

 

0609c264c41314fd7413_554x183.jpg@900-0-90-f.jpg

 

CM模块各部分功能介绍:

 

(1)对外命令:该部分主要包括集群管理各种场景所需要的命令行参数,可供用户根据需要手动或者自动化执行所需场景功能,第二章针对各个命令会详细介绍,这里不做赘述。

(2)逻辑仲裁:该部分主要通过主备成员关系一致性仲裁,主备倒换(switchover/failover)自动化来维护主备副本间关系,凡是涉及数据库节点的异常处理,都需要经过数据库仲裁逻辑统一进行数据库仲裁判决谁是主。

(3)CM模块与ETCD交互:该部分主要介绍CM模块与ETCD如何交互,主要是指数据的交互,分布式数据主要存储在ETCD中,通过watch机制监控,CM向ETCD订阅相关数据,同时CM也可以修改并操作ETCD中的数据。

(4)CM内部ETCD数据管理:该部分主要涉及ETCD的相关知识点,重点介绍在CM模块内部ETCD是如何管理分布式数据的。

 

5.3      备份恢复

Ø  备份方式、级别

①       支持物理备份

通过复制物理文件的方式对数据库进行备份,以磁盘块为基本单位将数据从主机复制到备机,每次备份数据都是以一个扇区(512 Byte)为单位来进行备份。通过备份的数据文件及归档日志等文件,数据库可以进行完全恢复。物理备份速度快,一般被用作对数据进行备份和恢复,用于全量备份的场景。通过合理规划,可以低成本进行备份与恢复

②       支持全量备份

对某一时间点上的所有数据进行完全复制,并不依赖文件的“存档”属性来确定需要备份哪些文件,在备份过程中会清除所有文档的“存档”属性。这种备份方式的优点是只要用磁带,就可以恢复丢失的数据,因此极大的加快了系统或数据的恢复时间。它的缺点在于各个全量备份磁带中的备份数据存在大量的重复信息。另外,由于每次需要备份的数据量相当大,因此备份所需时间较长。

③       支持多级增量备份

增量备份是相对于上一次备份而言的一种备份。

通过BACKUP命令进行增量备份时,它备份上一次备份后(包含全量备份、差异增量备份、累积增量备份),所有发生变化的文件。这种备份方式最显著的优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间较短。但增量备份的数据恢复比较麻烦,必须具有上一次全备份和所有增量备份磁带(一旦丢失或损坏其中的磁带,就会造成恢复的失败),并且必须沿着从全备份到依次增量备份的时间顺序逐个反推恢复,这就极大地延长了恢复时间。增量备份只支持通过BACKUP命令完成。

 

Ø  备份支持压缩、并行、切分

①       压缩

在备份存储空间有限或者网络备份带宽有限的场景下,需要减小备份集大小,降低资源占用;备份时对备份集进行压缩,可一定程度上减小备份集大小。GaussDB 100支持zstd,lz4和zlib压缩算法对备份集进行压缩。压缩备份时可以指定压缩级别,取值范围为[1, 9],级别越高,压缩率越高,但速度也越慢,默认压缩级别为1。

②       并行、切分

当备份介质为磁盘时,可以开启多个并发线程进行备份,以提高备份速度。并发个数取值是[1, 8]范围内的整数。不指定并发数量时,将默认启动4个并发线程。并行备份时,可指定数据文件的切分阈值,合适的切分阈值可以有效提高并行备份效率。

 

Ø  支持PITR、指定方案(schema)恢复

①       PITR(Point In Time Recovery)

基于时间点的恢复。依据物理备份文件加上Redo日志文件,恢复数据库到指定时间点。

通过备份集可以恢复到备份的时间点;如果备份之后产生的归档日志存在,通过继续回放归档日志,可以恢复到备份之后的时间点。

②       恢复指定schema

为了便于数据维护,可以将不同业务的数据使用不同的方案(schema)存储在数据库中,并且每个方案(schema)独立使用一个表空间。如果只有一个方案(schema)的数据损坏并需要修复,则可以通过工具ztrst实现基于全量备份文件只恢复指定方案(schema)的数据,加快恢复速度。

 

5.4      逻辑导入导出

5.4.1        dump/load

支持对单表的导出和导入,格式是CSV。

支持指定行列分隔符,支持多分隔符,导入支持并行。

5.4.2        exp/imp

Ø  导出格式

支持导出SQL文本和二进制方式,后者支持并行和压缩。

Ø  导出对象

支持按照用户、表、过滤条件导出数据。

支持只导出对象定义。

Ø  导入对象

导入可以转换表空间和用户名。

 

5.5      全量割接工具(datasync)

DataSync是GaussDB 100的数据迁移工具,致力于实现其他商业数据库向GaussDB 100高效、安全的数据同步。支持将Sybase、Oracle、MySQL、GaussDB 100 V100R003C10和SQL Server的数据迁移至GaussDB 100 V300R001数据库。

DataSync通过JDBC方式将数据导出为CSV格式,支持数据的导出、导入以及导出+导入。支持自动创建动态表、校验表结构以及使用触发器实现增量割接的能力。

 

5.6      逻辑复制(HDR)

b1fe9264c41315b1293c_553x241.jpg@900-0-90-f.jpg

支持异构数据库之间解析增量日志实现逻辑复制,支持双活。

 

5.7      图像化开发工具(DS)

Data Studio是一款GUI工具,可以通过它来连接数据库,调试执行SQL语句和存储过程。它支持GaussDB 100的基本特性,为数据库开发人员提供图形界面,显著提高构建应用程序的效率,并简化数据库开发及应用开发任务。

Data Studio主要为数据库开发人员提供以下功能:

  • 浏览数据库对象。

  • 创建和管理数据库对象(例如:数据库、user、表、索引)。

  • 执行SQL语句和SQL脚本。

  • 编辑和执行PL/SQL语句。

Data Studio的具体使用方法请参见随工具配套发布的《Data Studio用户手册》。

 

5.8      版本升级

支持一键式升级工具,目前还不支持滚动升级和热补丁。

 

5.9      SQL MAP

支持在线替换指定SQL的能力,用于规避性能问题。

--打开SQL映射功能开关。

ALTER SYSTEM SET enable_sql_map = true;

--创建一个SQL映射。

ALTER SQL_MAP (select count(*) from SYS_DUMMY) REWRITE TO (select count(1) as cnt from SYS_DUMMY);

--输入源SQL语句,实际上会映射成目标SQL语句来执行。

select count(*) from SYS_DUMMY;

 

CNT                

--------------------

1                  

 

1 rows fetched.

 

5.10   性能分析工具

Ø  WSR报告

Ø  LongSQL日志或视图

Ø  性能视图

前面已经做过介绍,详情参考版本资料。

 

6      总结

本文系统的介绍了GaussDB 100HA架构的能力以及使用建议,可以指导用户快速的熟悉数据库。由于产品功能还在不断开发中,文中的描述可能跟实际有不一致的情况,需要获取对应版本的技术建议书。由于时间仓促,内容有限,文中内容难免会有疏漏错误,欢迎读者指正。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。