首页 > 代码库 > SQL Server 查看数据库空间分配情况的 2 种方法
SQL Server 查看数据库空间分配情况的 2 种方法
方法 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 种方法