细说Sybase数据库日志

原创 2004年09月02日 20:10:00

        SYBASE公司是世界著名的数据库厂家,其关系数据库产品SYBASE SQL Server在 中国大中型企事业单位中拥有大量的用户。笔者在多年的使用过程中,总结出SYBASE数据库管理和维护的一些经验,现拿出来与大家分享。

我们知道,SYBASE SQL Server用事务(Transaction)来跟踪所有数据库的变化。事务是SQL Server的工作单元。一个事务包含一条或多条作为整体执行的T-SQL语句。每个数据库都有自己的事务日志(Transaction Log),即系统表(Syslogs)。事务日志自动记录每个用户发出的每个事务。日志对于数据库的数据安全性、完整性至关重要,我们进行数据库开发和维护必须熟知日志的相关知识。

一、SYBASE SQL Server 如何记录和读取日志信息

SYBASE SQL Server是先记Log的机制。每当用户执行将修改数据库的语句时,SQL Server就会自动地把变化写入日志。一条语句所产生的所有变化都被记录到日志后,它们就被写到数据页在缓冲区的拷贝里。该数据页保存在缓冲区中,直到别的数据页需要该内存时,该数据页才被写到磁盘上。若事务中的某条语句没能完成,SQL Server将回滚事务产生的所有变化。这样就保证了整个数据库系统的一致性和完整性。

 

二、日志设备

Log和数据库的Data一样,需要存放在数据库设备上,可以将Log和Data存放在同一设备上,也可以分开存放。一般来说,应该将一个数据库的Data和Log存放在不同的数据库设备上。这样做有如下好处:一是可以单独地备份Backup事务日志;二是防止数据库溢满;三是可以看到Log的空间使用情况。

所建Log设备的大小,没有十分精确的方法来确定。一般来说,对于新建的数据库,Log的大小应为数据库大小的30%左右。Log的大小还取决于数据库修改的频繁程度。如果数据库修改频繁,则Log的增长十分迅速。所以说Log空间大小依赖于用户是如何使用数据库的。此外,还有其它因素影响Log大小,我们应该根据实际操作情况估计Log大小,并间隔一段时间就对Log进行备份和清除。

三、日志的清除

随着数据库的使用,数据库的Log是不断增长的,必须在它占满空间之前将它们清除掉。清除Log有两种方法:

1.自动清除法

开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预,由SQL Server自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。

2.手动清除法

执行命令“dump transaction”来清除Log。以下两条命令都可以清除日志:

dump transaction  with truncate_only
dump transaction  with no_log

通常删除事务日志中不活跃的部分可使用“dump transaction with trancate_only”命令,这条命令写进事务日志时,还要做必要的并发性检查。SYBASE提供“dump transaction with no_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性,SQL Server会弹出一条警告信息。为了尽量确保数据库的一致性,你应将它作为“最后一招”。

以上两种方法只是清除日志,而不做日志备份,若想备份日志,应执行“dump transaction database_name to dumpdevice”命令。

四、管理庞大的事务

有些操作会大批量地修改数据,如大量数据的修改(Update)、删除一个表的所有数据(Delete)、大量数据的插入(Insert),这样会使Log增长速度很快,有溢满的危险。下面笔者给大家介绍一下如何拆分大事务,以避免日志的溢满。

例如执行“update tab_a set col_a=0”命令时,若表tab_a很大,则此Update动作在未完成之前就可能使Log溢满,引起1105错误(Log Full),而且执行这种大的事务所产生的独占锁(Exclusive Table Lock),会阻止其他用户在执行Update操作期间修改这个表,这就有可能引起死锁。为避免这些情况发生,我们可以把这个大的事务分成几个小的事务,并执行“dump transaction”动作。

上例中的情况就可以分成两个或多个小的事务: 

update tab_a set col_a=0 where col_b>x
go
dump transaction database_name with truncate_only
go
update tab_a set col_a=0  where col_b <=x
go
dump transaction database_name with truncate_only
go

这样,一个大的事务就被分成两个较小的事务。

按照上述方法可以根据需要任意拆分大的事务。若这个事务需要备份到介质上,则不用“with truncate_only”选项。若执行“dump transaction with truncate_only”命令,应该先执行“dump database”。以此类推,我们可以对表删除、表插入等大事务做相应的拆分。

韩顺平2011细说Servlet笔记1

韩顺平2011细说Servlet笔记1 2012-06-16 18:18 1278人阅读 评论(0) 收藏 举报 servlettomcat浏览器web服务stringweb u...
  • p656456564545
  • p656456564545
  • 2013年11月03日 10:54
  • 1931

《细说PHP—第三版》新书出台啦

中国好声音, 一个字:真TM好。 港囧, 一个字:太囧了,笑死宝宝了。 然而并没有什么卵用, 不如《跟兄弟连学PHP》, 爸爸去哪儿了, 他去兄弟连苦练编程绝学了。 比砖块还厚的书...
  • gcq1301958013
  • gcq1301958013
  • 2015年10月21日 14:03
  • 2085

细说sybase日志-

SYBASE公司是世界著名的数据库厂家,其关系数据库产品SYBASE SQL Server在中国大中型企事业单位中拥有大量的用户。笔者在多年的使用过程中,总结出SYBASE数据库管理和维护的一些经验,...
  • lileizhang
  • lileizhang
  • 2014年08月08日 14:41
  • 429

细说Sybase数据库日志

SYBASE公司是世界著名的数据库厂家,其关系数据库产品SYBASE SQL Server在 中国大中型企事业单位中拥有大量的用户。笔者在多年的使用过程中,总结出SYBASE数据库管理和维护的一些经验...
  • lichangzai
  • lichangzai
  • 2013年01月31日 10:17
  • 641

网络基本功(三):细说VLAN与Trunk

网络基本功(三):细说VLAN与Trunk   转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese      介绍   网络性能...
  • mxway
  • mxway
  • 2015年01月16日 21:23
  • 1359

韩顺平细说jsp购物车项目--用户登录及验证

购物车用户登录及验证
  • hoho_12
  • hoho_12
  • 2016年05月10日 21:16
  • 3412

细说ASP.NET Windows身份认证

Forms身份认证虽然使用广泛,不过,如果是在 Windows Active Directory 的环境中使用ASP.NET, 那么使用Windows身份认证也会比较方便。 方便性表现为:我们不用再设...
  • wawalike
  • wawalike
  • 2015年02月12日 17:57
  • 320

读完这几本Java书,离高手更近一步

首先说一下我个人的认识吧,我觉得高手应该是这样的: (1)精通Java基础知识与基础理论,熟悉JDK的发展史。 (2)熟悉JVM,熟悉内存调试 (3)深刻理解Java的线程与并发包,以及背后的内存实现...
  • memoryisking
  • memoryisking
  • 2014年06月01日 13:52
  • 1655

转载_网络基本功(五):细说路由(下)

介绍   静态路由是指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。动态路由是指路由器之间相互通信,传递路由信息,...
  • williamwanglei
  • williamwanglei
  • 2014年09月29日 11:29
  • 867

云计算面临的典型威胁

 为了云计算的健康发展和等级保护工作在新形势下顺利推进,就不能忽视对云计算面临的各类安全威胁的研究和分析,并制定和建立相应的等级保护政策、技术体系,应对即将到来的云浪潮。在云环境中,除了传统...
  • sdulibh
  • sdulibh
  • 2014年04月22日 13:01
  • 1263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:细说Sybase数据库日志
举报原因:
原因补充:

(最多只允许输入30个字)