当前位置: 首页 > news >正文

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

    1. SET LOCK MODE 语句

使用 SET LOCK MODE 语句来定义数据库服务器如何处理一个试图访问锁定了的行或表的进程。

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

语法

 

元素

描述

限制

语法

seconds

在发出错误之前,进程等待释放锁的最大秒数

仅当比系统缺省值更短时,才是有效的

精确数值

用法

当进程试图访问锁定了的行或表时,此语句可以下列方式定向数据库服务器的响应。

锁定方式      作用

NOT WAIT    数据库服务器立即结束操作并返回错误代码。这是缺省的情况。

WAIT        数据库服务器挂起进程,直到释放锁为止。

WAIT seconds  数据库服务器挂起进程,直到释放锁或直到等待期间结束为止。如果在等待期间之后该锁定保持,则操作结束并返回错误代码。

要获取本文档中术语锁模式的两种不同含意的描述,请参阅相关的概念部分中的“锁定颗粒度”。

要避免在尝试读取并发会话对其持有排他行级锁的操作中等待,您还可使用 LAST COMMITTED 特性,或者通过在 SET ISOLATION COMMITTED READ 语句中显式地设置它,或者通过设置 USELASTCOMMITTED 配置参数或 USELASTCOMMITTED 会话环境选项。

示例

在下例中,用户指定如果进程请求锁定了的行,则操作应立即结束并应返回错误代码:

SET LOCK MODE TO NOT WAIT;

在下例中,用户指定应挂起进程直到释放该锁为止:

SET LOCK MODE TO WAIT;

下一示例在任何等待的长度上设置上限 17 秒:

SET LOCK MODE TO WAIT 17;

WAIT 子句

WAIT 子句导致数据库服务器挂起进程,直到释放锁或直到未释放锁但已超过了指定的秒数为止。

当您请求 WAIT 选项时,数据库服务器为防止死锁的可能性提供保护。在数据库服务器挂起进程之前,它检查挂起进程是否会导致死锁。如果数据库服务器发现可能发生死锁,则终止该操作(否决您的等待指令)并返回错误代码。在疑似死锁或实际死锁的情况下,数据库服务器都返回错误。

请谨慎地使用无限制的等待期间,当您指定不带 seconds 的 WAIT 选项时会产生这种情况。如果您不指定上限,则放置了锁的进程会以某种方式不释放它,被挂起的进程可能无限地等待。由于不存在真的死锁状况,所以数据库服务器不采取纠正活动。

在网络环境中,DBA 使用 ONCONFIG 参数 DEADLOCK_TIMEOUT 来建立 seconds 的缺省值。如果您使用 SET LOCK MODE 语句来设置上限,则仅当您的等待期间比系统缺省值更短时,才应用您的值。

完整连接级别设置

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

  1. 本地数据库内的事务,
  2. 跨同一服务器实例的数据库的分布式事务,
  3. 跨两个或多个数据库服务器实例的数据库的分布式事务,

符合 XA 的注册在本地数据库中的数据源的全局事务。

如果您在事务内更改锁模式设置,则将新的值传播回本地环境以及所有随后的新的或恢复的事务。

相关文章:

  • Bootstrap Table 实现 分页选中
  • 嵌入式系统开发笔记89:认识AVR微控制器系统架构
  • GeoPandas安装
  • View-of-Delft数据集文件学习
  • 西门子PLC S7-1200如何实现远程上下载?
  • MySQL的SQL基础(五)
  • 图书巨头BakerTaylor遭勒索软件攻击 系统中断一周仍未恢复
  • 项目实战第三十六讲:基于 Sharding-JDBC 的商品分库⽅案
  • MySQL(进阶篇--InnoDB引擎)
  • 【Linux修炼】开篇
  • 【数学建模】层次分析(MatlabPython代码实现)
  • 如何用人工智能自动玩游戏
  • PIE-engine 教程 ——影像集合的使用for循环函数(北京市NDVI计算)
  • 数据结构-栈和队列(1)
  • 【微服务】springboot 整合 dubbo3.0
  • Google 是如何开发 Web 框架的
  • [译]Python中的类属性与实例属性的区别
  • FastReport在线报表设计器工作原理
  • leetcode386. Lexicographical Numbers
  • magento2项目上线注意事项
  • python3 使用 asyncio 代替线程
  • spring security oauth2 password授权模式
  • vue脚手架vue-cli
  • 阿里云前端周刊 - 第 26 期
  • 初识 webpack
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 什么是Javascript函数节流?
  • 使用权重正则化较少模型过拟合
  • -- 数据结构 顺序表 --Java
  • 探索 JS 中的模块化
  • 我这样减少了26.5M Java内存!
  • 一份游戏开发学习路线
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # Apache SeaTunnel 究竟是什么?
  • #565. 查找之大编号
  • #QT(一种朴素的计算器实现方法)
  • #传输# #传输数据判断#
  • #职场发展#其他
  • %check_box% in rails :coditions={:has_many , :through}
  • (1) caustics\
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)php投票系统 毕业设计 121500
  • (黑马C++)L06 重载与继承
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)Neo4j下载安装以及初次使用
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点