当前位置:Gxlcms > 数据库问题 > 数据库日常维护-CheckList_03有关数据库数据文件大小检查

数据库日常维护-CheckList_03有关数据库数据文件大小检查

时间:2021-07-01 10:21:17 帮助过:2人阅读

b.server_name, Round(SUM(convert(float,b.backup_size) /1024.0/1024.0/1024.0),2) AS ‘backup_size_GB‘, 

Round(SUM(convert(float,b.compressed_backup_size)/1024.0/1024.0/1024.0),2) AS ‘compressed_backup_size_GB‘ FROM msdb..backupset b 

where  b.database_name not in (‘model‘,‘master‘,‘msdb‘,‘‘)

--and b.type=‘D‘

AND backup_start_date>getdate()-1 

GROUP BY b.server_name

3.检查表空间大小

SELECT OBJECT_NAME(id) tablename ,
CASE WHEN reserved * 8 > 1024 THEN RTRIM(8 * reserved / 1024) + ‘MB‘
ELSE RTRIM(reserved * 8) + ‘KB‘
END DataReserve ,
CASE WHEN dpages * 8 > 1024 THEN RTRIM(8 * dpages / 1024) + ‘MB‘
ELSE RTRIM(dpages * 8) + ‘KB‘
END Used ,
CASE WHEN 8 * ( reserved - dpages ) > 1024
THEN RTRIM(8 * ( reserved - dpages ) / 1024) + ‘MB‘
ELSE RTRIM(8 * ( reserved - dpages )) + ‘KB‘
END unused ,
CASE WHEN ( 8 * dpages / 1024 - rows / 1024 * minlen / 1024 ) > 1024
THEN RTRIM(( 8 * dpages / 1024 - rows / 1024 * minlen / 1024 )
/ 1024) + ‘MB‘
ELSE RTRIM(( 8 * dpages / 1024 - rows / 1024 * minlen / 1024 ))
+ ‘KB‘
END FREE ,
rows AS Rows_Count
FROM sys.sysindexes
WHERE indid = 1
AND status = 2066 -- status=‘18‘
ORDER BY reserved DESC

 

4.检查表索引大小

--特别提醒:此查询较慢,如果是生产环境请选择非业务时间执行


IF OBJECT_ID(‘tempdb..#Indexdata‘, ‘U‘) IS NOT NULL
DROP TABLE #Indexdata
DECLARE
@SizeofIndex BIGINT, @IndexID INT,
@NameOfIndex nvarchar(200),@TypeOfIndex nvarchar(50),
@ObjectID INT,@IsPrimaryKey INT,
@FGroup VARCHAR(20)

create table #Indexdata (name nvarchar(50),
IndexID int, IndexName nvarchar(200),
SizeOfIndex int, IndexType nvarchar(50),
IsPrimaryKey INT,FGroup VARCHAR(20))
DECLARE Indexloop CURSOR FOR
SELECT idx.object_id, idx.index_id, idx.name, idx.type_desc
,idx.is_primary_key,fg.name
FROM sys.indexes idx
join sys.objects so
on idx.object_id = so.object_id JOIN sys.filegroups fg
ON idx.data_space_id = fg.data_space_id
where idx.type_desc != ‘Heap‘
and so.type_desc not in (‘INTERNAL_TABLE‘,‘SYSTEM_TABLE‘)
AND idx.name in(

select
i.name

FROM sys.dm_db_index_usage_stats AS ius
JOIN sys.indexes AS i ON i.index_id = ius.index_id
AND i.object_id = ius.object_id
WHERE ius.database_id = DB_ID() --and i.name like ‘%ClusteredIndex%‘
--and OBJECT_NAME(i.object_id) like‘%DAILYSALES‘
AND i.is_disabled = 0
)

OPEN Indexloop
FETCH NEXT FROM Indexloop
INTO @ObjectID, @IndexID, @NameOfIndex,
@TypeOfIndex,@IsPrimaryKey,@FGroup
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT @SizeofIndex = sum(avg_record_size_in_bytes * record_count)
FROM sys.dm_db_index_physical_stats(DB_ID(),@ObjectID,
@IndexID, NULL, ‘detailed‘)
insert into #Indexdata(name, IndexID, IndexName, SizeOfIndex,
IndexType,IsPrimaryKey,FGroup)
SELECT TableName = OBJECT_NAME(@ObjectID),
IndexID = @IndexID,
IndexName = @NameOfIndex,
SizeOfIndex = CONVERT(DECIMAL(16,1),(@SizeofIndex/(1024.0 * 1024))),
IndexType = @TypeOfIndex,
IsPrimaryKey = @IsPrimaryKey,
FGroup = @FGroup
FETCH NEXT FROM Indexloop
INTO @ObjectID, @IndexID, @NameOfIndex,
@TypeOfIndex,@IsPrimaryKey,@FGroup
END
CLOSE Indexloop
DEALLOCATE Indexloop
select name as TableName, IndexName, IndexType,
SizeOfIndex AS [Size of index(MB)],
case when IsPrimaryKey = 1 then ‘Yes‘ else ‘No‘ End as [IsPrimaryKey]
,FGroup AS [File Group]
from #Indexdata order by SizeOfIndex DESC

 

 

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

SameZhao

 

数据库日常维护-CheckList_03有关数据库数据文件大小检查

标签:

人气教程排行