sql server数据库
统计总条数
--统计某个库中所有的数据条数,参考地址:https://blog.csdn.net/ZLiang_092/article/details/126885075
SELECT SUM(B.ROWS) dataSize FROM SYSOBJECTS AS A INNER JOIN SYSINDEXES AS B ON A.ID = B.ID
WHERE ( A.TYPE = 'U' ) AND ( B.INDID IN ( 0, 1 ) )
统计数据库所占用的磁盘空间大小
--查看某一个数据库的文件大小,包括数据和日志
SELECT DB_NAME(database_id) AS DatabaseName,Name AS Logical_Name,Physical_Name, (size*8.0)/1024/1024 SizeGB FROM sys.master_files
WHERE DB_NAME(database_id) = '数据库名称'
网上有位大神总结的:
--一个总的sql
SELECT a.name [文件名称]
,cast(a.[size]*1.0/128 as decimal(12,1)) AS [文件设置大小(MB)]
,CAST( fileproperty(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [文件所占空间(MB)]
,CAST( (fileproperty(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0 AS DECIMAL(12,1)) AS [所占空间率%]
,CASE WHEN A.growth =0 THEN '文件大小固定,不会增长' ELSE '文件将自动增长' end [增长模式]
,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN '增量为固定大小'
WHEN A.growth > 0 AND is_percent_growth = 1 THEN '增量将用整数百分比表示'
ELSE '文件大小固定,不会增长' END AS [增量模式]
,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth*1.0/128as decimal(12,0)) AS VARCHAR)+'MB'
WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+'%'
ELSE '文件大小固定,不会增长' end AS [增长值(%或MB)]
,a.physical_name AS [文件所在目录]
,a.type_desc AS [文件类型]
FROM sys.database_files a
INNER JOIN sys.sysfiles AS s ON a.[file_id]=s.fileid
LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id]
其他说明
exec sp_spaceused
这个也可以计算数据库总占用的磁盘空间大小,但是没有上面的具体,可更具情况自己选择。此方法返回的字段说明也挂一个笔友的连接。
https://blog.csdn.net/CrackLibby/article/details/44753703
oracle数据库
SYS.DBA_DATA_FILES
select * from dba_data_files;
一个全面的sql
--一个大神的贡献https://www.cnblogs.com/yangsirc/p/10026914.html
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;
最后写文档需要把代码或者sql粘贴到word里面的网址
https://highlightcode.com/
http://codeinword.com/