数据库原理及应用SQL-Server 配套课件.ppt
文本预览下载声明
事务隔离级(1) 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别。每一个事务都有一个隔离级,它定义了事务彼此之间隔离和交互的程度。SQL Server数据库事务的隔离级别有5个,由低到高依次为READ UNCOMMITTED(未授权读取、读未提交)、READ COMMITTED(授权读取、读提交)、REPEATABLE READ(可重复读取)、SNAPSHOT(快照)、SERIALIZABLE(序列化)。事务的隔离级别控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用。隔离级别越高,读操作的请求锁定就越严格,锁的持有时间久越长。所以隔离级别越高,一致性就越高,并发性就越低,同时性能也相对影响越大。 * */37 事务隔离级(1) 在SQL Server 2012 中,设置事务的隔离级别(从低到高排列)的语句格式如下: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED|READ COMMITTED| REPEATABLE READ|SNAPSHOT|SERIALIZABLE READ UNCOMMITTED 处于该级别事务之间具有最小限度的隔离,允许脏读,但不允许丢失更新。如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其它事务读取此数据。该隔离级别可以通过“排他锁”实现。 * */37 事务隔离级(2) READ COMMITTED 它是SQL Server默认的隔离级别,处于这一级的事务可以看到其他事务添加的新记录,而且其他事务对现存记录做出的修改一旦被提交,也可以看到。也就是说,这意味着在事务处理期间,如果其他事务修改了相应的表,那么同一个事务的多个SELECT语句可能返回不同的结果。提交读允许不可重复读取,但不允许脏读。该隔离级别可以通过“共享锁”和“排他锁”实现。 REPEATABLE READ 保证在一个事务中的两个读操作之间,其他的事务不能修改当前事务读取的数据,即禁止不可重复读和读脏数据,但有时可能出现幻读。该级别事务获取数据前必须先获得共享锁同时获得的共享锁不立即释放一直保持共享锁至事务完成,所以此隔离级别查询完并提交事务很重要。 * */37 事务隔离级(3) SNAPSHOT 处于这一级别的事务只能识别在其开始之前提交的数据修改。在当前事务中执行的语句将看不到在当前事务开始以后由其他事务所做的数据修改,满足读提交,可重复读,不幻读。其效果就好像事务中的语句获得了已提交数据的快照,因为该数据在事务开始时就存在。必须在每个数据库中将 ALLOW_SNAPSHOT_ISOLATION数据库选项设置为ON,才能开始一个使用SNAPSHOT隔离级别的事务。 设置的方法如下: ALTER DATABASE 数据库名 SET ALLOW_SNAPSH0T_ISOLATION ON * */37 事务隔离级(3) SERIALIZABLE 该级别是隔离事务的最高级别,它提供严格的事务隔离。它要求事务序列化执行,即事务只能一个接着一个地执行,不能并发执行。 隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于大多数应用程序,可以优先考虑把数据库的隔离级别设为READ COMMITTED,它能够避免脏取,而且具有较好的 并发性能。 * */37 * */37 本次课小结 主要内容 事务的概述及处理 并发数据操作引起的问题 并发操作的封锁机制 事务隔离级 作业 EX9 1,4,6 * * 第10章 数据库安全管理 * */69 数据库安全管理(1) SQL Server的安全模型分为三层结构,分别为: 服务器安全管理 数据库安全管理 数据库对象的访问权限管理 用户访问数据库时需要经历的三个阶段及相应的安全认证过程: 第一阶段:用户首先登录到SQL Server实例。在登录时,系统要对其进行身份验证,被认为是合法时才能登录到SQL Server实例; * */69 Windows用户 服务器级“登录账户”或“登录名” 三层安全性 数据库安全管理(2) 第二阶段:用户在每个要访问的数据库里必须获得一个用户账号。SQL Server实例将SQL Server登录映射到数据库用户账号上,在这个数据库的用户账号上定义数据库的管理和数据对象的访问安全策略。 第三个阶段:用户访问数据库。用户访问数据对象时,系统要检查用户是否具有访问数据库对象、执行动作的
显示全部