数据库的每个连接都有其自己的隔离级别。此外,数据库也可以为每个用户或组存储一个缺省隔离级别。使用 isolation_level 数据库选项的 PUBLIC 设置可以为整个数据库组设置一个缺省隔离级别。
您也可以用表提示来设置隔离级别,但这是一个高级功能,只应在需要时使用它。有关详细信息,请参见FROM 子句中的 WITH table-hint 一节。
使用 SET OPTION 命令可以更改您的连接的隔离级别,以及与您的用户 ID 相关联的缺省级别。如果有权限,还可以为其他用户或组更改隔离级别。
如果要使用快照隔离,则必须首先为数据库启用快照隔离。
有关启用和设置快照隔离级别的信息,请参见启用快照隔离。
执行 SET OPTION 语句。例如,以下语句将把当前用户的隔离级别设置为 3:
SET OPTION isolation_level = 3; |
以具有 DBA 权限的用户身份连接到数据库。
在 isolation_level 前加上该组的名称和一个句点,然后执行 SET OPTION 语句。例如,以下命令将把 PUBLIC 组的缺省隔离级别设置为 3。
SET OPTION PUBLIC.isolation_level = 3; |
使用 TEMPORARY 关键字执行 SET OPTION 语句。例如,以下语句将在您的当前连接期间把隔离级别设置为 3:
SET TEMPORARY OPTION isolation_level = 3; |
连接到数据库时,数据库服务器将按照以下方式确定您的初始隔离级别:
可以为每个用户和组设置缺省隔离级别。如果您的用户 ID 在数据库中有一个存储的级别,数据库服务器将使用该级别。
如果没有,数据库服务器将检查您所属的组,直到找到一个级别。所有用户都是特殊组 PUBLIC 的成员。如果之前未找到任何其它设置,SQL Anywhere 将使用指派给该组的级别。
有关用户和组的详细信息,请参见管理用户 ID、特权和权限。
有关 SET OPTION 语句语法的详细信息,请参见SET OPTION 语句。
有些情况下,可能需要在事务中间更改隔离级别,例如,在只有一个表或多个表需要序列化访问时。有关在事务内更改隔离级别的信息,请参见在事务内更改隔离级别。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |