南大通用GBase8s 常用SQL语句(254)

STATCHANGE 环境选项

当启用将UPDATE STATISTICS 操作限制到陈旧的或丢失的分发的自动模式时,使用 STATCHANGE 环境选项来为 UPDATE STATISTICS 语句的更改阈值的全局百分率指定要使用的正整数。

当 AUTO_STAT_MODE 配置参数或 AUTO_STAT_MODE 环境选项已经为 UPDATE STATISTICS 语句启用了自动模式时,使用 STATCHANGE 环境选项的值,以便于它有选择地仅刷新陈旧的数据分发。

您为 STATCHANGE 设置的值指定更改阈值,来决定当 UPDATE STATISTICS 语句正在自动模式下操作时,分发统计是否符合更新的要求。

STATCHANGE 配置参数可指定正整数作为更改阈值的百分率来定义陈旧的数据分发。当启用 UPDATE STATISTICS 的自动模式时,此设置作为任何表的缺省的更改阈值生效,其 STATCHANGE 表属性指定为 AUTO,或在缺省情况下为 AUTO。STATCHANGE 配置参数的缺省值是 10。然而,您可使用 SET ENVIRONMENT STATCHANGE 语句来指定一整数值,该值为当前的会话覆盖显式的或缺省的 STATCHANGE 配置参数设置。

您可为 STATCHANGE 会话环境选项指定一个取值从 0 至 100 的整数百分率值。

SET ENVIRONMENT STATCHANGE 的示例

下列语句为服务器设置要使用的阈值,来确定分发统计是否符合更新到 50%:

SET ENVIRONMENT STATCHANGE '50';

USELASTCOMMITTED 环境选项

当两个或多个会话尝试访问其锁定颗粒度为行级锁定的表中的相同行时,通过降低锁定冲突的风险,USELASTCOMMITTED 环境选项可提高使用 Committed Read、Dirty Read、Read Committed 或 Read Uncommitted 隔离级别的会话中的并发能力。

在更改数据值时,SET ENVIRONMENT USELASTCOMMITTED 语句可指定遇到其他会话持有的排他锁的查询和其他操作是否应使用数据的最近提交的版本,而不是等待锁被释放。

此语句可在当期会话期间覆盖 USELASTCOMMITTED 配置参数。您可使用 SET ISOLATION 语句来覆盖 USELASTCOMMITTED 会话环境设置。

USELASTCOMMITTED 选项可有四个值的任意一个:

  • 如果该值为 'COMMITTED READ',则在尝试读取 Committed Read 或 Read Committed 隔离级别的行时,当它遇到排他锁时,数据库服务器读取数据的最近提交的版本。
  • 如果该值为 'DIRTY READ',那么在尝试读取 Dirty Read 或 Read Uncommitted 隔离级别的行时,如果它遇到排他锁,则数据库服务器读取数据的最近提交的版本。
  • 如果该值为 'ALL',那么在尝试读取 Committed Read、Dirty Read、Read Committed 或 Read Uncommitted 隔离级别的行时,如果它遇到排他锁,则数据库服务器读取数据的最近提交的版本。
  • 如果该值为 'NONE',则此值禁用可访问被锁定的行中数据的最后提交的版本的 USELASTCOMMITTED 特性。在此设置之下,当尝试读取 Committed Read、Dirty Read、Read Committed 或 Read Uncommitted 隔离级别的行时,如果您的会话遇到排他锁,则您的会话不可读取那行,直到提交了或回滚了持有该排他锁的并发会话为止。

例如,下列语句指定 Committed Read 隔离模式,并将显式的或缺省的 USELASTCOMMITTED 配置参数设置替换为一设置,在并发读者持有排他锁的行上,该设置读取数据的最近提交的版本:

SET ISOLATION COMMITTED READ;

SET ENVIRONMENT USELASTCOMMITTED 'ALL';

在会话期间,任何 SPL 例程都可使用这些语句来指定 Committed Read Last Committed 事务隔离级别。在读取行的操作期间,当遇到排他锁时,这些语句使得读取数据的 SQL 操作能够使用最后提交的版本。当另一会话正尝试修改相同的行时,这可避免死锁状况或其他锁定错误。它不会减少与正在写表的其他会话,或与在用户表上或在系统目录表上持有隐式的或显式的锁的并发 DDL 事务,之间发生锁定冲突的风险。

例如,在 PUBLIC.sysdbopen 或 user.sysdbopen 过程内的下列语句指定在连接时刻的 Committed Read 隔离模式,并将显式的或缺省的 USELASTCOMMITTED 配置参数设置替代为一设置,在并发读者在其上持有排他锁的表中。该设置读取数据的最近提交的版本。:

SET ISOLATION COMMITTED READ;

SET ENVIRONMENT USELASTCOMMITTED 'ALL';

除了 sysdbopen( ) 之外,任何 SPL 例程都可在会话期间,使用这些语句来指定 Committed Read Last Committed 事务隔离级别。在读取表的操作期间,当遇到排他锁时,这些语句使得读取数据的 SQL 操作能够使用最后提交的版本。当另一会话正尝试修改同一行或表时,这可避免死锁状况或其他锁定错误。它不会降低与正在写表的其他会话,或与对用户表或对系统目录表持有隐式的或显式的锁的并发 DDL 事务,之间发生锁定冲突的风险。

在跨服务器分布式查询中,如果发出该查询的会话的隔离级别有 LAST COMMITTED 隔离级别选项在生效,但一个或多个参与的数据库不支持此 LAST COMMITTED 特性,则整个会话符合该会话的 Committed Read 或 Dirty Read 隔离级别,该会话发出了事务,未启用 LAST COMMITTED 选项。

在启用 USELASTCOMMITTED 时,可防止事务从被另一事务锁定的表读取最近提交的数据。要获取关于这方面的信息,请参阅 Committed Read 的 LAST COMMITTED 选项。

要获取更多关于 USELASTCOMMITTED 配置参数的信息,请参阅您的 GBase 8s 管理员参考手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值