1. 前言
对于数据库管理员来说,管理数据库中的表格是一项基本技能。一个数据库中的数据表可以逻辑上或者实际上被分为不同的组别,同时每个表的大小也是非常重要的,因为这直接影响到服务器的性能,尤其在表过于庞大时就会对服务器性能造成很大的负担。在这篇文章中,我们将提供 MS SQL 服务器下查询 MSSQL 表大小的指南。
2. 如何查询单个 MSQL 数据表的大小
2.1 应用 SQL Server Management Studio
我们可以使用 SQL Server Management Studio(SSMS)来查看单个表的大小。请运行以下查询:
USE database_name
GO
EXEC sp_spaceused 'schema.tablename'
GO
在这里,我们要将“database_name”替换为我们正在查询数据库的名称,用“schema.tablename”替换为我们正在查看的表名称。这将返回表大小信息,如下图所示:
2.2 应用查询语句
我们还可以使用以下查询来获取表的大小:
USE database_name
GO
SELECT t.NAME AS TableName, p.rows AS RowCounts, SUM(a.total_pages) * 8 AS TotalSpaceKB, CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB, SUM(a.used_pages) * 8 AS UsedSpaceKB, CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB, CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM sys.tables t
INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
WHERE t.NAME NOT LIKE 'dt%'
AND i.OBJECT_ID > 255
GROUP BY t.NAME, p.Rows
ORDER BY t.Name
GO
其中,“database_name”也需要替换为正要查询的数据库的名称。这应返回列出 database_name 中每个表的名称、行数、总大小、已用大小和未用大小信息,如下图所示:
3. 如何查询整个数据库的大小
3.1 使用 SQL Server Management Studio
我们可以使用 SQL Server Management Studio 的“属性”窗口来查看整个数据库的大小。右键单击数据库,选择“属性”,然后转到“文件”选项卡。
3.2 使用查询语句
我们可以使用以下查询来确定整个数据库的大小:
USE database_name
GO
EXEC sp_spaceused
GO
其中,“database_name”也应替换为正在查询的数据库的名称。这将返回数据库中每个对象的大小统计信息,以及整个数据库的大小和未使用的空间,如下图所示:
4. 总结
查看 MSSQL 数据表大小是了解您的数据库的重要组成部分。在本文中,我们提供了两个方法来查看单个 MSQL 表大小和整个数据库的大小。我们希望这些指南可以帮助您更好地管理 MSSQL 数据库。