SQL Server 查看数据库空间分配情况的 2 种方法

2023-04-20,,

方法 1、 sys.dm_db_file_space_usage。

方法 2、 sys.dm_db_session_space_usage。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

方法 1 、

sys_dm_db_file_space_usage 它度量方式是以页(page)为单位的,对每个数据库的不同文件都返回一行(不包涵 log 文件)

用它是时候先要 use 到指定的数据库才行。它不会返回当前实例中的所有数据库的信息,针对当前数据库。

total_page_count :总页面数

allocated_extent_page_count :文件的已分配区中的总页数 。

unallocated_extent_page_count:文件的未分配区中的总页数。

user_object_reserved_page_count:从统一区为数据库中的用户对象分配的总页数。 计数中包括已分配区中未使用的页。

internal_object_reserved_page_count:从统一区为文件中的内部对象分配的总页数。

mixed_extent_page_count :文件的已分配混合区中的已分配和未分配总页数。

例子、

select
          DB_NAME(usage.database_id) as DBName,
          sum(usage.unallocated_extent_page_count) as UnallocatedPage,
          sum(usage.allocated_extent_page_count) as AllocatedPage,
          sum(usage.internal_object_reserved_page_count)as InternalPage,
          sum(usage.user_object_reserved_page_count) as UserObjectPage,
          sum(usage.mixed_extent_page_count) as MixedPage from sys.dm_db_file_space_usage as usage
          group by usage.database_id
          go

方法 2、

sys.dm_db_session_space_usage 返回每个会话为数据库分配和释放的页数、它只是针对tempdb空间使用情况,别的数据库看不了

user_objects_alloc_page_count:由该会话为用户对象保留或分配的页数。

user_objects_dealloc_page_count:由该会话释放并不再为用户对象保留的页数。 

internal_objects_alloc_page_count:由该会话为内部对象保留或分配的页数。

internal_objects_dealloc_page_count:由该会话释放并不再为内部对象保留的页数。

例子、

select
           DB_NAME(usage.database_id) as DBName,
           usage.session_id,
           usage.user_objects_alloc_page_count,
           usage.user_objects_dealloc_page_count,
           usage.internal_objects_alloc_page_count,
           usage.internal_objects_dealloc_page_count
           from sys.dm_db_session_space_usage usage;
           go

小结:

sys.dm_db_session_usage 只针对 tempdb。

SQL Server 查看数据库空间分配情况的 2 种方法的相关教程结束。

《SQL Server 查看数据库空间分配情况的 2 种方法.doc》

下载本文的Word格式文档,以方便收藏与打印。