zoukankan      html  css  js  c++  java
  • MS SQL,数据库增长时众多表中谁是你关注的目标

    数据库就像是个小孩子,不知不觉的,可能就有了不能承受的压力。刚开始时,那快乐的时光如同刚入学时,只有快乐。但是,慢慢的、慢慢的,作业多了,关系复杂了。。。。。

    系统上线三个月后,数据库的大小情况从一开始只是10M,现在已224G了,我觉得有必要写点什么。

    我们有一个数据库,主要是用于MES的数据收集,也就是从自动化设备上收集数据。具体的逻辑我就不多说,回到正题,你建立了应用,就算你不是DBA,你也应该关心一下你用的数据库情况,一开始你系统上线时,可能你的数据库只是一张白纸,可能只有几个M的大小,你可以用sp_spaceused看看,系统也很顺,但是,看一下以下我用这个SP的结果:

    image

    以上是系统上线三个月后,数据库的大小情况,一开始只是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亿六千万记录:

    image

    实际上,这个还应该建立一个JOB来定时执行,保存下结果用于分析。接下来要做什么还是要做什么,目的是不要等数据库罢工!

  • 相关阅读:
    shell 编写简单的整数计算器
    信号控制
    MySQL-索引及优化整理
    Java面试-Java容器有哪些
    C语言宏定义
    值类型与引用类型的区别
    C++虚函数简介
    DNS-域名解析
    扇区,簇,块区分
    Java合并两个数组为一个新数组
  • 原文地址:https://www.cnblogs.com/yiyumeng/p/2680214.html
Copyright © 2011-2022 走看看