共计 816 个字符,预计需要花费 3 分钟才能阅读完成。
使用 SQL Server 和 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 所占用的内存。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136379.htm