22,207
社区成员
发帖
与我相关
我的任务
分享
/*--以下数据仅表示在完全模式下,数据库会直观呈现数据和日志分别增长的情况,与数据量和事务有关
------------------------------------------------------------------------
-- Author : clArO
-- Date : 2010-09-06
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 6.0 <X86> (Build 6001: Service Pack 1)
------------------------------------------------------------------------
*/
USE master
go
create database mstest
go
--命令已成功完成。
create table mstest..newtable([key] varchar(5));
go
--命令已成功完成。
sp_helpdb mstest
--result1:
name db_size
mstest 2.81 MB
--result2:
size
2304 KB
576 KB
---插入10万数据
DECLARE @counter int
SET @counter=1
WHILE(@counter<=100000)
BEGIN
INSERT mstest..newtable values ('a')
SET @counter=@counter+1
END
--再查看数据库大小,注意此时数据文件肯定有变化
sp_helpdb mstest
--result1:
name db_size
mstest 3.81 MB
--result2:
size
3328 KB --已经显示容量增大
576 KB
---插入100万数据
DECLARE @counter int
SET @counter=1
WHILE(@counter<=1000000)
BEGIN
INSERT mstest..newtable values ('a')
SET @counter=@counter+1
END
select COUNT(1) from mstest..newtable
--2100000
sp_helpdb mstest
--result1:
name db_size
mstest 32.06 MB
--result2:
size
32000 KB
832 KB --日志增长
drop database mstest
--命令已成功完成。
/*--以下数据仅表示在完全模式下,数据库没有直观呈现数据和日志分别增长的情况,与数据量和事务有关
*/
USE master
go
create database mstest2
go
--命令已成功完成。
create table mstest2..newtable([key] varchar(5));
go
--命令已成功完成。
use mstest2
--命令已成功完成。
-->查看日志记录数
select COUNT(1) from fn_dblog (NULL,NULL)
--result1:
86
-->插入2行数据
insert into mstest2..newtable values ('a')
insert into mstest2..newtable values ('b')
(1 行受影响)
(1 行受影响)
-->再查看日志情况
select COUNT(1) from fn_dblog (NULL,NULL)
--result2:
110
--显示日志已增长。
/*为何日志增长了,但在DBCC LOGINFO或sp_helpdb中看不到呢?
1、没有数据论证,但肯定跟数据库的日志增长设置有关,比如设置增长比例或者最大值等。
2、事务导致日志增长不没有达到最小显示值。在数据文件中通常是按块比如8K进行存储。
*/
drop database mstest2
--命令已成功完成。