您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > CSA10 事务管理
10-110事务管理SYBASE数据库系统管理指南YBASES10-2本章要点•恢复方法•事务和事务日志•检查点(checkpoint)•SQLServer如何进行自动恢复•用户日志缓存•如何改变日志I/O大小•如何查看一个应用是否存在最老的事务10-310.1恢复方法•10.1.1两种类型的故障•10.1.2恢复方法•10.1.3自动恢复•10.14非自动恢复10-410.2事务和事务日志•10.2.1什么是事务(Transaction)在SQLServer中事务是结合在一起的逻辑工作单位内的一组数据库操作,它要么全部执行成功,要么全部放弃。事务中的SQL操作语句一般要包括至少一条数据更新语句。缺省的情况下每条更新数据的SQL语句都被认为是一个事务。10-5begintransactioninserttable1...inserttable2...inserttable3...commit事务如果在执行事务的过程中,系统或SQLServer出故障,库中数据将没有永久性改变。在此点后如果系统或SQLServer出故障,所有的改变将是永久性的图10-1事务10-610.2.2什么是事务日志(TransactionLog)用户数据库所做的每一次改变会自动地记录在syslogs表中,这张表就是事务日志,每个数据库都有自己的事务日志。Sybase的事务日志是物理的,不是逻辑的,且不能关闭事务日志。database1database2database3database1..syslogsdatabase2..syslogsdatabase3..syslogs10-710.3检查点(checkpoint)•10.3.1自动检查点•10.3.2手工检查点•10.3.3执行检查点完成以下工作停止新的事务将脏的日志页和数据页写入磁盘将“checkpoint”记入日志允许当前的事务继续进行10-8•10.3.4如何设置恢复间隔sp_configurerecoveryintervalinminutes10.3.5什么是先写日志(write-aheadlog)datapageslogpagesServerCacheMemorylogdevicedatabasedevice10-91什么时候将脏日志页写入磁盘•事务提交(commit)•需要缓存空间•发生checkpoint2什么时候将脏数据页写入磁盘•需要缓存空间•发生checkpoint10-1010.4如何进行自动恢复begintraninsert...committranbegintraninsert...col1col2col1col2insertedrowsinsertedrows(前滚)(回滚)图10-4自动恢复10-11回滚和前滚•前滚(Rollforward):根据日志,如果事务已提交但数据未写入数据库,就再次执行这些事务.•回滚(Rollback):对未提交的事务执行反向操作10-1210.5小结•自动恢复-在SQLServer启动时自动进行-保证所有提交的事务都写入数据库,未提交的事务被删除•事务日志-每个数据库中都有一个事务日志syslogs表-先写日志页再写数据页10-1310.6用户日志缓存•10.6.1SQLServer11.0之前的日志管理10-14•10.6.2SQLServer11.0之后的日志管理10-15•10.6.3什么时候清用户日志缓存p168•10.6.4相关的配置参数1userlogcachesizesp_configure‘userlogcachesize’2userlogcachespinlockratiosp_configure‘userlogcachespinlockratio’10-1610.7如何改变日志I/O大小•10.7.1可变的日志缓存尺寸•10.7.2如何配置日志I/O块的大小改变日志I/O大小和将syslogs捆绑到缓冲池的步骤1为日志建立命名缓存2将数据库设置成单用户状态3打开数据库4在库中执行checkpoint5将syslogs表捆绑到缓存中6使用sp_poolconfig在缓存中建立缓冲池7设置新的日志I/O大小10-1710.8syslogshold表syslogshold系统表中记录者最老的仍活动的事务。此表在查询时动态建立。它为每个数据库提供了一个当前状况的快照。可以查询syslogshold系表以确定每一数据库中最老的活动的事务及其打开的时间。syslogshold存在于master数据库,表中的每一行表示:-数据库中最老的活动事务-数据库日志的ReplicationServer截断点.10-18•10.8.1如何查看应用中是否存在最老的事务1selectL.name,P.spid,2P.program_name,H.starttime3frommaster..sysprocessesP,4master..syslogsholdH,master..sysloginsL5whereP.spid=H.spid6andH.spid!=07andP.suid=L.suid8go10-1910.8.2如何查找一个阻塞日志截断的进程如何查找一个阻塞日志截断事务的名称和进程号1selectH.spid2frommaster..syslogsholdH,sysindexesI3whereH.dbid=db_id()4andI.id=85andH.page=I.firstandH.spid!=06go10-20小结•事务日志•Server的自动恢复•日志缓存•发现填满日志的事务
本文标题:CSA10 事务管理
链接地址:https://www.777doc.com/doc-3271218 .html