返回首页

gbase数据、南大通用产品文档:GBase8s跨线程执行

更新日期:2024年09月11日

不可跨线程地并发访问同一 Statement 或 ResultSet 实例。然而,您可在多个线程之间共享
一个 Connection 对象。
例如,如果一个线程在 Statement 对象上执行 Statement.executeQuery() 方法,另一个线程在
同一 Statement 对象上执行Statement.executeUpdate() 方法,
则难以预料两个方法的结果,

依赖于最后执行了哪个方法。
类似地,如果一个线程执行方法 ResultSet.next(),另一线程在同一 ResultSet 对象上执行同
一方法,则难以预料两个方法的结果,且依赖于最后执行了哪个方法。

在GBase 8c 数据库中,检查点是事务序列中一个点的快照,在该点上,可以保证堆和
索引数据文件已经同步了检查点之前写入的所有信息。
在执行检查点时,
所有脏数据页都会刷新到磁盘,
并将一个特殊的检查点记录写入日志
文件。
数据直接存储在内存中。
MOT 没有像GBase 8c 那样存储数据,
因此不存在脏页的概念。
为此,使用CALC 算法,用于主内存数据库系统中的低开销异步检查点。
CALC 检查点算法:内存和计算开销低
检查点算法具有以下优点:
降低内存使用量-每条记录在任何时候最多存储两个副本。在记录处于活动且稳定版本
相同或没有记录任何检查点时,
仅存储记录的一个物理副本,
可以最大限度地减少内存使用。

低开销:CALC 的开销比其他异步检查点算法小。

使用虚拟一致性点:CALC 不需要静默数据库以实现物理一致性点。
检查点激活
MOT 检查点被集成到GBase 8c 的封装的检查点机制中。检查点流程可以通过执行
CHECKPOINT;命令手动触发,也可以根据封装的检查点触发设置(时间/大小)自动触发。
检查点配置在mot.conf 文件中执行,请参见检查点(MOT)部分。

使用 DBUPSPACE 环境变量,可以指定和限制 UPDATE STATISTICS 语句在尝试同时构
造多列分布时可使用的系统磁盘空间量。

max 是一个正整数,指定要为 UPDATE STATISTICS 操作中排序而分配的最大磁盘
空间 (KB)。
default 为一个正整数,指定不使用 PDQ 时要分配的最大内存数量 (4-50 MB)。
选项
无符号整数:
1:不使用任何索引来排序。在 sqexplain.out 中打印更新统计信息的整个计划。
2:不使用任何索引来排序。不打印更新统计信息的计划。
3 以上:使用可用的索引来排序。在说明输出文件中打印更新统计信息的整个计划。
例如,要将 DBUPSPACE 设置为 2,500 KB 的磁盘空间和 1 兆字节的内存,请输入以
下命令:
setenv DBUPSPACE 2500:1
在设置此值后,数据库服务器可在执行 UPDATE STATISTICS 语句期间使用不超过
2,500 KB 的磁盘空间。如果表需要 5 兆字节的磁盘空间用于排序,那么 UPDATE
STATISTICS 分两次完成该任务;每次构造一半列的分布。
如果未设置 DBUPSPACE,那么对于 max,缺省值为 1 兆字节 (1,024 KB),而对于
default,
缺省值为 15 兆字节。
如果尝试将 DBUPSPACE 设置为小于 1,024 KB 的任何值,
它会自动设置为 1,024 KB,但不会返回任何错误消息。如果此值尚未大到足以允许一次构
造多个分布,那么至少会完成一个分布,即使完成此任务所需的磁盘空间量超过
DBUPSPACE 指定的磁盘空间量也是如此。