检査点处理 问题:系统何时将数据页写入磁盘呢? 日志页面是在 commit tran时写入磁盘的, 那么何时将数据页面写入磁盘呢?在处 理检查点时。 检査点的概念:是 sqlserver将数据页面 从内存拷贝到磁盘时的内部处理点。 检査点帮助确保恢复已提交事务而不会 花费额外的时间。当检查点出现时,将 写入一个日志项以指示所有修改了的页 面已写入磁盘。 16
16 检查点处理 • 问题:系统何时将数据页写入磁盘呢? • 日志页面是在commit tran时写入磁盘的, 那么何时将数据页面写入磁盘呢?在处 理检查点时。 • 检查点的概念:是sql server将数据页面 从内存拷贝到磁盘时的内部处理点。 • 检查点帮助确保恢复已提交事务而不会 花费额外的时间。当检查点出现时,将 写入一个日志项以指示所有修改了的页 面已写入磁盘
锁-锁的概念 锁(Lock)是在多用户环境下对资源访问的 种限制机制。当对一个数据源加锁后,此数据 源就有了一定的访问限制,我们就称对此数据 源进行了锁定。在 SQLServer中可以对以下的 对象进行锁定 数据行:数据页中的单行数据 ·索引行:索引页中的单行数据即索引的键值 页:页是 SQLServer存取数据的基本单位其大 小为8KB 盘区:一个盘区由8个连续的页组成 表 数据库 17
17 锁-锁的概念 • 锁(Lock) 是在多用户环境下对资源访问的一 种限制机制。当对一个数据源加锁后,此数据 源就有了一定的访问限制,我们就称对此数据 源进行了锁定。在SQL Server中可以对以下的 对象进行锁定: • 数据行:数据页中的单行数据 • 索引行:索引页中的单行数据即索引的键值 • 页:页是SQL Server 存取数据的基本单位其大 小为8KB • 盘区:一个盘区由8 个连续的页组成 • 表 • 数据库
锁的类别 在 SQLServer中,从数据库系统的角度 来看,锁分为以下三种类型: 独占锁 Exclusive lock:独占锁锁定的资源 只允许进行锁定操作的程序使用,其它任 何对它的操作均不会被接受。执行数据更 新命令,即Ⅰ NSERT、 UPDATE或 DELETE命令时 SQLServer会自动使用 独占锁。但当对象上有其它锁存在时,无 法对其加独占锁,独占锁一直到事务结束 才能被释放 18
18 锁的类别 • 在SQL Server 中, 从数据库系统的角度 来看,锁分为以下三种类型: • 独占锁Exclusive Lock:独占锁锁定的资源 只允许进行锁定操作的程序使用,其它任 何对它的操作均不会被接受。执行数据更 新命令,即INSERT、UPDATE 或 DELETE 命令时SQL Server 会自动使用 独占锁。但当对象上有其它锁存在时,无 法对其加独占锁,独占锁一直到事务结束 才能被释放
·共享锁 Shared lock:共享锁锁定的资源可以 被其它用户读取,但其它用户不能修改它。在 SELECT命令执行时, SQL Server通常会对 对象进行共享锁锁定,通常加共享锁的数据页 被读取完毕后,共享锁就会立即被释放 更新锁 Update lock:更新锁是为了防止死锁 而设立的。当 SQLServer准备更新数据时,它 首先对数据对象作更新锁锁定,这样数据将不 能被修改,但可以读取。等到 SQLServer确定 要进行更新数据操作时,它会自动将更新锁换 为独占锁。但当对象上有其它锁存在时,无法 对其作更新锁锁定
19 • 共享锁Shared Lock:共享锁锁定的资源可以 被其它用户读取,但其它用户不能修改它。在 SELECT 命令执行时,SQL Server 通常会对 对象进行共享锁锁定,通常加共享锁的数据页 被读取完毕后,共享锁就会立即被释放 • 更新锁Update Lock:更新锁是为了防止死锁 而设立的。当SQL Server 准备更新数据时,它 首先对数据对象作更新锁锁定,这样数据将不 能被修改,但可以读取。等到SQL Server 确定 要进行更新数据操作时,它会自动将更新锁换 为独占锁。但当对象上有其它锁存在时,无法 对其作更新锁锁定
查看锁 可以通过企业管理器或存储过程来查看锁 用 Enterprise Manager查看锁:在企业管理器中 选择目录树窗口中“管理”文件夹下“当前活动”中的 锁进程⑩节点,则可以査看当前锁定的进程。选择同 级的锁/对象节点下的相应字节点,则可以查看当前锁定 的对象。若右键单击任务板窗口中的对象,从快捷菜单 中选择属性选项,则会出现锁的进程细节对话框,在此 可以刷新或杀死锁的进程。 杀死进程还可以用如下 Transact-SQL命令来进行 KILL Spid spid是 System Process ID,即系统进程编号的缩写。 20
20 查看锁 • 可以通过企业管理器或存储过程来查看锁 • 用Enterprise Manager 查看锁:在企业管理器中 选择目录树窗口中“管理”文件夹下 “当前活动” 中的 锁 /进程 ID 节点,则可以查看当前锁定的进程。选择同 级的锁 /对象节点下的相应字节点,则可以查看当前锁定 的对象。若右键单击任务板窗口中的对象,从快捷菜单 中选择属性选项,则会出现锁的进程细节对话框,在此 可以刷新或杀死锁的进程。 • 杀死进程还可以用如下Transact-SQL 命令来进行 • KILL spid • spid 是System Process ID, 即系统进程编号的缩写