Sybase SQL Server日志问题普及

Sybase SQL Server 的每一个数据库,无论是系统数据库(master,model, sybsystemprocs, tempdb),还是用户数据库,都有自己的transaction log,每个库都有 syslogs表。Log记录用户对数据库修改的操作,所以如果不用命令清除, log会一直增长直至 占满空间。清除log可用dump transaction 命令;或者开放数据库选项trunc log on chkpt, 数据库会每隔一段间隔自动清除log。管理好数据库log是用户操作数据库必须考虑的一面。

下面就几个方面谈谈log及其管理:

一、SQL Server 如何记录及读取日志信息

我们知道,SQL Server是先记log的机制。Server Cache Memory中日志页总是先写于数据页:

Log pages 在commit ,checkpoint,space needed 时写入硬盘。

Data pages 在checkpoint,space needed 时写入硬盘。

系统在recovery 时读每个database 的syslogs 表的信息,回退未完成的事务 (transaction)(数据改变到事务前状态);完成已提交的事务(transaction)(数据改变为事 务提交后的状态)。在Log中记下checkpoint点。这样保证整个数据库系统的一致性和完整性。

二、Transaction logs 和checkpoint 进程

checkpoint 命令的功能是强制所有“脏”页(自上次写入数据库设备后被更新过的页)写 入数据库设备。自动的checkpoint 间隔是由SQL Server 根据系统活动和系统表 sysconfigures中的恢复间隔(recovery interval)值计算出的。通过指定系统恢复所需的时 间总量,恢复间隔决定了checkpoint 的频率。

如果数据库开放trunc log on chkpt选项,则SQL Server在数据库系统执行checkpoint时 自动清除log。但用户自己写入执行的checkpoint命令并不清除log,即使trunc log on chkpt 选项开放。只有在trunc log on chkpt选项开放时,SQL Server自动执行checkpoint动作,才 能自动清除log 。这个自动的checkpoint动作在SQL Server中的进程叫做checkpoint进程。当 trunc log on chkpt选项开放时,checkpoint进程每隔0秒左右清除log,而不考虑recovery interval设置时间的间隔。

三、Transaction log 的大小

没有一个十分严格的和确切的方法来确定一个数据库的log应该给多大空间。对一个新建的 数据库来说,log大小为整个数据库大小的20%左右。因为log记录对数据库的修改,如果修改 的动作频繁,则log的增长十分迅速。所以说log空间大小依赖于用户是如何使用数据库的。

例如:

◆update,insert和delete 的频率

◆每个transaction 中数据的修改量

◆SQL Server系统参数recovery interval 值

◆log是否存到介质上用于数据库恢复

还有其它因素影响log大小,我们应该根据操作估计log大小,并间隔一个周期就对log进行 备份和清除。

时间: 2024-10-22 20:43:08

Sybase SQL Server日志问题普及的相关文章

Sybase SQL Server体系结构介绍

Sybase SQL Server是一个多库结构的RDBMS,体系结构大致如下: 1.数据库 服务器自身所使用的数据库,也可以说是管理服务器和用户数据库的数据库.Sybase在安装时,自动创建了四个系统数据库: master.model.tempdb.sybsystemprocs 1) master数据库 它是管理和控制用户数据库以及维护服务器正常运行的核心数据库,它保存了大量的系统信息,如服务器配置.用户.设备等. 在master数据库中不允许普通用户在其中创建数据库对象,否则会使得maste

Sybase SQL Server的主要内容

Sybase SQL Server是一个多库结构的RDBMS,体系结构大致如下: 1.数据库 服务器自身所使用的数据库,也可以说是管理服务器和用户数据库的数据库.Sybase在安装时,自动创建了四个系统数据库: master.model.tempdb.sybsystemprocs (1) master数据库 它是管理和控制用户数据库以及维护服务器正常运行的核心数据库,它保存了大量的系统信息,如服务器配置.用户.设备等. 在master数据库中不允许普通用户在其中创建数据库对象,否则会使得mast

SQL SERVER日志清除的两种方法

server SQL SERVER日志清除的两种方法方法一 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1.设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项--&g

如何清理SQL Server日志释放文件空间

[问题场景]有一个数据库,它的名字叫CNBlogsText,日志文件霸占了23G硬盘空间,而事务日志已经截断(Truncate),实际日志内容很小,1G都不到.23G的空间只放1G不到的日志,就如同用一栋别墅养一只宠物,太奢侈了!秉承中华民族勤俭节约的美德,这种奢侈是绝对不允许的,必须要释放日志文件霸占的多余空间. 但是,无论怎么收缩(Shrink)日志文件,空间就是不能释放,总是出现错误: Cannot shrink log file 2 (CNBlogsText_log) because o

SQL SERVER日志链简介

先说清楚这些概念吧 SQLSERVER只有日志链,备份记录(有些人也叫备份链)本人觉得叫备份记录更合适 下面三个东西说的都是同一样东西 备份集=备份记录=备份链 备份集:比如备份的集合,比如有对一个数据库的完备1.差备.日备1.完备2.日备2,这些数据库的备份的集合就 是备份集 不过我更喜欢叫备份记录 备份记录实际上指 SELECT * FROM [msdb].[dbo].[backupset] 截断日志跟日志链断裂是否是同一样东西? 截断日志跟日志链断裂不是同一样东西 什么是日志链 其实大家可

解决SQL Server日志文件损坏严重的问题

如果服务器出现Raid故障,在数据基本恢复成功后,发现其中的一个Sql Server日志文件(扩展名LDF)损坏严重,我们可以通过下面的操作使数据全部恢复. 首先新建一个同名的数据库,然后再停掉sql server服务,用原数据库的数据文件覆盖掉这个新建的数据库文件,重启sql server服务.打开企业管理器,该数据库显示"置疑",在查询分析器中执行下面的语句: USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH

使用SQL Server日志转移实现数据库的高可用性

[导读]本文主要针对SQL Server 2000介绍如何使用SQL Server日志转移实现数据库的高可用性. 集群是一种实现高可用性的有效解决方案,有时它会适得其反.而且,它还非常昂贵.因此,数据库管理员可使用日志转移代替集群来提供较高的可用性. 日志转移是这样一种处理过程,它能将某一数据库中的事务日志文件依次转存到备份的数据库中,进而为这一数据库创建一个"近乎"热备份.SQL Server 2000的数据库引擎中设置了日志转移功能,并在其中进行处理.所以它会自动完成复原到备份服务

SQL Server日志恢复还原数据库几种方法

SQL Server日志恢复 通过日志还原,最重要的是: 1.必须有一个完整的备份,且这个备份必须是在修改.删除数据之前做的. 2.在更新.删除数据之后,做日志备份,该log备份将用于还原之前的数据  下面步骤的目的:还原被删除的表 在SQL Server Management可视化操作步骤: 1.创建数据库并完整备份:  代码如下 复制代码 --创建测试数据库 CREATE DATABASE Db GO --对数据库进行备份 BACKUP DATABASE Db TO DISK='c:/db.

SQL Server日志文件庞大收缩方法(实测好用)

原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK='NUL' --收缩 DBCC SHRINKFILE('CloudMonitor_log')   以后就可以采用常规的定期备份日志(比如一小时一次)来防止日志文件无限增长. SQL Server日志文件庞大收缩并非易事, 文章中提到: 由于首日志.尾日志和空间重复利用的原因,当备份日志后产生了日志