informix 锁

INFORMIX使用锁技术解决在多用户访问数据库情况下,对同一对象访问的并发控制问题。INFORMIX支持复杂的、可伸缩性的锁技术。

锁的类型
INFORMIX有三种不同类型的锁。它们在不同的情况下使用。
1. SHARED锁
        SHARED锁只保留对象的可读性。当锁存在时,对象不能改变。多个程序可对同个对象加SHARED锁。
2. EXCLUSIVE锁
        只能使单个程序使用。在程序要改变对象时使用。当其他锁存在时,EXCLUSIVE锁不能使用。当使用了EXCLUSIVE 锁后,其他锁不能用于同一对象。
3. PROMOTABLE锁
        实现更新的目的。PROMOTABLE锁可以放在已经有SHARED锁的记录,但不能放在已经有PROMOTABLE锁和EXCLUSIVE锁的地方。当 记录上无其他锁(含SHARED 锁)情况下,这时在程序准备改变锁的记录时,PROMOTABLE锁可以提升为EXCLUSIVE锁。如果在已有SHARED锁的记录上设置了 PROMOTABLE锁,在PROMOTABLE锁可以提升到EXCLUSIVE锁之前需要删除SHARED 锁。PROMOTABLE锁只能在INFORMIX Universal Server中支持。


锁的范围
INFORMIX对于数据锁定提供了三种不同的方式,范围由大到小分别是数据库、表、记录级锁。使用的时机要看应用状况而定。

1. 数据库级锁
        你可以用CONNECT, DATABASE, 或 CREATE DATABASE语句打开数据库。打开数据库的操作就在数据库上设置了SHARED锁。只要程序打开一个数据库,SHARED锁就会阻止其他程序删除数据 库或在数据库上设置EXCLUSIVE锁。你可以用语句DATABASE database name EXCLUSIVE锁定整个数据库。若此时其他用户正在使用该数据库,该操作将返回错误。一旦设置了EXCLUSIVE锁,其他程序就不能打开数据库,因 为打开时要放置一个SHARED锁。只有数据库关闭时,数据库锁才释放。你可以用DISCONNECT或CLOSE DATABASE显示地处理,也可以运行其他的DATABASE语句隐含的处理。一般数据库级EXCLUSIVE锁是独占数据库资源,防止其他程序访问数 据库。它使得程序非常简单,不会产生并发效果。常用在非高峰时期要改变大量数据时如数据库备份过程。

2. 表级锁
        INFORMIX提供两种模式表级锁:EXCLUSIVE MODE 和SHARE MODE。你可以锁整个表。在某些情况下,这个操作是自动进行。当INFORMIX处理下列语句时,一般锁整个的表:ALTER INDEX 、ALTER TABLE 、CREATE INDEX、DROP INDEX 、RENAME COLUMN、RENAME TABLE 。该语句结束或事务结束会释放该锁。在某些查询语句中,INFORMIX也自动锁整个表。你可以用LOCK TABLE语句显示地锁整个表。该语句允许你对整个表设置EXCLUSIVE锁或SHARED锁。当你程序从表中读取数据时,SHARED锁防止表中数据 更新。INFORMIX Universal Server 通过设置隔离级别实现更大程度并发数据保护。表级EXCLUSIVE锁防止对同个表的并发使用。因此,如果其他许多程序要使用该表时,系统性能会受到严重 影响。类似数据库级EXCLUSIVE锁,表级EXCLUSIVE锁常用在非高峰时期要改变大量数据时。例如,有些应用在高峰期间并不更新表,它们可以在 非高峰期间定期以批处理方式更新。
通过UNLOCK TABLE table name 解除锁。当存在事务时,事务结束时解除锁。

3. 记录级、页级、键字级锁
        表的一个记录是可设置锁的最小对象。一个程序可以锁一个记录或记录的集合,同时其他程序可以操作同一个表的其他记录。Universal Server 以磁盘页面(disk pages)为单位存储数据。一个磁盘页面包含一个或多个记录。在有些情况下,页级锁比单个锁更好些。其他数据库服务器可能不存在页级、键字级锁。

        在Universal Server上,当你创建表时,你可以选择使用记录级锁或页级锁。其他的数据库服务器不提供这种选择。页级、记录级锁有相同的效果。当Universal Server需要锁一个记录时,根据表创建时的锁模式,锁这个记录或记录所在的页面。在一定情况下,数据库服务器需要锁一个不存在的记录。它的效果相当于 在记录将要存在的地方放一个锁。当表使用记录锁时,对假想的记录使用键字锁。当表使用页级锁时,含有或可能含有键字的索引页将被设置键级锁。

锁的时期

        程序控制数据库级锁的时期。数据库关闭时,数据库锁级也就释放。表级、记录级、索引级锁的时期依赖于使用的SQL语句以及是否使用事务。如果数据库没有使 用事务,也就是说,事务日志不存在并且你没有使用COMMIT WORK语句,当运行UNLOCK TABLE语句时,表级锁就释放。当使用了事务时,事务结束,表级、记录级、索引级锁都释放。修改时锁的处理
当数据库服务器通过一个更新游标取一条记录时,它在该记录上设置一个PROMOTABLE锁。如果这个动作成功,数据库服务器知道其他程序不能改变此记 录。因为PROMOTABLE锁不是独占的,其他程序能够继续读这条记录。由于在取此记录的程序执行UPDATE、DELETE语句或简单地取下一条记录 之前,它可能花一些时间。这样就提高了性能。当它改变一个记录时,数据库服务器在这条记录上设置一个EXCLUSIVE锁。如果它已经有一个 PROMOTABLE锁,它将锁改为EXCLUSIVE状态。

        EXCLUSIVE锁的时期依赖于是否使用事务。如果没有使用事务,被修改的记录写到磁盘上就会释放该锁。当使用了事务时,锁就会保持到事务的结束。这个动作防止其他程序使用可能回滚到原来状态的记录。

        当使用了事务时,只要删除记录键级锁就会设置。使用键级锁解决下列错误:程序A删除一个记录,程序B插入有同样键的记录。程序A回滚事务,使数据库服务器 恢复了删除的记录,这时程序B插入的记录怎么办?通过锁索引,数据库服务器等到程序A提交事务时才插入记录。

        由于 Universal Server数据库服务器管理自己的锁,所以它能提供不同类型的锁。其他的数据库服务器是通过操作系统的特性实现锁,所以不能提供多种选择。有些操作系统 通过操作系统服务方式向外提供锁函数。在这些系统,数据库支持SET LOCK MODE语句。而有些操作系统不支持内核级的特性,数据库这时通过在数据库目录下产生小文件实现锁。这些文件带有.lok后缀。如果你的程序使用单个 SELECT语句或没有用FOR UPDATE声明的游标提取一个记录,此记录不管是否被一个未完成的交易上锁会马上被提取。这样能产生最好的性能。当你使用FOR UPDATE声明的游标时,它在提取前将当前记录上锁。如果当前记录已经有锁,随作选择模式的不同,程序会等待或返回错误。当取下一个记录时,数据库看当 前记录是否更新(使用带WHERE CURRENT OF 的UPDATE

锁的模式
锁的模式决定程序遇到被锁的数据会产生怎样的结果。当程序要提取或修改一个上锁的记录时,会有下面几种情况:
        1、 数据库马上通过SQLCODE变量或SQLSTATE结构给程序返回一个错误代码。
        2、 在数据解锁前,数据库将程序挂起。
        3、数据库将程序挂起一段时间。如果锁还未解,数据库给程序返回一个错误代码。

你可以通过SET LOCK MODE模式选择以上结果。
如果你喜欢程序等待(对大多数程序而言这是最好的选择),运行下列语句:SET LOCK MODE TO WAIT。
        当设置了锁模式后,程序常忽视其他并发程序的存在性。如果程序需要访问其他程序已上锁的记录时,它等待别的程序解锁,然后继续。延迟的时间常不可预测。

        等待解锁不利的一面就是可能会等待很长时间。如果不能接受很长延迟,程序可以运行下列语句:SET LOCK MODE TO NOT WAIT选择不等待。当程序需要一个锁记录时,它马上返回一个错误代码,且当前的SQL语句终止。这时,程序必须回滚当前的交易再试一次。程序开始时,数 据库初始设置为不等待。

        当你使用UNIVERSAL SERVER时,你有另外的选择。你可以让数据库设置等待时间的上限。你可用下列语句:SETLOCK MODE TO WAIT 18让数据库有18秒等待上限。若期间锁还没有解开,将返回错误代码。

        在每个程序都选择了锁等待模式情况下,有可能出现死锁。死锁是程序之间相互阻塞,每个程序在其他程序要访问的对象上设置了锁。UNIVERSAL SERVER在单个网络服务器情况下会马上检测到死锁。如果程序选择了锁等待模式,通过给程序返回错误代码,你就知道你遇到了死锁。而在多个数据库服务器 的情况下,UNIVERSAL SERVER不能马上检测到。每个数据库服务器都设置锁等待的上限。如果超时,数据库服务器就认为发生了死锁且返回相关的错误代码。数据库管理员可以设置 和修改等待时间的上限。

informix锁表处理 informix 锁表处理,锁表时获取详细的会话信息来锁定锁表的原因 立即下载

相关推荐

MATLAB图像去噪实战:如何用巴特沃斯滤波器完美去除横条纹(附完整代码)

本文详细介绍了如何使用MATLAB中的巴特沃斯滤波器有效去除图像中的横条纹噪声。通过频域分析和滤波处理,结合完整的代码示例,帮助读者掌握从噪声分析到参数优化的全流程技术,实现高质量的图像去噪效果。

weixin_30566063的博客 562

Informix数据库的锁技术

<br />INFORMIX使用锁技术解决在多用户访问数据库情况下,对同一对象访问的并发控制问题。INFORMIX <br />支持复杂的、可伸缩性的锁技术。<br /><br />锁的类型<br /><br />INFORMIX有三种不同类型的锁。它们在不同的情况下使用。<br /><br />1. SHARED锁<br /><br />SHARED锁只保留对象的可读性。当锁存在时,对象不能改变。多个程序可对同个对象加SHARED锁。<br /><br />2. EXCLUSIVE锁<br /><br /

xj_sir的专栏 675

WinCC ActiveX控件“许可证缺失”故障排查:从注册表修复到系统兼容性全解析

本文深入解析WinCC ActiveX控件报错“未找到许可证信息”的根本原因与解决方案。核心在于系统注册表中控件的设计时许可证密钥丢失或损坏。文章提供了从手动修复注册表、排查64位系统兼容性,到预防性环境部署的全流程专业指南,帮助工程师彻底解决这一常见故障。

oil88的博客 646

【转】informix的事务、并发控制、锁机制、隔离级别

1、事务       事务是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单 元,可以简化错误恢复并使应用程序更加可靠。数据库服务器保证在事务范围内执行的操作完整且正确地提交至磁盘,否则数据库会复原至事务启动之前的状态。      一个逻辑工作单...

nhy520 533

从医疗成像到工业检测:CMOS图像传感器NIR技术的最新应用案例解析

本文深入解析了CMOS图像传感器NIR技术在医疗成像和工业检测中的最新应用案例。通过提升量子效率至70%,NIR技术实现了血管可视化、材料缺陷检测等突破性进展,显著提高了医疗诊断精度和工业质检效率。文章还探讨了系统集成关键考量和前沿发展趋势。

weixin_30879169的博客 87

DeepSeek-R1 论文阅读 DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning

和。这些模型的核心创新点是通过强化学习(Reinforcement Learning, RL)来提升大型语言模型(LLM)的推理能力,而没有依赖传统的监督微调(Supervised Fine-Tuning, SFT)作为预训练的步骤。是一种通过大规模强化学习直接训练的模型。它在推理能力上表现出色,能够自然地展现出许多强大且有趣的推理行为。但它也有一些问题,比如可读性差和语言混合。这意味着模型在生成文本时,有时会显得不太清晰,或者不一致地使用不同语言。为了解决这些问题并进一步提升推理能力,研究者提出了。

CSPhD-winston的博客 1839

informix 锁模式更改

Informix如何从页锁转换为行锁 如果大量的进程读取一个表,会造成一些等锁的现象。Informix上面可能会报出-243, -244, -245的错误。对于比较大的表来讲,如果把缺省的页锁转换为行锁,往往可以减少这种错误。步骤是:1. 用命令: oncheck –pt database:tablename 查看目标表的锁方式;2. 如果确定用alter table tablen

feitianfjl的专栏 3392

Open3D (C++) 使用点云创建数字高程模型DEM

Open3D (C++) 使用点云创建数字高程模型DEM

点云侠的博客 1391

informix 访问mysql_Informix 11.7 使用非系统用户访问数据库

Informix 11.7 使用非系统用户访问数据库苏翔, 孙国荣, 和 谭永贻2012 年 11 月 22 日发布1. 概述Informix11.7 提供了非操作系统用户访问数据库的机制。在 Informix 之前的版本,所有访问数据库的用户必须是一个拥有相应权限的系统用户。从 11.7 开始,Informix 允许用户通过内部授权服务(比如 Kerberos 或者 Microsoft Acti...

weixin_39971132的博客 534

化工仿真软件:gPROMS二次开发_(1).gPROMS基础知识

在gPROMS中,模型是通过定义变量、参数和方程来创建的。模型可以是简单的单元操作,如换热器、反应器,也可以是复杂的系统,如整个化工流程。变量是模型中表示状态或输出的量。在gPROMS中,变量需要显式定义其类型和单位。# 定义变量VAR# 温度变量,单位为K# 压力变量,单位为Pa# 组分摩尔分数,数组变量参数是模型中表示常量或初始条件的量。参数同样需要定义其类型和单位。# 定义参数PAR# 理想气体常数,单位为J/(mol·K)# 反应器体积,单位为m^3# 初始摩尔数。

kkchenjj的博客 616

【2025最新版】ABAP 开发百科全书专栏文章目录(上)

本文汇总了一系列SAP ABAP技术文章,内容涵盖实用技巧合集、函数式编程实践(如Currying、reduce应用)、设计模式实现(如Visitor、Singleton)、动态代理与Mock技术、性能优化方案(如Lazy Loading)、日期处理与内存管理,以及ABAP与JavaScript的编程范式对比。还涉及CDS视图、Fiori字段追踪、单元测试优化等实战经验,深入剖析了ABAP底层机制(如Internal Session、Function Module实现原理),并提供了多种反模式改进方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2464

Informix查看死锁和解锁

Informix杀掉死锁的方法和查看死锁的sql语句(转)作者:星星博客园  来源:博客园  发布时间:2011-01-21 10:01  阅读:60 次  原文链接   [收藏]    Informix锁表产生的原因,要么是多个用户同时访问数据库导致该问题,要么是因为某个进程死了以后资源未释放导致的。如果是前一种情况,可以考虑将 数据库表的锁级别改为行锁,来减少撞锁的机会;或在应用程序中,用s

沉底的石头 1万+

使用 MATLAB/Simulink + Simscape Electrical,构建一个含光伏并网系统与SVG的联合仿真模型,实现动态无功补偿与电压支撑

摘要:本文详细介绍了基于Simulink的SVG与光伏并网逆变器联合系统建模方法。通过构建包含光伏单元、SVG主电路和控制模块的仿真模型,实现动态无功补偿与电压稳定。重点阐述了ip-iq无功检测算法、双闭环控制和SVPWM调制等关键技术。仿真结果表明,该系统能快速响应无功需求,在10ms内将功率因数提升至0.98以上,有效抑制电压波动。文章为新能源并网系统中的电能质量治理提供了实用解决方案,并提出了进一步优化方向。

xiaoheshang_123的博客 322

INFORMIX的锁技术

        INFORMIX使用锁技术解决在多用户访问数据库情况下,对同一对象访问的并发控制问题。INFORMIX支持复杂的、可伸缩性的锁技术。  锁的类型           INFORMIX有三种不同类型的锁。它们在不同的情况下使用。            1. SHARED锁                SHARED锁只保留对象的可读性。当锁存在时,对象不能改变。多个程序可对同

数据库技术成长之路...... 3672

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python informix_informix锁

1.在将一个表unload时,出现:244:Could not do a physical-order read to fetchnext row107:ISAM error:record is locked在不重启动数据库情况下,如何解锁?onstat -g ses和onstat -g sql可以通过SQL语句检查那些用户,那些SQL在操作这张表。可以重点检查onstat-g sql中UPDAT...

weixin_39872257的博客 184

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

informix 查询 锁表

http://blog.youkuaiyun.com/shif_l/article/details/7031300 http://blog.youkuaiyun.com/lwei_998/article/details/5989801 http://blog.chinaunix.net/uid-20489505-id-70151.html  在informix中查询SELECT,表有千百万条数据,结

沉底的石头 7012

informix锁表处理步骤

INFORMIX锁表处理步骤:1、onstat -ks|grep HDR+X //查询是那个表被锁 address wtlist owner lklist type tblsnum rowid key#/bsiz c1809510 0 d656e774 c181cb3c HDR+X 6002e1 2c602 0 需要关注lklist和type项,从上面来看tblsnum为6002e1(6292193十六进制转换成十进制)的表被锁了。可以重查...

赵某生的博客 1779

informix锁表处理(转)

 可以通过Onmode -u 将数据库服务器强行进入单用户模式,来释放被锁的表。对于正式运行的设备,该方法就不可取了,必须找到锁表的session或进程,然后根据具体情况进行处理。这里简单介绍一下如何根据被锁表找到锁表的进程及其session id。    以INFORMIX用户登录后,具体操作步骤如下:1、取得当前锁情况 [informix] :/opt/informix/

不要笑我笨 2163

INFORMIX锁

INFORMIX使用锁技术解决在多用户访问数据库情况下,对同一对象访问的并发控制问题。INFORMIX支持复杂的、可伸缩性的锁技术。 锁的类型 INFORMIX有三种不同类型的锁。它们在不同的情况下使用。 1. SHARED锁         SHARED锁只保留对象的可读性。当锁存在时,对象不能改变。多个程序可对同个对象加SHARED锁。 2. EXCLUSIVE锁         只能使单个...

zzg 780

informix报错244_informix锁

1.在将一个表unload时,出现:244:Could not do a physical-order read to fetchnext row107:ISAM error:record is locked在不重启动数据库情况下,如何解锁?onstat -g ses和onstat -g sql可以通过SQL语句检查那些用户,那些SQL在操作这张表。可以重点检查onstat-g sql中UPDAT...

weixin_39982017的博客 933

informix 锁表

<br /><br />文章分类:数据库    早晨来了,发现今天所有数据都没有上来,查看发现快照表里没有今天的数据,当我想load 昨天的数据出来时,报 245: Could not position within a file via an index. 的错误,informix 锁表问题。处理步骤: <br />    <1> 在informix用户下找出锁表的用户:onstat -ks|grep HDR+X,输出的内容很多很多, <br /> 10a

jalays的专栏 4990

今天初步了解了informix的锁的概念

今天初步了解了informix的锁的概念 2005-06-12 01:07:05 分类:IT生活 在load的时候,碰到好几次“-134 ISAM Error :no more locks”,原来是数据库中的锁的数量不够所致,后来到/informix/etc/下修改onconfig文件,把LOCKS的值增加到20000(原来400),问题解决。 但在网...

dnxjcgb0575的博客 446

informix锁

1.在将一个表unload时,出现: 244:Could not do a physical-order read to fetchnext row 107:ISAM error:record is locked 在不重启动数据库情况下,如何解锁? onstat -g ses和onstat -g sql可以通过SQL语句检查那些用户,那些SQL在操作这张表。可以重点检查o...

weixin_34228617的博客 430

Informix如何从页锁转换为行锁

informix 锁模式更改

happy_star123的博客 737
上一篇: ESQL使用方法
下一篇: Linux线程池
「已注销」
博客等级 码龄19年 22粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值