统计数据库大小的方法

简介: 原文:统计数据库大小的方法    一台服务器上所有数据库(也可能是部分数据库)的大小是我们经常需要了解的,它不仅能让我们知道目前数据库使用磁盘的比例, 而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。
原文: 统计数据库大小的方法

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

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

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

 方法一:使用 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,比较方便。

 

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



 

  

目录
相关文章
|
24天前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
23天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
31 7
|
1月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
65 11
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
2月前
|
消息中间件 关系型数据库 数据库
Python实时监测数据库表数据变化的方法
在实现时,需要考虑到应用的实时性需求、数据库性能影响以及网络延迟等因素,选择最适合的方法。每种方法都有其适用场景和限制,理解这些方法的原理和应用,将帮助开发者在实际项目中做出最合适的技术选择。
128 17
|
1月前
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
47 0
|
2月前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
35 4
|
2月前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
1月前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析
|
1月前
|
Java API 数据库
Data jpa 增删改查的方法分别有哪些
Data jpa 增删改查的方法分别有哪些