博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计数据库大小的方法
阅读量:7080 次
发布时间:2019-06-28

本文共 1914 字,大约阅读时间需要 6 分钟。

原文:

    一台服务器上所有数据库(也可能是部分数据库)的大小是我们经常需要了解的,它不仅能让我们知道目前数据库使用磁盘的比例,

而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。

 这里介绍三种统计数据库大小的方法:

 方法一:使用 sp_spaceused

declare @dbname varchar(100) declare db_cur cursor for select name from sys.sysdatabases where dbid>4 and name<>'distribution' open db_cur fetch next from db_cur  into @dbname while @@FETCH_STATUS=0 begin print('use '+QUOTENAME(@dbname)) Print('go') Print('sp_spaceused') fetch next from db_cur  into @dbname end close db_cur deallocate db_cur

  说明:我们做了初步的数据筛选,去掉了系统数据库和分发数据库,此方法会生成以下脚本

use [ReportServer] go sp_spaceused use [ReportServerTempDB] go sp_spaceused use [DataCache] go sp_spaceused use [MessageCenter] go sp_spaceused use [ABS] go sp_spaceused use [dbcenter] go sp_spaceused use [MDW] go sp_spaceused

我们直接运行,会得到相关数据库大小的统计信息:

我们需要的数据是打钩的信息(带database_name),将这些数据拷贝出来,放到Excel中就能很方便的做统计了

从图中可以看到,数据库大小为:363MB;此方法比较麻烦,不过对2000和2000以下版本的数据库是比较好的方法(没有DMV);

方法二:sys.database_files 和sp_MSforeachdb相结合

--统计某个实例中部分数据库大小: use master go create table dbsize (dbname varchar(100),size int) --将数据库名和大小插入数据库表中 exec sp_MSforeachdb "insert into master.dbo.dbsize select '?' as dbname,sum(size) as size from ?.sys.database_files"

说明:我们利用sp_MSforeachdb循环数据库,再在每个数据库中查询sys.database_files 视图来统计数据文件的大小,得到的结果放入到一个表中,

然后再使用这个表来做统计;

select * from master.dbo.dbsize --计算筛选数据库总大小 select SUM(size)*8/1024 as dbsize from dbsize where dbname not in ('master','tempdb','model','msdb','distribution')

如上图所示,统计出来的数据库大小也是:363MB。

方法三:sys.sysaltfiles与sys.databases结合统计

--db file size select db.name,sf.name,sf.filename,sf.size from sys.sysaltfiles sf inner join sys.databases db on sf.dbid=db.database_id where db.database_id>4 and db.name <>'distribution' --dbsize select SUM(size)*8/1024 from sys.sysaltfiles sf inner join sys.databases db on sf.dbid=db.database_id where db.database_id>4 and db.name <>'distribution'

这种方法一次性搞定,统计出的数据库大小也是:363MB,比较方便。

 

    此文就介绍这三种方法,如果大家有更好的方法,欢迎讨论。

 

  

转载地址:http://hzjml.baihongyu.com/

你可能感兴趣的文章
Leetcode: Arranging Coins
查看>>
HttpUtil 【判断网络连接的封装类】
查看>>
Linux系统编程——进程间通信:信号中断处理
查看>>
安全管道工具SSF
查看>>
第十一章 非对称加密算法--DH
查看>>
详解 Tomcat 的连接数与线程池
查看>>
【转】TCP分段与IP分片
查看>>
iOS 多线程 NSOperation、NSOperationQueue
查看>>
delphi执行查询语句时的进度条怎么做
查看>>
CF 335A(Banana-贪心-priority_queue是大根堆)
查看>>
python的memcache使用如果对key设置了一个int型
查看>>
Leetcode: Longest Substring with At Most Two Distinct Characters
查看>>
173. Binary Search Tree Iterator
查看>>
《让LoadRunner走下神坛》
查看>>
[python基础知识]python内置函数map/reduce/filter
查看>>
基因家族收缩和扩张分析 & Selective loss pathway & 泛基因组
查看>>
HDU2089 ------不要62(数位dp)
查看>>
hdu4756 Install Air Conditioning(MST + 树形DP)
查看>>
MusicXML 3.0 (19) - 八度
查看>>
【android】动画效果研究(PopupWindow)【4】
查看>>