返回首页

gbase数据、南大通用产品文档:GBase8s处理外部的死锁

更新日期:2024年09月11日

在不同数据库服务器上的程序之间也可发生死锁。在此情况下,数据库服务器不可立即检
测到死锁。(完善的死锁检测需要在网络中的所有数据库服务器之间大量的通信。)而是
每一数据库服务器对于程序可等待的时间量设置一个上限,来在不同的数据库服务器上获
得对数据的锁。如果到时间了,则数据库服务器假定发生死锁并返回一个与锁相关的错误
代码。

也就是说,当涉及外部的数据库时,每个程序都运行最大锁等待时间。DBA 可为数据库服
务器设置或修改该最大值。

操作系统在运行在系统上的进程间切换时通常将各部分内存的内容与磁盘交换。然而,当
一部分内存指定为常驻时,它不会与磁盘交换。使频繁访问的数据常驻在内存中可以提高
性能,因为这样就可以减少访问该数据所需的磁盘 I/O 操作的数目。
数据库服务器请求操作系统在以下两个条件存在时将这些虚拟部分保持在物理内存中:
 操作系统支持共享内存驻留。
 onconfig 文件中的 RESIDENT 参数已设置为 -1 或大于 0 的值。
警告: 当考虑是否将 RESIDENT 参数设置为 -1 时,应该考虑所有应用程序对共享内存的使
用。为使用 GBase 8s 数据库服务器而锁定所有共享内存会对同一台计算机上的其他应用程序

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 121 -
(如果有)的性能产生不利的影响。
有关 RESIDENT 配置参数的更多信息,请参阅《GBase 8s 管理员参考》。

当已结束处理 SQL 语句的结果时,通过在 Java™ 程序中调用恰当的 close() 方法,来关
闭 Statement、PreparedStatement 和CallableStatement 对象。此关闭立即释放已分配来执行
SQL 语句的那些资源。虽然 ResultSet.close() 方法关闭 ResultSet 对象,但它不释放分配
给 Statement、PreparedStatement 或 CallableStatement 对象的资源。
当已结束处理 SQL 语句的结果时,
调用 ResultSet.close() 和 Statement.close() 方法,
来指示
您以该语句或结果集处理的 GBase 8s JDBC Driver,这是一种好的做法。当您这么做时,程
序释放数据库服务器上的所有资源。然而,不需要特意地调
用 ResultSet.close() 和 Statement.close(),
只要调用负责释放这些资源的 Connection.close() 即
可。