关于sybase数据库的锁

锁类型选择的确是sybase数据库设计的一个需要重要考虑的问题!也是sybase开发和管理人员比较头疼的问题,为此,来点关于lock的介绍性资料!

所支持的加锁机制

全页加锁

全页加锁既是一个新术语,它又是由ASE(Adaptive Server Enterprise)在过去所支持的一种加锁类型。这种类型有下列特性:

对所有可被访问的页面在页面级加锁

当各种类型的页面以任何方式发生改变时,对这些排它性的页面进行加锁;而且这种加锁机制一直保持到该事务终止;

当下一个所需的页面已经成功地获得,对那些已经释放的的当前访问页进行共享页面加锁(如果采用了第三层ANSI隔离,则把这种加锁机制保持到该事务终止为止) 采用页级时间印记(timestamp)以确定是否发生改变,详细信息记录在事务日志中,以便在系统恢复时以向前或向后方式使用。

这种加锁方式常常提供性能最高的解决方案,特别是当应用设计时已经考虑了这些特性时更是如此。但是,有一些应用系统,当发生某些活动时,这种对整个页面进行加锁的方式就可能会对系统性能产生有重大意义的影响。对于那些面对诸如文件系统或其它已经支持更细小尺度加锁机制的数据库厂家产品的一般环境而设计的应用系统而言,这种情况尤其如此。

此外,还存在一系列问题,它们要围绕着更加困难的条件进行工作。它们通常要采用更加具有Sybase特性的解决方案。对于商用的应用软件制造厂商而言,对他们是一个挑战,因为这将要求他们必须跨越他们所支持的数据库平台,去完成维护其原代码的工作,而这个工作有相当工作量。在这个领域的基本问题如下:

对已经按照升序值创建的非群聚性索引的最末端叶型页面存在着争议

对非群聚性索引的表进行插入和查询时可能发生死锁;

在按照群聚性的索引值进行更新和对非群聚性索引的表进行查询访问之间可能发生死锁;

在没有作索引的表的最后一行可能发生冲突(尽管对最后的特定地址可以使用分区) ;

有可能使行数很少的表之间发生潜在的冲突(尽管对特定的地址可以使用填充因子[ fillfactors]和每页最大行数[max_rows_per_page]这两个参数)

对每个页面两边进行加锁的需要常常被分割开来;如果一个表特别小,以致在一个单一页面中进行驻留,那么对单一行的访问实际上将破坏对整个表的加锁机制。

仅对数据加锁

仅对数据加锁机制试图去解决本文前一节所关注的主要问题(其他的议题将在其它功能领域中加以解决)。这种加锁方式支持两类不同的工作方式: 数据行加锁和数据页加锁。在这两种情况中,对于它们所支持的加锁方式,都与以前的加锁机制有所不同。仅对数据加锁具有下列特性:

在索引页面中不会破坏事务加锁。相反,而是采用了一种称之为锁存的机制。锁存是一种类似于旋转锁(spinlocks)的同步方法,它们与事务无关并且只保留很短的周期(一般而言,当一个任务在数据库中物理上改变一小片数据时,这个周期相当于在共享存贮区中在一个2K的页面改变某些字节数据的时间)一旦完成之后,这个任务将直接打开这个锁存。当这种情况还可能临时同其它组块时 ,因为这种锁存不能对服务器任务进行有上下文的切换,也不能涉及死锁,并且只能保持主要的一小段时间,所以它们不能产生有显著意义的争用。

采用一个RID对单一行进行数据行加锁(行标识[RID----Row ID]是逻辑页号与所在页面上该行号的组合);

支持固定的行标识 RIDs, 它可以是向前的,允许不进行其RID的改变,就完成数据行的移动。当一行变大超过了它的可用空间时,采用上述结果对非群聚索引不需要进行任何改变。

不需要进行任何争用就可以在表的尾部进行插入操作,这一功能已经增加进来。

支持采用范围加锁、下一个关键字加锁和无限大加锁等方式对逻辑范围值进行加锁

支持由最顶层操作所导致的页面分割。这些情况直接加以提交,"系统"事务可以导致在更短一点的时间周期里保持分裂的页面处于锁定状态。

为了支持这些变化,需要对采用的存贮表结构进行一系列改善。这些改进的主要效果如下:

群聚索引现在被存贮为象许多人所熟悉的IBM DB2产品所采用的“放置索引”("placement indexes.”)方式。这种结构类似于非群聚性的索引,需要类似的空间总量。这种修正的结构导致了在数据初始存贮时可以按照顺序跨数据页进行存储,但是当发生插入时,它们就要尽可能紧密存放以便在正确的逻辑页面中不存在页面分割。此外,在数据页中的数据顺序在新行增加时是不进行维护整理的。这种索引的应用使每个群聚化的索引周游增加了一次I/O操作。 

行位移表已经增加到索引页和数据页中。这种增加和新的行索引行存贮格式具有使每个索引页面所存贮的索引条目个数减少的潜在能力。

固定行标识(RIDS)。当一行移动时,对于分配新行位置的向前地址被放在用于驻留该行的位置上。当这种移动需要改变非群聚性索引时,对该行的访问需要增加一次I/O操作以得到‘向前’的位置。

一般而言,索引将更小和更短,这是因为如下原因:

从每个叶级页面中采用双重键限制机制来限制双重键(Duplicate key)例如,如果值“绿”("GREEN”)在下列行标识(RIDs)值等于 123-1,234-2,和345-3的行中, 就分别存贮值“绿”("GREEN”),123-1,234-2,345-3,而不是存贮值“绿” ("GREEN,”)三次。在每个索引页中每个值只存贮一次。

在非群聚性索引树的非叶型结点中将后缀实行压缩(例如,如果键值是"GREEN”和"HAMILTON”,而在这两个值之间发生分裂,那么就在非页级索引页面中存储"G”和"H”)。

时间: 2024-10-18 12:33:24

关于sybase数据库的锁的相关文章

sybase数据库性能调整

数据库性能调优的一些小方面: 1.1 性能指标 数据库性能一般用两个方面的指标来衡量:响应时间和吞吐量.响应越快,吞吐量越大,数据库性能越好.响应时间和吞吐量有些情况下不能一起得到改善. 1.2 调优级别 对Sybase数据库性能调优,可以从四个方面进行: 一) 操作系统级:对网络性能.操作系统参数.硬件性能等作改进. 二) SQL Server级:调整存取方法,改善内存管理和锁管理等. 三) 数据库设计级:采用降范式设计,合理设计索引,分布存放数据等. 四) 应用程序级:采用高效SQL语句,合

在SCOADMIN下的Sybase数据库的完全安装

在SCOADMIN下的Sybase数据库的完全安装. 1.用SCOADMIN建立Sybase账号. 2. VI /usr/sybase/.profileSYBASE =安装目录DSQUERY =数据库服务器名(默认为SYBASE)PATH =$SYBASE/bin:$SYBASE/install:$PATH:export SYBASE DSQUERY PATH 3.调整系统参数: vi /etc/conf/cf.d/stune加入SIMMAX67108864 (=64MB内存)NFILE1100

SYBASE数据库用户管理基本概念(howto)

在SYBASE数据库中,用户管理是系统管理的一个重要组成部分,但其重要性却往往被人忽视.许多时候,操作数据库的命令不成功常与用户管理有关,而许多误操作命令的发生也可以通过用户管理来避免.因此,弄清用户管理的一些基本概念,对成功进行数据库系统管理有重要的作用. 下面我们将对SYBASE数据库用户的基本概念加以解释说明. 一.SQL SERVER注册用户和数据库用户 刚接触到这两个概念的时候,我们可能会有所混淆,但只要了解SYBASE SQL SERVER的结构后,就会清楚.SYBASE SQL S

SQL Server如何访问sybase数据库的表

一 安装sybase客户端 版本:Sybase Client 11.9.2 for NT 1)安装完成后,运行开始->程序->sybase->Dsedit 2)选择菜单的'Server Object',-> 'Add' 输入服务名 比如 1.70 3)然后在Server列表中选择'1.70',双击右边的对话框server address栏,在Network Address Attribute对话框中 选择add 填入ip地址,比如132.228.1.70,4300,ok 确定 4)

MS SQL Server数据库事务锁机制分析

server|数据|数据库 锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我调节.自我管理的功能,因此很多用户实际上不清楚锁的理论和所用数据库中锁的具体实现. Microsoft SQL Server(以下简称SQL Server)作为一种中小型数据库管理系统,已经得到了广泛的应用,该系统更强调由系统来管理锁.在用户有SQL请求时,系统分析请求,自

Jdbc连Sybase数据库的几种方法

数据|数据库 1.单用一个JSP文件测试SYBASE jconnect-5_2 JDBC数据库接口: ffff00 border=1> <%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><HTML><HEAD><TITLE> JSP测试SYBASE jconnect-5_2 JDBC数据库接

Java连接Sybase数据库

数据|数据库   Java连接Sybase数据库第一步:工欲善其事,必先利其器.(下载驱动)下载JDBC驱动:网址:http://www.sybase.com/detail?id=1009726有jConnect6.0和jConnect5.5两种,我们下载6.0版本. 第二步:得到驱动释放下载的jConnect-6_0.zip文件,其中有文件夹:devclasses,其下有一jar文件jconn3d.我们将jconn3d.jar也释放,其实可以不释放,为了说明简便,我们将它释放到任意文件夹,比如

Sybase数据库在税务部门的成功应用方案

一.国内税收征管现状 作为一国税收制度的重要组成部分,税收征管具有非常重要的地位,它需要鉴定潜在纳税义务人.核定其应纳税额并及时足额征收入库.为了确保税收征管的顺利进行,税务部门就必须改进自身的组织工作和改善对纳税人的服务.在上述方面,中国的税收征管走过了一段不平凡的道路.长期以来,国内的税收征管主要采用手工的模式,即使配备了计算机也多用于简单的数据录入,致使中国的税收征管并不尽如人意,具体表现在: (1)征管难度大.税务的征收.税种的确定及征管稽核大都依靠手工完成,税源堵漏工作量大. (2)税

Sybase数据库备份方案

Sybase数据库产品自从1987年问世以来,它的客户机/服务器(client/server)工作模式.分布处理的基础体系结构.完善的安全保密性能.高速快捷的运行方式.多平台跨操作系统的广泛应用等优点,迅速被IT界接受并推广应用.我们作为金融业的用户,也在1995年开始使用Sybase10版本.在具体的使用中,发现集中式的数据管理有其优点,就是数据风险范围大为缩小,但是作为Sybase的服务器一端,数据风险比较集中,如何做好数据库的数据备份,成为至关重要的问题. 在实际应用中,我们总结出了两种全