返回首页

gbase数据、南大通用产品文档:GBase8a视图查询审计日志表性能差

更新日期:2024年09月11日

问题现象
定义一个视图create view v_test_audit as select * from gbase.audit_log,
加limit 1 查询这个视图,. 全表数据七千万条记录下,需要7 分钟才能出来,
影响业务。而直接查询原表select * from gbase.audit_log limit 1 , 0.1
秒就能出来。
解决方法:
方案1、直接查询系统表,规避视图的方式;
方案2、使用已有event 方案,即将系统表定时导入express 表,查询时
使用express 表即可(同时考虑gssys 表损坏与查询性能)。
方案3.不使用关于gssys 的视图

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
98

批量更新特性类似于多条 GBase 8s SQL PREPARE 语句。可如下列示例中那样发出批量更
新语句:
PREPARE stmt FROM "insert into tab values (1);
insert into tab values (2);
update table tab set col = 3 where col = 2";
GBase 8s JDBC Driver 中的批量更新特性遵守 JDBC 3.0 规范,有这些例外:

SQL 语句

从 Statement.executeBatch() 返回值
SQL 语句和批量更新
不可将下列命令放入多语句 PREPARE 语句内:

SELECT(SELECT INTO TEMP 除外)语句

DATABASE 语句

CONNECTION 语句
要了解详细信息,请参阅《GBase 8s SQL 指南:语法》。
从 Statement.executeBatch() 方法返回值
以下列方式,返回值不同于 JDBC 3.0 规范:

如果将 IFX_BATCHUPDATE_PER_SPEC 环境变量设置为 0,则仅返回批量中执行
的第一个语句的更新数。如果将IFX_BATCHUPDATE_PER_SPEC 环境变量设置
为 1(缺省值),则返回值等于由 Statement.executeBatch() 执行的所有 SQL 语句

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 69 -
影响的行数。要获取更多信息,请参阅 随同 GBase 8s JDBC 驱动程序的 GBase 8s
环境变量。

当在 Statement 对象中执行的批量更新中发生错误时,该语句不影响行;不执行该
语句。在此情况下,调用BatchUpdateException.getUpdateCounts() 会返回 0。

当在 PreparedStatement 对象中执行的批量更新中发生错误时,
在数据库服务器上成
功地插入了或更新了的行不恢复它们的更新前状态。
然而,
不是始终提交这些语句;
它们仍处于基本的 autocommit 模式。
BatchUpdate.java 示例文件展示如何将批量更新发送至数据库服务器。

dblink 是一个可以在一个GBase 8c 数据库会话中连接到其它GBase 8c 数据库的工具,
同libpq 支持的连接参数一致,可参考链接字符。