代码改变世界

史林枫:sqlserver数据库中数据日志的压缩及sqlserver占用内存管理设置

2016-10-25 19:37  史林枫  阅读(1410)  评论(4编辑  收藏  举报

使用sqlserver和IIS开发.net B/S程序时,数据量逐渐增多,用户也逐渐增多,那么服务器的稳定性就需要维护了。数据库如何占用更小内存,无用的日志如何瞬间清空?

 

今天在给一个客户维护网站的时候,发现运行了2年的程序,数据库中主表的数据已超过70万条,按理说这样的数据量根本不算多。数据库是Sqlserver2012版本,服务器是Windows Server 2008。

在远程连接过程中,IIS和sqlserver总是打开一会儿自动闪退,打开任务管理器,发现IIS进程占用几百MB内存,数据库进程占用了将近600M内存。为了让服务器稳定运行IIS和sqlserver 我强制重启了服务器。

重启后,发现数据库和IIS都能正常打开使用了。数据库的日志文件已经有2个多GB,数据文件不到200MB。于是开始清空数据库日志:

需要用以下命令:

1 ALTER DATABASE [数据库名称]  SET RECOVERY SIMPLE -- 更改为简单模式
2 
3 DBCC SHRINKDATABASE([数据库名称])  --压缩数据库命令
4 
5 ALTER DATABASE [数据库名称] SET RECOVERY FULL  --恢复为完全模式

先将数据库改为简单模式,再压缩数据库,最后恢复完全模式即可。这样数据库就回收了一部分空间,并清空了日志,只保留了必要的数据。

另外,数据库占用的内存是可以调控的,这里说一下可视化界面的调控

第一步:打开数据库 连接后  如图操作 右键选择属性

 

选择“内存”管理 

 

 

调整最大内存,即可。这样就可以限制数据库占用的内存了。当然,这只是临时做法,真正优化数据库内存还有很多方法,如分库,分表,读写分离,程序优化,sql语句优化等。

关于IIS的内存占用过大,这里就只能优化程序了,某些算法的升级,请求次数的减少都可以帮助优化IIS所占用的内存。