沉舟侧畔千帆过_

沉舟侧畔千帆过_

6. backtrace

6.1. 插件backtrace简介

插件backtrace是KingbaseES 的一个扩展插件。主要功能是在服务端程序崩溃时捕获宕机堆栈信息,并将core堆栈信息打印输出到前端或日志文件里。可用于协助分析KingbaseES宕机的原因。通常release版本的KingbaseES需要使用debug文件协助分析宕机原因。

插件backtrace相关功能在服务程序崩溃时自动触发,无须人为干预,插件在服务端程序启动时默认加载。

  • 插件名为 backtrace

  • 插件版本 V1.0

6.2. 插件backtrace加载方式

KingbaseES数据库默认将他添加到 kingbase.conf 文件的 shared_preload_libraries 中,重启数据库时自动加载。

示例:

shared_preload_libraries = 'backtrace'

6.3. 插件backtrace的参数配置

无需配置任何参数

6.4. 插件backtrace的使用方法

KingbaseES加载 backtrace 插件后,程序崩溃时会自动捕获宕机的堆栈信息,并将core 堆栈信息打印输出到前端或日志文件里。

6.5. 插件backtrace卸载方法

修改 kingbase.conf 文件中 shared_preload_libraries 参数后重启数据库。

示例:

shared_preload_libraries = ''

6.6. 插件backtrace升级方法

backtrace扩展插件通常随着KingbaseES安装包一并升级。通常情况下用户无须单独升级些插件。

7. backup_pri

7.1. 插件backup_pri简介

backup_pri是KingbaseES的一个扩展插件,主要用于对备份/恢复操作使用权限限制,插件增加了一个新的管理特权,SYSBACKUP,允许物理备份sys_basebackup连接到目标数据库,执行物理备份操作。

  • 插件名为 backup_pri

  • 插件版本 V1.0

7.2. 插件backup_pri加载方式

在使用 backup_pri 之前,需要将他添加到 kingbase.conf 文件的 shared_preload_libraries 中,并重启 KingbaseES 数据库。

示例:

shared_preload_libraries = 'backup_pri'

7.3. 插件backup_pri的参数配置

backup_pri.enable_backup_pri

启用备份恢复权限功能,取值范围为ture或者false,缺省为 false。

show backup_pri.enable_backup_pri;
backup_pri.enable_backup_pri
-------------------------------
off
(1 row)

alter system set backup_pri.enable_backup_pri to on;
select pg_reload_conf();
show backup_pri.enable_backup_pri;
backup_pri.enable_backup_pri
-------------------------------
on
(1 row)

7.4. 插件backup_pri使用方法

7.4.1. 备份恢复权限的授予与回收

在数据库初始化之后,SYSTEM用户级SUPERUSER用户不具有备份恢复的权限;但具有该权限的授予与回收的权利,SYSTEM用户级SUPERUSER用户也可以给自身赋权。

授予与回收的语法:

alter user u1 sysbackup;

alter user u1 nosysbackup;

同时建用户的时候可以直接授予或回收

create user u1 sysbackup;

create user u1 (nosysbackup);

不带默认nosysbackup,或者建库初始化时的用户也是默认nosysbackup的,想要赋予权限,可以用alter语句实现。

删除用户的时候语法:

drop user u1;

会自动删除这个用户的备份恢复权限,和其他系统权限一样,记录将不存在。

7.4.2. 备份恢复权限流程

存储sysbackup权限的系统表 sys_privilege。物理备份sys_basebackup时,检查是否持有这个权限,若没有,报错退出。

具体流程如下:

  1. 备份恢复权限与其他普通权限一样,都是限制一些用户进行指定的操作;

  2. 备份恢复权限是用户级别的,在执行备份恢复时,步骤如下:

7.4.3. 相关系统视图

sysbackup权限相关的三个系统视图如下:

  • backup_pri.dba_sys_privs

查询出所有的用户的sysbackup权限和其他系统权限,若用户没有sysbackup权限,有可能显示的是空,或者nosysbackup两种情况。

backup_pri.dba_sys_privs 视图的每个字段意义如下表所示:

  • backup_pri.user_sys_privs

查询出当前的用户的sysbackup权限和其他系统权限,若当前用户没有sysbackup权限,有可能显示的是空,或者 nosysbackup两种情况。

backup_pri.user_sys_privs 视图的每个字段意义如下表所示:

  • backup_pri.role_sys_privs

查询出角色的 sysbackup 权限和其他系统权限,若角色没有 sysbackup 权限,有可能显示的是空,或者 nosysbackup两种情况。

backup_pri.role_sys_privs 视图的每个字段意义如下表所示:

7.5. 插件backup_pri卸载方法

修改 kingbase.conf 文件中 shared_preload_libraries 参数后重启数据库。

示例

shared_preload_libraries = ''

7.6. 插件backup_pri升级方法

backup_pri扩展插件通常随着KingbaseES安装包一并升级。通常情况下用户无须单独升级这些插件。

8. bloom

8.1. 插件bloom简介

插件bloom是KingbaseES的一个扩展插件。 bloom提供了一种基于bloom过滤器的索引访问方法。

bloom过滤器是一种节省空间的数据结构,用于测试元素是否是集合的成员。对于索引访问方法,它允许通过签名快速排除不匹配的元组。签名的大小在索引创建是确定。

签名是索引属性的一种有损表示,并且因此容易报告误报。也就是说,当元素不在集合中时,可能会报告该元素在集合中。因此,必须始终使用堆条目中实际属性值重新检查索引的搜索结果。更大的签名可以降低误报的机率。从而减少无用的堆访问次数,但也会让索引更大,从而降低扫描速度。

当一个表有许多属性并且查询测试他们的任意组合时,这种类型的索引最有效,传统的btree索引比bloom索引快,但它可能需要许多btree索引来支持所有可能的查询。而bloom索引只需要一个。请注意,bloom索引只支持等值查询,而btree索引也可以支持非等和范围查询。

  • 插件名为 bloom

  • 插件版本 V1.0

8.2. 插件bloom加载方式

KingbaseES默认不加载bloom插件,需要用户使用示例中的命令,人为手工加载。

示例:

create extension bloom;

8.3. 插件bloom的参数配置

bloom索引在其WITH子句中接受下列参数

  • length

每个签名(索引项)的长度位数,它会被圆整成为最近的16的倍数。默认是80位,最长是4096位。

  • col1 — col32

从每一个索引列产生的位数。每个参数的名字表示它所控制的索引列的编号。默认是2位,最大是4095位。没有实际使用的索引列的参数会被忽略。

8.4. 插件bloom的使用方法

示例:

这是一个创建布鲁姆索引的例子。

CREATE INDEX bloomidx ON tbloom USING bloom (i1,i2,i3)  WITH (length=80, col1=2, col2=2, col3=4);

该索引是用长度为 80 位的签名所创建,其中属性 i1 和 i2 被映射为 2 位,属性 i3 被映射为 4 位。我们可以省略length、col1和col2说明,因为它们都有默认值。 这里是布鲁姆索引定义和使用的更完整的例子,其中还与等效的 btree 做了对比。布鲁姆索引比 btree 索引更小,并且效率更高。

8.5. 插件bloom卸载方法

bloom插件的卸载也需要用户使用示例中的命令,人为手工卸载。

示例:

drop extension bloom;

8.6. 插件bloom升级方法

bloom扩展插件通常随着KingbaseES安装包一并升级。通常情况下用户无须单独升级该插件。

9. btree_gin

9.1. 插件btree_gin简介

btree_gin为以下数据类型提供了B树等价行为的GIN操作符类:

macaddr8 int2 int4 int8 float4 float8 money oid timestamp timestamptz
time timetz date interval macaddr inet cidr text varchar char bytea
bit varbit numeric enum uuid name bool bpchar

一般情况下,这些操作符类不会比B树的表现更好,而且缺少B树最重要的特性之一支持唯一索引。但这些操作符可以用于GIN测试或是作为其他GIN操作符类开发的参考。在特定情况下,例如查询同时涉及一列适合GIN索引的列和一列适合B树索引的列,这时创建GIN的两列联合索引可能比创建GIN索引和B树索引再通过位图与扫描方式查询效率更高。

插件可以被任何在当前库具有CREATE权限的用户创建。

  • 插件名为 btree_gin

  • 插件版本 V1.3

9.2. 插件btree_gin加载方式

KingbaseES默认不加载btree_gin插件,需要用户使用示例中的命令,人为手工加载。

示例:

CREATE EXTENSION btree_gin;

9.3. 插件btree_gin的参数配置

无需配置任何参数

9.4. 插件btree_gin的使用方法

CREATE TABLE test (a int4);
-- create index
CREATE INDEX testidx ON test USING GIN (a);
-- query
SELECT * FROM test WHERE a < 10;

9.5. 插件btree_gin卸载方法

btree_gin插件的卸载也需要用户使用示例中的命令,人为手工卸载。

示例:

DROP EXTENSION btree_gin;

9.6. 插件btree_gin升级方法

通过 ALTER EXTENSION升级插件。

示例,升级到 1.1:

ALTER EXTENSION btree_gin UPDATE TO '1.1';

10. btree_gist

10.1. 插件btree_gist简介

btree_gist为以下数据类型提供了B树等价行为的GIST操作符类

uuid oid int2 int4 int8 float4 float8 timestamp timestamptz
time timetz date interval cash macaddr text bpchar bytea
numeric bit vbit inet cidr macaddr8 enum

一般情况下,这些操作符类不会比B树的表现更好,而且缺少B树最重要的特性之一支持唯一索引。但这些操作符可以用于GiST测试或是作为其他GiST操作符类开发的参考。在特定情况下,例如查询同时涉及一列适合GiST索引的列和一列适合B树索引的列,这时创建GiST的两列联合索引可能比创建GiST索引和B树索引再通过位图与扫描方式查询效率更高。

插件还提供了B树索引不支持的“<>”(不等于)操作符,这在创建EXCLUDE约束时很有用。插件对于可以作为距离度量的数据类型提供了距离操作符<->,为使用这个操作符的最近邻搜索提供了GiST索引支持。插件可以被任何在当前库具有CREATE权限的用户创建。

  • 插件名为 btree_gist

  • 插件版本 V1.5

10.2. 插件btree_gist加载方式

KingbaseES默认不加载btree_gist插件,需要用户使用示例中的命令,人为手工加载。

示例:

CREATE EXTENSION btree_gist;

10.3. 插件btree_gist的参数配置

无需配置任何参数

10.4. 插件btree_gist的使用方法

示例如下:

CREATE TABLE test (a int4);
CREATE INDEX testidx ON test USING GIST (a);
SELECT * FROM test WHERE a < 10;

-- 最近邻搜索,找距离42最近的10行数据
SELECT *, a <-> 42 AS dist FROM test ORDER BY a <-> 42 LIMIT 10;

-- 使用EXCLUDE约束来创建规则一个动物园里的一个笼子只能装一种动物
CREATE TABLE zoo (
 cage INTEGER,
 animal TEXT,
 EXCLUDE USING GIST (cage WITH =, animal WITH <>)
);
INSERT INTO zoo VALUES(123, 'zebra');
INSERT INTO zoo VALUES(123, 'zebra');
INSERT INTO zoo VALUES(123, 'lion');

-- 预期违反约束报错
ERROR: conflicting key value violates exclusion constraint
 "zoo_cage_animal_excl"
DETAIL: Key (cage, animal)=(123, lion) conflicts with existing key (cage,
 animal)=(123, zebra).
=> INSERT INTO zoo VALUES(124, 'lion');

10.5. 插件btree_gist卸载方法

btree_gist插件的卸载也需要用户使用示例中的命令,人为手工卸载。

示例:

DROP EXTENSION btree_gist;

10.6. 插件btree_gist升级方法

通过 ALTER EXTENSION升级插件。

ALTER EXTENSION btree_gist UPDATE TO '1.1';
08-25 11:40