数据库在日积月累的 *** 作过程中,不但自身体积会慢慢增长,其日志的容量大小同样也随着数据库实体文件的增长而增长,且会占用很大的空间MSSQL数据库的大小包含数据(Data)和事务日志(TransactionLog)两个部分。 数据部分存储的是用户数据库中的数据,包含用户的数据表、视图、存储过程等等内容。数据部分一般存储与数据库文件组中的mdb文件中。一般来说,在正常使用的情况下,这个部分的大小不会经常性地发生很大的变化,除非是用于存储论坛之类快速变化的数据内容。一般而言,这个部分很少会需要缩小。 事务日志存储的是用户数据库 *** 作的事务记录,主要是用于在数据库服务器发生故障(比如电源故障之后),恢复数据库中的数据完整性而用的。这个部分一般存储于数据库文件组中的ldf文件中。这个部分的大小经常会发生剧烈的变化。 在某些情况下,由于用户的查询语句(SQL语句)书写的问题,会造成数据库文件大小的急剧膨胀,尤其是日志文件会变得非常大。这个时候需要对数据库加以缩小。缩小的 *** 作分为两个步骤: 步骤一 截断数据库中的日志内容
,可以使用下面的命令来更改该参数的值:
db2 -v update database cfg for DB_NAME using LOGBUFSZ 256 db2 -v terminate
2 调优步骤
通过查看下面代码中所示各行,使用数据库快照来确定 LOGBUFSZ参数的值是否为最佳值:
Log pages read = 0 Log pages written = 12644
对于OLTP,一开始以至少256页为佳;对于OLAP,则以 128 页为佳。如果常常看到"Log pages read"大于0,那么可能需要增加这个值。如果发生了回滚,也可能要读取日志页。一般而言,"log pages read"和"log pages written"之比应当尽可能小。理想情况下,"log pages read"的值应为0,而"log pages written"的值应很大。当 log pages read 太多时,意味着需要一个较大的LOGBUFSZ。
- 以下是建立一个数据库命令可以更改的数据库文件的位置。
(
名称='
创建数据库TEST1
test1_data
文件名='C:\ test1mdf“ - 银行可以更改数据库文件的位置。
大小为5MB,
FILEGROWTH = 10%)
日志(
名称='test1_log“的,
文件名='C :\ test1ldf“ - 银行可以改变数据库日志文件的位置。
大小= 2MB的
MAXSIZE = 5MB,
FILEGROWTH = 1MB
)
下面的代码,就可以将日志文件缩小到自己想要的大小了把代码COPY到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可SETNOCOUNT_disibledevent=@LogicalFileNameDROPTABLEDummyTransSETNOCOUNTOFF呵呵,希望能有帮助,^_^
有2种方法:
1、首先你的数据库应该是full,也就是完整恢复模式,那么如果不备份日志,那么日志是不会自动收缩的,所以可以进行日志备份。
但是考虑到你的事务日志太大,可以只进行数据库的完整备份,然后系统会自动截断之前的日志,然后日志可以重用。
最常用日志清除方法1、打开查询分析器,输入命令 BACKUP LOG database_name WITH NO_LOG 2、打开企业管理器 ,选中数据库, 选择 所有任务>收缩数据库3、选择 收缩文件>文件4、选择数据库文件,设置收缩文件至?MB
下面有两个SQL语句可以达到在SQL
Server
2005/2008压缩指定数据库文件和日志的大小的效果:
1、DBCC
SHRINKDATABASE
(Transact-SQL)
收缩指定数据库中的数据文件和日志文件的大小。
语法
DBCC
SHRINKDATABASE
(
'database_name'
|
database_id
|
0
[
,target_percent
]
[
,
{
NOTRUNCATE
|
TRUNCATEONLY
}
]
)
[
WITH
NO_INFOMSGS
]
参数
'database_name'
|
database_id
|
0
要收缩的数据库的名称或
ID。如果指定
0,则使用当前数据库。
target_percent
数据库收缩后的数据库文件中所需的剩余可用空间百分比。
NOTRUNCATE
通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent
是可选参数。
文件末尾的可用空间不会返回给 *** 作系统,文件的物理大小也不会更改。因此,指定
NOTRUNCATE
时,数据库看起来未收缩。
NOTRUNCATE
只适用于数据文件。日志文件不受影响。
TRUNCATEONLY
将文件末尾的所有可用空间释放给 *** 作系统,但不在文件内部执行任何页移动。数据文件只收缩到最近分配的区。如果与
TRUNCATEONLY
一起指定,将忽略
target_percent。
TRUNCATEONLY
只适用于数据文件。日志文件不受影响。
下面有两个SQL语句可以达到在SQL Server 2005/2008压缩指定数据库文件和日志的大小的效果:
1、DBCC SHRINKDATABASE (Transact-SQL)
收缩指定数据库中的数据文件和日志文件的大小。
语法
DBCC SHRINKDATABASE
( 'database_name' | database_id | 0
[ ,target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
参数
'database_name' | database_id | 0 要收缩的数据库的名称或 ID。如果指定 0,则使用当前数据库。
target_percent 数据库收缩后的数据库文件中所需的剩余可用空间百分比。
NOTRUNCATE 通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent 是可选参数。 文件末尾的可用空间不会返回给 *** 作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,数据库看起来未收缩。 NOTRUNCATE 只适用于数据文件。日志文件不受影响。
TRUNCATEONLY 将文件末尾的所有可用空间释放给 *** 作系统,但不在文件内部执行任何页移动。数据文件只收缩到最近分配的区。如果与 TRUNCATEONLY 一起指定,将忽略 target_percent。 TRUNCATEONLY 只适用于数据文件。日志文件不受影响。
WITH NO_INFOMSGS 取消严重级别从 0 到 10 的所有信息性消息。
以上就是关于如何压缩MSSQL数据库日志的大小全部的内容,包括:如何压缩MSSQL数据库日志的大小、如何修改db2数据库日志缓冲区大小设置、如何重新更改SQL2008数据库日志的大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)