统计数据库大小的方法

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

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

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

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

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

 

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



 

  

目录
相关文章
|
2月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
110 1
|
2天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
9 0
|
11天前
|
存储 大数据 测试技术
矢量数据库的性能测试与评估方法
【4月更文挑战第30天】本文探讨了矢量数据库的性能测试与评估方法,强调其在大数据和AI时代的重要性。文中介绍了负载测试、压力测试、容量测试、功能测试和稳定性测试五大评估方法,以及实施步骤,包括确定测试目标、设计用例、准备环境、执行测试和分析结果。这些方法有助于确保数据库的稳定性和高效性,推动技术发展。
|
12天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
12天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
12天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
|
1月前
|
Java 数据库 数据安全/隐私保护
SpringBoot项目使用jasypt加解密的方法加密数据库密码
SpringBoot项目使用jasypt加解密的方法加密数据库密码
15 0
|
2月前
|
Oracle Java 关系型数据库
java实现遍历树形菜单方法——数据库表的创建
java实现遍历树形菜单方法——数据库表的创建
14 0
|
2月前
|
SQL 关系型数据库 数据库连接
描述一下在 Python 中使用数据库的常见方法。
【2月更文挑战第26天】【2月更文挑战第91篇】描述一下在 Python 中使用数据库的常见方法。