• 南大通用GBase8s 常用SQL语句(259)


      1. SET ISOLATION 语句

    使用 SET ISOLATION 语句来定义在尝试同时地访问相同行的进程之中的并发程度。

    此语句是对 SQL 的 ANSI/ISO 标准的扩展。

    语法

     

    用法

    SET ISOLATION 语句是对 ANSI SQL-92 标准的 GBase 8s 扩展。SET ISOLATION 语句可更改会话的持久的隔离级别。如果您想要通过符合 ANSI 的语句设置隔离级别,则请改为使用 SET TRANSACTION 语句。要获取这两个语句的对比信息,请参阅 SET TRANSACTION 语句。

    TO 关键字是可选的,且不起作用。

    对于 DIRTY READ(在 SET TRANSACTION 中称为 UNCOMMITTED)、COMMITTED READ 和 REPEATABLE READ(在 SET TRANSACTION 中称为 SERIALIZABLE in SET TRANSACTION)隔离级别,SET ISOLATION 提供与符合 ISO/ANSI 的 SET TRANSACTION 语句相同的功能。

    当从数据库检索行时,数据库 isolation_level 影响读并发。隔离级别指定在并发 SQL 事务执行期间可发生的现象。可能发生下列现象:

    1. Dirty Read。SQL 事务 T1 修改一行。然后,SQL 事务 T2 在 T1 执行 COMMIT 之前读那行。如果 T1 然后执行 ROLLBACK,则 T2 会读了从未提交的,且可被认为从未存在的一行。
    2. Non-Repeatable Read。SQL 事务 T1 读一行。然后 SQL 事务 T2 修改或删除那行并执行 COMMIT。如果 T1 然后尝试重新读那行,则 T1 可能收到修改了的值或发现那行已被删除了。
    3. Phantom Row。SQL 事务 T1 读满足某搜索条件的多行 N 的集合。然后 SQL 事务 T2 执行 SQL 语句,该语句生成满足 SQL 事务 T1 所使用的搜索条件的一个或多个新行。如果 T1 然后以相同的搜索条件重复原来的读,则 T1 收到不同的行的集合。

    数据库服务器使用分享的锁来支持尝试访问数据的进程中不同的隔离级别。

    更新或删除进程在正被修改的行上总是要求排他锁。隔离级别不干扰您正在更新或删除的行。如果另一进程尝试更新或删除您正在以 Repeatable Read 隔离级别读取的行,则拒绝那个进程访问那些行。

    在 GBase 8s ESQL/C 中,当 SET ISOLATION 执行时打开的那些游标检索行时,可能会或可能不会使用新的隔离级别。从打开了游标直到应用存取行这段时间,设置了的任何隔离级别都可能生效。数据库服务器使用在那个时刻生效的隔离级别,可能已经将行读到内部的缓冲区和内部的临时表之内。要确保一致性和可复现的结果,在您执行 SET ISOLATION 语句之前,请关闭任何打开的游标。

    仅在打开数据库之后,您才可从客户端计算机发出 SET ISOLATION 语句。

    完整连接级别设置

    SET ISOLATION 语句支持完整连接级别设置。这意味着将在连接时刻本地会话环境中的值传播到所有新的或恢复的事务。这些可包括下列事务类型:

    1. 本地数据库内的事务,
    2. 跨同一服务器实例的数据库的分布式事务,
    3. 跨两个或多个数据库服务器实例的数据库的分布式事务,
    4. 带有注册在本地数据库中的符合 XA 的数据源的全局事务。

    如果您更改事务之内的隔离级别,则将新的值传播回本地环境,也传播到所有随后的新的或恢复的事务。

  • 相关阅读:
    RCD负载箱的安全性能和认证标准有哪些?
    多线程面试指南
    基于JavaWeb的企业公司管理系统设计与实现
    windows常见的命令操作大全
    10.5 校招 实习 内推 面经
    操作系统备份
    昨天访问量破记录
    【linux命令讲解大全】124.e2fsck:检查和修复第二扩展文件系统的工具
    高精定位市场上,蓝牙AOA如何破局?
    网络安全(黑客技术)—小白自学
  • 原文地址:https://blog.csdn.net/m0_67317773/article/details/126932309