数据库的硬盘空间如何使用
admin
2023-05-25 17:41:09
0

SQL Server占用的存储空间,包含数据库file占用的存储空间,数据库对象占用的存储空间。

一,数据库file占用的存储空间

1,使用 sys.master_files 查看数据库中各个file占用的存储空间

select db.name as database_name,
    db.is_auto_shrink_on,
    db.recovery_model_desc,
    mf.file_id,
    mf.type_desc,
    mf.name as logic_file_name,
    mf.size*8/1024/1024 as size_gb,
    mf.physical_name,    --mf.max_size,    mf.growth,
    mf.is_percent_growth,
    mf.state_descfrom sys.databases db 
inner join sys.master_files mf 
    on db.database_id=mf.database_idwhere mf.size*8/1024/1024>1  -- GBorder by size_gb desc

2,使用sp_spaceused 查看当前DB的空间使用量

use DB_Studygoexec sys.sp_spaceused

数据库的硬盘空间如何使用

database_sizedatabase_size includes both data and log files.

数据文件的空间利用信息:

  • unallocated space :Space in the database that has not been reserved for database objects.

  • reserved:Total amount of space allocated by objects in the database.

  • data:Total amount of space used by data.

  • index_sizeTotal amount of space used by indexes.

  • unused Total amount of space reserved for objects in the database, but not yet used.

  • database_size will always be larger than the sum of reserved + unallocated space because it includes the size of log files, but reserved and unallocated_space consider only data pages.

3, 按照extent统计data file的disk space usage

从系统page:GAM 和 SGAM 上读取Extent allocate 信息,计算data file有多少extent allocated 或 unallocated。

计算公式:1Extent=8Pages,1Page=8KB

dbcc showfilestats

数据库的硬盘空间如何使用

4, 统计SQL Server 实例中所有数据库的日志文件的disk space usage

dbcc sqlperf(logspace) 返回的结果总是准确的,语句的执行不会对sql server增加负担

dbcc sqlperf(logspace)

数据库的硬盘空间如何使用

二,查看数据库中,各个table 或index 所占用的disk space

1,查看数据库所有table 或index 所占用的disk space

数据库的硬盘空间如何使用

select 
    t.name,    sum(case when ps.index_id<2 then ps.row_count else 0 end) as row_count,    sum(ps.reserved_page_count)*8/1024/1024 as reserved_gb,    sum(ps.used_page_count)*8/1024 as used_mb,    sum( case when ps.index_id<2
                    then ps.in_row_data_page_count+ps.lob_used_page_count+ps.row_overflow_used_page_count              else 0 end
        )*8/1024 as data_used_mb,    sum(case when ps.index_id>=2 
                then ps.in_row_data_page_count+ps.lob_used_page_count+ps.row_overflow_used_page_count             else 0 end
        )*8/1024 as index_used_mbfrom sys.dm_db_partition_stats psinner join sys.tables t    on ps.object_id=t.object_idgroup by t.object_id, t.nameorder by reserved_gb desc

数据库的硬盘空间如何使用

2,在当前DB中,查看某一个Table object 空间使用信息

exec sp_spaceused 'dbo.dt_study'

数据库的硬盘空间如何使用

rows:Number of rows existing in the table.

reserved:Total amount of reserved space for objname.

data:Total amount of space used by data in objname.

index_size:Total amount of space used by indexes in objname.

unused:Total amount of space reserved for objname but not yet used.

三,使用Standard Reports 查看disk space usage

数据库的硬盘空间如何使用

四,查看服务器各个逻辑盘符剩余的disk space

Exec master.sys.xp_fixeddrives

数据库的硬盘空间如何使用

Appendix:

查看数据库中table,indexed等对象的disk空间使用量,但是返回的结果并不十分精确。

sp_spaceused Displays the number of rows, disk space reserved, and disk space used by a table, indexed view, or Service Broker queue in the current database, or displays the disk space reserved and used by the whole database.

Syntax

sp_spaceused [[ @objname = ] 'objname' ] 
        [,[ @updateusage = ] 'updateusage' ]

相关内容

热门资讯

凤凰探访俄军前线后勤厨房:配备... 据凤凰卫视报道,凤凰记者卢宇光8月4日走进顿巴斯前线俄军某指挥所后勤保障排的厨房,早晨7点,基地军官...
抄袭者请注意:沉睡25年的条例... 【文/芯科状元】七月末上海一个闷热的傍晚,浦东张江一家射频前端公司的产品总监老陈把电脑合上,又打开。...
时隔两年,美驻日大使再次缺席 据日本共同社8月4日报道,美国驻日本大使馆当地时间周二宣布,大使乔治·格拉斯将缺席6日举行的广岛市和...
伊朗、阿曼霍尔木兹海峡重开协议... 伊朗和美国官员近日均透露,伊朗与阿曼正接近达成一项协议,以恢复霍尔木兹海峡的船舶通行。与此同时,一艘...
脱下长衫3年后,孔乙己的皮质醇... 作者|谢明宏 编辑|李春晖有网友去查皮质醇,被医生告知“小红书看多了”。2026年的赛博确诊全面升级...
布局亚洲!泽连斯基提出外交新方... 据凤凰卫视援引乌克兰国家通讯社报道,乌克兰总统泽连斯基近日在一次会议上提出外交新方向,将加强与亚洲国...
凯美瑞空调传感器故障 凯美瑞的空调传感器是一个非常重要的元件,它负责控制车内的温度,确保车内空气的清新和舒适。然而,由于使...
电脑的护眼模式在哪里设置 如何... 1、电脑桌面右击,选择个性化 2、选择窗口颜色 3、挑选绿色的颜色,绿色比较护眼 4、点...
大逆转!全球拼命建核电站,什么... 文|凯风AI的尽头是算力,算力的尽头是电力。01全球,正在拼命建核电站。日前,国常会一次性核准浙江金...
电脑上书名号怎么打 怎样在电... 电脑上打书名号的步骤分为以下三步:   第一步:在电脑上建立一个文档或聊天窗口,打开此文档; ...