sql数据库的缓存清理办法?

-----

清除错误日志,(需执行大概“七次”):

exec sp_cycle_errorlog

(完)

-----

SQL清理日志,例:

USE [master]
 GO
 ALTER DATABASE HJJC SET RECOVERY SIMPLE WITH NO_WAIT ----blog为需要清除日志的数据库名称
GO
  ALTER DATABASE HJJC SET RECOVERY SIMPLE  --简单模式----blog为需要清除日志的数据库名称
GO
 USE HJJC ----blog为需要清除日志的数据库名称
GO
DBCC SHRINKFILE (N'HJJC_Log' , 11, TRUNCATEONLY) ----blog_Log为需要清除日志的数据库名日志名称
 GO
 USE [master]
 GO
 ALTER DATABASE HJJC SET RECOVERY FULL WITH NO_WAIT----blog为需要清除日志的数据库名称
 GO
ALTER DATABASE HJJC SET RECOVERY FULL --还原为完全模式----blog为需要清除日志的数据库名称

解析:
> USE [master] GO ALTER DATABASE 需要清理的数据库名称 SET RECOVERY SIMPLE WITH
> NO_WAIT GO ALTER DATABASE 需要清理的数据库名称 SET RECOVERY SIMPLE   --简单模式 GO
> USE 需要清理的数据库名称 GO DBCC SHRINKFILE (N'需要清理的数据库名称_log' , 2,
> TRUNCATEONLY)  --设置压缩后的日志大小为2M,可以自行指定 GO USE [master] GO ALTER
> DATABASE 需要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE
> 需要清理的数据库名称 SET RECOVERY FULL  --还原为完全模式

-----

--清除存储过程缓存  
DBCC FREEPROCCACHE 
--清除会话缓存 
DBCC FREESESSIONCACHE 
--清除系统缓存 
DBCC FREESYSTEMCACHE('All') 
--清除所有缓存 
DBCC DROPCLEANBUFFERS
GO
 
--打开高级配置 
exec sp_configure'show advanced options', 1 
GO
--设置最大内存MB  2G
exec sp_configure 'max server memory', 2048 
EXEC ('RECONFIGURE' )
--设置执行时间
WAITFOR DELAY '00:00:10'
--设置最大内存MB  20G
EXEC  sp_configure 'max server memory', 20480 
EXEC ('RECONFIGURE' )
GO
--关闭高级配置 
exec sp_configure'show advanced options',0 


  
--内存使用情况      

SELECT *FROM sys.dm_os_performance_counters  

WHERE counter_nameIN('Target Server Memory (KB)','Total Server Memory (KB)')  
 
-- 内存状态  

DBCC MemoryStatus  

--查看最小最大内存  

SELECT configuration_idasid,nameas 名称,minimumas配置最小值,maximumas 最大值,  

is_dynamic as 是否动态值, is_advanced as 是否优先,value_in_use AS 运行值,  

description as 描述 FROMsys.configurations 

-----

在MS Sql Server中可通过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率:

1、查询各个磁盘分区的剩余空间: 
Exec master.dbo.xp_fixeddrives;
 
2、查询数据库中的所有数据库名: 
SELECT Name FROM Master..SysDatabases ORDER BY Name;
 
3、查询某个数据库中所有的表名: 
SELECT name FROM SysObjects Where XType=’U’ ORDER BY Name;
 
4、查询数据库的数据文件及日志文件的相关信息(包括文件组、当前文件大小、文件最大值、文件增长设置、文件逻辑名、文件路径等) 
select * from [数据库名].[dbo].[sysfiles]; 
转换文件大小单位为MB: 
select name, convert(float,size) * (8192.0/1024.0)/1024. from [数据库名].dbo.sysfiles;
 
5、查询当前数据库的磁盘使用情况: 
Exec sp_spaceused; 
exec sp_spaceused ‘表名’; –取得表占用空間
 
6、查询数据库服务器各数据库日志文件的大小及利用率 
DBCC SQLPERF(LOGSPACE);
 
7、收缩数据库日志文件(sql server2005) 
backup log [数据库名] with no_log 
DBCC SHRINKDATABASE(N’[数据库名]’, 15, TRUNCATEONLY)
 
8、收缩数据库日志文件(sql server2008) 
USE[master] 
GO 
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT 
GO 
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE –简单模式 
GO 
USE [数据库名] 
GO 
DBCC SHRINKFILE (N’[数据库名]_Log’ , 11, TRUNCATEONLY) 
GO 
USE[master] 
GO 
ALTER DATABASE [数据库名] SET RECOVERY FULL WITH NO_WAIT 
GO 
ALTER DATABASE [数据库名] SET RECOVERY FULL –还原为完全模式 
GO

-----

SQL语句查询空间,解释:

查库(两个结果):

SQL语句:exec sp_spaceused;

查库表:

SQL语句:exec sp_spaceused Company;

(Company为'表名')

database_name:数据库名称

database_size:当前数据库的大小 (MB)。 database_size 包括数据和日志文件

unallocated space:未保留供数据库对象使用的数据库空间。

reserved:由数据库中对象分配的空间总量。

data:数据使用的空间总量。

index_size:索引使用的空间总量。

unused:为数据库中的对象保留但尚未使用的空间总量。

database_size 将始终大于 reserved + unallocated_space 之和,因为该值包括日志文件的大小,而 reserved 和 unallocated_space 只考虑数据页。

在这两个结果集的 index_size 中,都包括了 XML 索引和全文索引使用的页。 当指定 objname 时,对象的 XML 索引和全文索引所使用的页将计算在 reserved 和index_size 结果中。

如果为具有空间索引的数据库或对象计算空间使用情况,则空间大小列(例如,database_size、 reserved 和 index_size)将包含空间索引的大小。

更多推荐

SqlServer清理缓存方法