返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

workload 级别索引推荐
对于workload 级别的索引推荐,用户可通过运行数据库外的脚本使用此功能,本功能
将包含有多条DML 语句的workload 作为输入,最终生成一批可对整体workload 的执行表
现进行优化的索引。同时,本功能提供从日志中抽取业务数据SQL 流水的功能。
前提条件

数据库状态正常、客户端能够正常连接。

当前执行用户下安装有gsql 工具,该工具路径已被加入到PATH 环境变量中。

若使用本功能提供的业务数据抽取功能,需提前将要收集的节点的GUC 参数按如下设
置:
log_min_duration_statement = 0
log_statement= 'all'
业务数据抽取完毕建议将上述GUC 参数复原,否则容易导致日志文件膨胀。
业务数据抽取脚本使用步骤
(1)
按前提条件中要求设置相关GUC 参数。
(2)
执行根据日志抽取SQL 语句的功能,命令如下:
gs_dbmind component extract_log [l LOG_DIRECTORY] [f OUTPUT_FILE] [p
LOG_LINE_PREFIX] [-d DATABASE] [-U USERNAME][--start_time] [--sql_amount]
[--statement] [--json] [--max_reserved_period] [--max_template_num]
其中的输入参数依次为:

LOG_DIRECTORY:pg_log 的存放目录。

OUTPUT_PATH:输出SQL 流水文件文件的保存路径,即抽取出的业务数据存放的文
件路径。

LOG_LINE_PREFIX:指定每条日志信息的前缀格式。

DATABASE:(可选)数据库名称,不指定默认所有数据库。

USERNAME:(可选)用户名称,不指定默认所有用户。

start_time:(可选)日志收集的开始时间,不指定默认所有文件。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
389

sql_amount:(可选)收集SQL 数量的最大值,不指定默认收集所有SQL。

statement:(可选)表示收集pg_log 日志中statement 标识开头的SQL,不指定默认不
收集。

json:
(可选)指定收集日志的文件存储格式为SQL 归一化后的json,不指定默认格式
每条SQL 占一行。

max_reserved_period:(可选)指定json 模式下,增量收集日志中保留的模板的最大的
更新时长,不指定默认都保留,单位/天。

max_template_num:(可选)指定json 模式下保留的最大模板数量,不指定默认都保
留。
使用示例:
gs_dbmind component extract_log $GAUSSLOG/pg_log/dn_6001 sql_log.txt
'%m %c %d %p %a %x %n %e' -d postgres -U gbase --start_time '2021-07-06 00:00:00'
--statement
若指定-d/-U 参数,日志打印每条日志信息的前缀格式需包含%d、%u,若需要抽取事
务,
必须指定%p,
详见log_line_prefix 参数。
max_template_num 参数设置建议不超5000
条,避免workload 索引推荐执行时间过长。
(3)
将1 中设置的GUC 参数还原为设置前的值。
索引推荐脚本使用步骤
(1)
准备好包含有多条DML 语句的文件作为输入的workload,文件中每条语句占据一行。
用户可从数据库的离线日志中获得历史的业务语句。
(2)
运行本功能,命令如下:
gs_dbmind component index_advisor [p PORT] [d DATABASE] [f FILE] [--h HOST] [-U
USERNAME] [-W PASSWORD][--schema SCHEMA]
[--max_index_num MAX_INDEX_NUM][--max_index_storage MAX_INDEX_STORAGE]
[--multi_iter_mode] [--multi_node]
[--json] [--driver] [--show_detail]
其中的输入参数依次为:

PORT:连接数据库的端口号。

DATABASE:连接数据库的名字。

FILE:包含workload 语句的文件路径。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
390

HOST:(可选)连接数据库的主机号。

USERNAME:(可选)连接数据库的用户名。

PASSWORD:(可选)连接数据库用户的密码。

SCHEMA:模式名称。

MAX_INDEX_NUM:(可选)最大的索引推荐数目。

MAX_INDEX_STORAGE:(可选)最大的索引集合空间大小。

multi_node:(可选)指定当前是否为分布式数据库实例。

multi_iter_mode:(可选)算法模式,可通过是否设置该参数来切换算法。

json:(可选)指定workload 语句的文件路径格式为SQL 归一化后的json,默认格式
每条SQL 占一行。

driver:(可选)指定是否使用python 驱动器连接数据库,默认gsql 连接。

show_detail:(可选)是否显示当前推荐索引集合的详细优化信息。
例如:
gs_dbmind component index_advisor 6001 postgres tpcc_log.txt --schema public
--max_index_num 10 --multi_iter_mode
推荐结果为一批索引,以多个创建索引语句的格式显示在屏幕上,结果示例。
create index ind0 on public.bmsql_stock(s_i_id,s_w_id);
create index ind1 on public.bmsql_customer(c_w_id,c_id,c_d_id);
create index ind2 on public.bmsql_order_line(ol_w_id,ol_o_id,ol_d_id);
create index ind3 on public.bmsql_item(i_id);
create index ind4 on public.bmsql_oorder(o_w_id,o_id,o_d_id);
create index ind5 on public.bmsql_new_order(no_w_id,no_d_id,no_o_id);
create index ind6 on public.bmsql_customer(c_w_id,c_d_id,c_last,c_first);
create index ind7 on public.bmsql_new_order(no_w_id);
create index ind8 on public.bmsql_oorder(o_w_id,o_c_id,o_d_id);
create index ind9 on public.bmsql_district(d_w_id);
multi_node 参数需严格按照当前数据库架构进行指定,否则推荐结果不全,甚至导致无
推荐结果。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
391

PG_SHSECLABEL 系统表存储在共享数据库对象上的安全标签。安全标签可以用
SECURITY LABEL 命令操作。
查看安全标签的简单点的方法,请参阅PG_SECLABELS。
PG_SECLABEL 的作用类似,只是它是用于在单个数据库内部的对象的安全标签的。
不同于大多数的系统表,PG_SHSECLABEL 在GBase 8c 中的所有数据库中共享:每个
GBase 8c 只有一个PG_SHSECLABEL,而不是每个数据库一个。
名称
类型
引用
描述
objoid
oid
任意OID 属性
这个安全标签所属的对象的OID。
classoid
oid
PG_CLASS.oid
出现这个对象的系统目录的OID。
provider
text
-
与这个标签相关的标签提供程序。
label
text
-
应用于这个对象的安全标签。

您可以为系统上执行的 ON-Bar 注册备份创建列表。
要查看注册备份的列表:
1. 在 sysutils 中创建一个视图,其中包含 bar_action、bar_instance 和 bar_object 目录
表的信息。
在视图中包括以下字段:

Backup_ID:内部生成的备份标识

Type:定义备份是整个系统备份、数据库空间备份还是逻辑日志备份。

Object_Name:所备份对象的名称。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 46 -

ₒ Ifx_Time:创建对象的时间。对于数据库空间备份,表示启动备份的检查
点时间。对于逻辑日志,表示日志填满的时间。

CopyID_HI:在存储管理器中查找对象的标识的高位部分。

CopyID_LO:在存储管理器中查找对象的标识的低位部分。

Backup_Start:此对象备份启动的日期和时间。

Backup_End:此对象备份结束的日期和时间。

Verify_Date:上次对此对象进行验证的时间(如果有)。
2. 对视图运行 SELECT 语句。
示例
以下语句会创建包含备份信息的视图:
CREATE VIEW list_backups(Backup_ID, Type, Object_Name, Ifx_Time, CopyID_HI,
CopyID_LO, Backup_Start, Backup_End, Verify_Date)
AS SELECT * FROM (
SELECT
act_aid AS backup_id,
DECODE(act_type, 5, "Whole-System", DECODE(obj_type, "L",
"Logical log", "Dbspace")) AS Type,
substr(obj_name,1, 8) AS Object_Name,
min(DBINFO ('utc_to_datetime', seal_time)) AS Ifx_Time,
ins_copyid_hi AS CopyID_HI,
ins_copyid_lo AS CopyID_LO,
act_start AS Backup_Start,
act_end AS Backup_End,
ins_verify_date AS Verify_Date

FROM
bar_action A,
bar_instance I,
bar_object O
WHERE
A.act_aid = I.ins_aid AND
A.act_oid = O.obj_oid AND
A.act_oid = I.ins_oid AND
O.obj_type in ("R", "CD", "ND", "L")
GROUP BY 1,2,3,5,6,7,8,9

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 47 -

ORDER BY Ifx_Time, Backup_ID) AS view_list_backups
以下查询将返回所有备份:
SELECT * FROM list_backups