简单地叙述
关系数据库具有四个特点:安全性、完整性、并发性和可监控性。 数据库安全是指保证数据库中数据的安全,防止未经授权的用户随意更改数据库中的数量
据介绍,确保数据安全。 在大多数数据库管理系统中,许可证主要是保证数据库的安全。 完整性是数据库的重要特征,保证数据库中的数据可靠有效。
防止错误,实现商业规则的重要机制。 在数据库中,区分存储的数据是无用的垃圾还是有价值的信息,主要取决于数据库的完整性是否健全。 在SQL中
服务器
在7.0中,数据完整性由一系列逻辑提供保障。 这些逻辑分为实体完整性、域完整性和引用完整性三个方面。 这可以说是任何系统,没有监视就没有
有优化。 这句话在数据库管理系统方面也很现实。 通过对数据库进行全面的性能监视,可以识别影响系统性能的因素和瓶颈,并应对瓶颈因素
采取切合实际的战略,解决问题,提高系统性能。 同时性也是非常重要的概念,用于解决多个用户操作同一数据时的问题。 特别是在互联网数据库中
我说这个特征更突出。 要提高数据库的处理速度,只提高计算机的物理速度是不够的,还必须充分考虑数据库的并发性问题,提高数据库的并发性效率。 那么…
如何保证同时性? 作为新一代数据库产品,SQL Server 7.0通过使用事务和锁定机制解决了数据库并发问题。
工作
任务和锁链是两个密切联系的概念。 事务是包含一系列操作的设备任务,这些操作要么全部成功,要么全部失败。 事务确保多个数据的更改作为一个单元进行
理科。 例如,在银行业务中,有一个会计原则,就是有贷就有贷,等于贷。 为了保证这一原则,必须确保借出和出借登记是同时成功还是同时失败。 如果出现了
记录借的东西,或者只记录借的东西,会违反会计原则,导致记错。 SQL
Server通过支持事务机制管理多个事务来保证事务的一致性。 事务使用锁定来防止其他用户更改另一个尚未完成的事务中的数据。 对于多用户系统,锁定
需要机制。 SQL Server 7.0使用事务日志来确保更改的完整性和可恢复性。
SQL
Server具有各种锁定,事务可以锁定不同的资源。 锁定是指保护指定资源免受其他事务的影响。 为了将锁定的成本最小化,SQL
Server会自动以与任务相应的锁定级别锁定资源对象。 锁定相对较小的对象如锁定行)可以提高并发性,但锁定许多行会增加成本。
需要更多的钥匙。 锁定整个表会限制其他事务对表的其他部分的访问,但成本较低,因此锁定更大的对象如锁定表)会大大降低并发性
只是维持相对较少的锁。
事务和锁定具有以下特征:
事务是一个单元的工作,要么全做,要么全不做
事务可以保证操作的一致性和可恢复性
每个Transact-SQL语句都可以是事务
实际使用的事务是包含一系列操作或语句的用户定义的事务
多服务器环境使用用户定义的分布式事务来确保操作的一致性
锁定是保证同时控制的手段
可以锁定的资源包括行、页面、集群、表和数据库
锁的类型主要包括共享锁和独占锁
特殊类型的锁定包括意图锁定、修改锁定和模式锁定
通过共享锁,其他事务可以继续使用锁定的资源
独占锁允许只有一个事务访问数据
系统本身可以处理死锁
用户可以根据情况定制锁的特性
事务
定义事务处理
事务是一个单元的工作,这些工作要么全部做,要么全部不做。 作为逻辑单元,需要原子性、一致性、独立性、持续性四个属性。 原子性是指事务处理
自动化的设备操作要么执行所有数据更改,要么不执行所有数据更改。 一致性是指事务完成后,所有数据必须保持一致的状态。 在关系数据库中
中,必须将所有规则应用于事务更改以维护所有数据的完整性。 所有内部数据结构如树索引和数据之间的链接)在事务完成后必须保证为正
确实。 独立性意味着对并行事务的修改必须独立于其他并行事务的修改。 一个事务显示的数据可能是另一个事务修改这些事务之前的状态,也可能是第二个事务已被修改
已更改的数据,但此事务无法看到已更改的数据。 这个特征也称为串行性。 持久性是指事务完成后,其影响永久地发生在系统中,即这种修复
改写成数据库了。
事务机制可以确保执行或不执行一组数据更改。 SQL
Server使用事务来确保数据的一致性,并确保系统故障时的可恢复性。 事务是由一个或多个Transact-SQL语句组成的可恢复单元的任务
是的,可以影响表中一行或多行的数据。 打开事务后,直到事务成功完成并提交,或者直到事务执行失败并全部取消或回滚。
锁门
悲观锁定会在每次访问数据时收集数据,假设另一个客户可能正在访问同一数据
取了数据库层次的锁定状态,在锁定的时间内其它的客户不能对资
料进行存取,对于单机或小系统而言,这并不成问题,然而如果是在网络上的系统,同时间会有许多联机,如果每一次读取数据都造成锁定,其后继的存取就必须等
待,这将造成效能上的问题,造成后继使用者的长时间等待。乐观锁定optimistic locking)则乐观的认为资料的存取很少发生同时存取的问题,因而不作数据库层次上的锁定,为了维护正确的数据,乐观锁定使用应用程序上的逻辑实现版本控制的解决。
例如若有两个客户端,A客户先读取了账户余额1000元,之后B客户也读取了账户余额1000元的数据,A客户提取了500元,对数据库作了变更,此时
数据库中的余额为500元,B客户也要提取300元,根据其所取得的资料,1000-300将为700余额,若此时再对数据库进行变更,最后的余额就会不
正确。
在不实行悲观锁定策略的情况下,数据不一致的情况一但发生,有几个解决的方法,一种是先更新为主,一种是后更新的为主,比较复杂的就是检查发生变动的数据来实现,或是检查所有属性来实现乐观锁定。
posted on 2007-04-06 16:57 lqx 阅读356) 评论0) 编辑 收藏