数据库就像是个小孩子,不知不觉的,可能就有了不能承受的压力。刚开始时,那快乐的时光如同刚入学时,只有快乐。但是,慢慢的、慢慢的,作业多了,关系复杂了。。。。。
系统上线三个月后,数据库的大小情况从一开始只是10M,现在已224G了,我觉得有必要写点什么。
我们有一个数据库,主要是用于MES的数据收集,也就是从自动化设备上收集数据。具体的逻辑我就不多说,回到正题,你建立了应用,就算你不是DBA,你也应该关心一下你用的数据库情况,一开始你系统上线时,可能你的数据库只是一张白纸,可能只有几个M的大小,你可以用sp_spaceused看看,系统也很顺,但是,看一下以下我用这个SP的结果:
以上是系统上线三个月后,数据库的大小情况,一开始只是10M,现在已224G了。
服务器的空间也是有限的,也是会有可能用完的,对于没有控制的使用要特别小心。当系统上线后,最需要关注的就是数据库了。你要知道数据的增长情况,可以使用的空间情况!什么时候需要增加索引以使系统运行更快,什么时候你应该对数据进行归档等等。
我们再说回sp_spaceused这个SP,我除了用它看数据库的数据情况外,还用它来看整个库的所有表各有多少记录、点用多大的数据空间、索引点用空间等。以下的T-SQL就可以实现看一个库所有表的记录情况!
declare @tablename varchar(250);
declare @tempTable table (nameinfo varchar(250)
,rowsinfo int
,reserved varchar(50)
,datainfo varchar(50)
,index_size varchar(50)
,unused varchar(50)
);
declare info_cursor cursor for
select [name] as Table_Name
from sys.objects where type='U' order by [name]
open info_cursor
fetch next from info_cursor
into @tablename
while @@fetch_status = 0
begin
insert into @tempTable(nameinfo,rowsinfo,reserved,datainfo,index_size,unused)
exec sp_spaceused @tablename
fetch next from info_cursor
into @tablename
end
close info_cursor
deallocate info_cursor
select * from @tempTable order by rowsinfo desc
go
执行代码,发现我的122个数据表,1千万以上记录的已有7个,最大的已有1亿六千万记录:
实际上,这个还应该建立一个JOB来定时执行,保存下结果用于分析。接下来要做什么还是要做什么,目的是不要等数据库罢工!