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

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

方法 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

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

小结:

       sys.dm_db_session_usage 只针对 tempdb。

 

 

 

             

 

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

上一篇:Socket Error # 10013 Access denied


下一篇:MySQL数据库错误server_errno=2013的解决