最近不定期有项目反馈周期性的系统整体性能下降情况,经分析存在因数据库环境、参数配置不佳造成的。比如,sqlserver日志文件缺省按百分比增长,当日志文件已经比较大时,每次扩展时耗时较长,系统整体卡顿;另外,如果没有专门做日志备份,收缩日志和数据库时不会显著的降低日志大小,造成每次完整备份很大、备份时间很长,等等。

推荐配置

简单整理一些比较基础、通用的配置如下:

1. 建议的sqlserver版本(x64):sqlserver 2008 或更高版本

2. 最小内存和最大内存统一设置为物理内存的80%

3. 数据和日志文件的初始大小分别设置为10G和2G,均设置为按照固定200M大小增长,不限制最大值;

4. Tempdb数据库的恢复模式设置为简单,数据和日志文件的初始大小分别设置为2G和1G,均设置为按照固定200M大小增长,不限制最大值;

5. Tempdb的数据文件个数 = 数据库服务器的CPU数,所有数据文件的初始大小和增量必须一致,数据文件个数不要超过4个;

6. 最大并行度设置为1,或并行的开销阀值设置为100(酌情设置)

7. 数据库的完整备份后,应该再做一个日志备份,然后再做日志收缩。

日志收缩

正常情况下,完成完整备份后,应该执行日志备份,然后再做日志文件的收缩。只有做日志备份后记录才会被截断,仅做完整备份或差异备份,做日志收缩是没有效果的。

操作步骤如下:

USE [master]
GO BACKUP DATABASE [DbName] TO DISK='xxx'
GO BACKUP LOG [DbName] TO DISK='xxx'
GO USE [DbName]
GO -- 确定数据库日志文件的逻辑名称,收缩日志文件
DECLARE @logName NVARCHAR(100);
SELECT @logName = name FROM sys.database_files WHERE type_desc = 'LOG'; --Type = 1
DBCC SHRINKFILE (@logName, 1024);
GO

如果不备份日志,直接截断日志(不推荐使用),有以下两种变通方式:

1. 将日志写入nul虚拟文件(对 SQL Server而言,nul 与其他真实存在的文件一样, SQL SERVER会扫描所有活动日志,将该日志格式化后写入 nul文件)

2. 将数据库改为简单恢复模式后又改为完整恢复模式

SQL2005 的WITH TRUNCATE_ONLY选项,起到相同的效果。运行在简单恢复模式下,所有活动日志在 checkpoint后会被丢弃;

-- 备份数据库日志到nul虚拟文件
BACKUP LOG [DbName] TO DISK='nul' -- 备份数据库日志,截断日志(sqlserver2005支持)
BACKUP LOG [DbName] WITH TRUNCATE_ONLY // 2008以后
-- 将数据库恢复模式改为简单(即截断日志),然后再恢复为完整模式
USE [master]
GO ALTER DATABASE [DbName] SET RECOVERY SIMPLE WITH NO_WAIT
GO ALTER DATABASE [DbName] SET RECOVERY SIMPLE --简单模式
GO USE [DbName]
GO -- 确定数据库日志文件的逻辑名称
DBCC SHRINKFILE (N'DbName_log' , 1024)
GO USE [master]
GO ALTER DATABASE [DbName] SET RECOVERY FULL WITH NO_WAIT
GO ALTER DATABASE [DbName] SET RECOVERY FULL --还原为完全模式
GO

Sqlserver推荐参数配置及日志收缩问题的更多相关文章

  1. JVM基础系列第14讲:JVM参数之GC日志配置

    说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...

  2. (4.6)mysql备份还原——深入解析二进制日志(2)binlog参数配置解析

    关键词:binlog配置,binlog参数,二进制日志配置,二进制文件参数配置 关键词:binlog缓存,binlog 刷新 0.bin写入流程 写binlog流程如下:# 数据操作buffer po ...

  3. log4j2用Log4jContextSelector启动参数配置全局异步日志是如何使用disruptor

    与 log4j2用asyncRoot配置异步日志是如何使用disruptor差异有几个: 给disruptor实例的EventFactory不同 此处EventFactory采用的是RingBuffe ...

  4. YARN日志聚合相关参数配置

    日志聚合是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制.默认情况下,Contain ...

  5. Java虚拟机-JVM各种参数配置大全详细

      usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K ...

  6. 关于自动化测试框架,所需代码技能,Java篇——参数配置与读取.

    前言: 说在前边.像我这种假期不出去浪,在这里乖乖写文章研究代码的人,绝壁不是因为爱学习,而是自己不知道去哪玩好,而且也不想玩游戏,看电视剧什么的,结果就无聊到看代码了…… 至于如何解读代码,请把它当 ...

  7. JVM参数配置 java内存区域

    java内存区域 一些基本概念 http://www.importnew.com/18694.html https://www.cnblogs.com/wangyayun/p/6557851.html ...

  8. SQLServer数据库镜像配置

    目录 一.目标...2 二.前提条件.限制和建议...2 三.设置概述...2 四.安装Sql Server 2008 enterprise X64.3 4.1.安装.NET3.5.3 4.2.安装时 ...

  9. 性能测试 Apache参数配置与性能调优

    Apache性能调优 by:授客 QQ:1033553122 环境: Apache 2.4 1.选择合适的MPM(Multi -Processing Modules, 多处理模块) Unix/Linu ...

随机推荐

  1. 0020 Linux 文件操作命令

    1. 创建文件 touch 文件名 2. 删除文件 rm 文件名 3. 复制文件 cp 源文件 目录 4.剪切文件 mv 源文件 目标文件 5.重命名文件 mv 源文件名 新文件名 6.改变文件权限 ...

  2. Cisco IOS IP Service Level Agreementv (IP SLA)

    Responder and Control Protocol 1.Responder内嵌在思科目标路由器中的一个组件,用来对IP SLA请求包做应答,通过对应达包添加时间戳属性,以提高测量计算的准确性 ...

  3. PDF 补丁丁 0.4.2.1023 测试版发布:新增旋转页面功能

    新的测试版发布啦.此版本增加了旋转页面的功能. 在“PDF文档选项”对话框的“页面设置”选项卡中,可设置需要旋转的页面(输入页码范围),以及旋转角度. 此外,还修复了统一页面尺寸功能的小问题.

  4. c++英文单词频度统计程序

    英文单词频度统计程序(c++版) 写一个程序,分析一个文本文件(英文文章)中各个次出现的频率,并且把频率最高的十个词打印出来. 分析过程: (1)  简单设想大致分为两大步骤: 1.经过文本文件的读操 ...

  5. UITableView编辑

      UITableView 编辑步骤如下: 1.让TableView处于编辑状态 2.协议设定  2.1.确定Cell是否处于编辑状态  2.2.设定Cell的编辑样式(删除.添加)  2.3.编辑状 ...

  6. iOS求职之OC面试题

    1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和#include的区别是什么?#import<> 跟 #im ...

  7. 字体Unicode编码

    客专家福利     有奖试读&征文——我们在互联网上奋斗的故事      10月推荐文章汇总      加入“技术热心人”,赢丰厚奖品 html-中文字体在CSS中的显示(Unicode编码) ...

  8. C#代码示例_函数

    参数数组 C#允许为函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后一个参数,称为参数数组.参数数组可以使用个数不定的参数调用函数,可以使用params关键字定义它们. 参数数组 ...

  9. Smart210学习记录------nor flash驱动

    nor flash驱动与nand flash驱动的差别不大,只是设置不同的结构体而已,, nor flash驱动代码: #include <linux/module.h> #include ...

  10. Linux线程-互斥锁pthread_mutex_t

    在线程实际运行过程中,我们经常需要多个线程保持同步.这时可以用互斥锁来完成任务:互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthrea ...