13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联OceanBase教程:OceanBase 限制和降级规则

某些类型的结果集对于某些查询是不适用的。如果为运行的查询指定了不可用的结果集类型或并发类型,则 OceanBase Connector/J 将遵循相应的规则来确定最佳可行类型。

实际的结果集类型和并发类型是在运行语句时确定的,如果所需的结果集类型或并发类型不可用,则驱动程序将在语句对象上发出 SQLWarningSQLWarning 对象包含该请求类型不可用的原因。检查警告以验证您是否收到了所需的结果集类型。

结果集限制

对结果集的查询具有以下限制。不遵循这些准则将导致 OceanBase Connector/J 选择备用结果集类型或并发类型。

生成可更新的结果集的限制:

生成对回滚敏感的结果集的限制:

可回滚和可更新的结果集不能有 Stream 列。当服务器必须提取 Stream 列时,会将读取大小减为 1,并阻塞 Stream 列之后的所有列,直到读取到 Stream 列为止。结果为无法批量获取列和滚动浏览。

作为 SELECT * 限制的一种解决方法,可以使用表别名,如以下示例所示:


SELECT tab.* FROM TABLE tab ...

可以通过一种简单的方法来确定查询是否可能生成回滚敏感或可更新的结果集:如果可以合法地将 ROWID 列添加到查询列表中,则该查询可能为对回滚敏感或可更新的结果集。

结果集降级规则

如果指定的结果集类型或并发类型不可用,那么 OceanBase Connector/J 将根据以下规则选择备用类型:

说明 
OceanBase Connector/J 对结果集类型和并发类型的任何操作都是相互独立的。

运行查询后,可以通过在结果集对象上调用方法来验证 OceanBase Connector/J 实际使用的结果集类型和并发类型。

避免更新冲突

以下是有关 OceanBase Connector/J 可更新结果集的注意事项:

如果您尝试对另一个提交事务的行执行 DELETE 或 UPDATE 操作,则会发生冲突。

OceanBase Connector/J 使用 ROWID 唯一标识数据库表中的一行。只要驱动程序尝试向数据库发送 UPDATE 或 DELETE 操作时 ROWID 是有效的,该操作就会运行。

驱动程序将不会报告其他已提交事务所做的任何更改。任何冲突都将被忽略,并且您的更改将覆盖以前的更改。

为避免此类冲突,请在运行生成结果集的查询时使用 FOR UPDATE 功能。这将避免冲突,但也将阻止同时访问数据。数据项只能同时保留一个写锁。


文章题目:创新互联OceanBase教程:OceanBase 限制和降级规则
文章分享:http://cdbrznjsb.com/article/djcsosc.html

其他资讯

让你的专属顾问为你服务