none
请教SQL server 2008 R2两个问题 RRS feed

  • 问题

  • 你好,我用的是SQL server 2008 R2 enterprise正版,在使用的时候遇到一些问题,经电话咨询后,被建议在论坛来提交问题,2个问题如下

    1.每次开机启动时,SQL server内存使用大概为1-2G左右,随后服务器不关机,在一周的时间内,数据库的内存占用达到12G多,请问有什么方式优化内存的占用吗(除了重启),前台的应用是HP的ALM,在另一台机器上。

    2.数据库里的实例有三四十个项目,都设置的是完全备份,发现DATA目录下的项目.ldf文件特别大,占用了大量的磁盘空间,比如有个项目的ldf文件有55个G,请问有什么方法优化设置,让这些文件瘦身又不影响备份和恢复吗?

    2014年3月14日 1:37

全部回复

  • 1. 为 sql server 设置最大使用内存限制

    可以使用界面, 或者参考下面的 T-SQL 语句

    EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
    EXEC sp_configure 'max server memory (MB)', 4096;  -- 单位 MB
    EXEC sp_configure 'show advanced options', 0; RECONFIGURE;

    SQL Server 的内存使用机制就是为新的需求分配空闲内存,直到用完或者达到设置的内存上限, 达到最大值的情况下, 会释放之前占用的内存供新的需求使用

    这个是基于性能的考虑, 缓存之前的东西,以后使用的时候直接从内存取

    如果你要手动释放内存, 可以把内存使用上限高小, 这样 SQL Server 会根据你设置的上限释放已经占用的过多内存(一般设置好上限,保留跞的内存给其他应用使用就行了)

    2014年3月14日 2:13
  • 2. ldf 过大, 这个是因为你只做了完全备份, 没有做日志备份导致的

    ldf 是日志文件, 日志文件重用取决于数据库恢复模型

    默认是 FULL 模式, 在这种模式下, 日志文件重用必须是在日志已经备份的情况下

    如果是 SIMPLE 模式, 则不需要(也不能)做日志备份

    SELECT recovery_model_desc, * FROM sys.databases -- 查看恢复模型
    ALTER DATABASE XX SET RECOVERY SIMPLE -- FULL  -- 修改恢复模型

    2014年3月14日 2:16
  • If it's dedicated 64-bit sql server, should allocate most memory to sql and leave couple of gb for OS. 32-bit machine is different story.
    2014年3月14日 2:28