Sqlserver推荐参数配置及日志收缩问题
最近不定期有项目反馈周期性的系统整体性能下降情况,经分析存在因数据库环境、参数配置不佳造成的。比如,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推荐参数配置及日志收缩问题的更多相关文章
- JVM基础系列第14讲:JVM参数之GC日志配置
说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...
- (4.6)mysql备份还原——深入解析二进制日志(2)binlog参数配置解析
关键词:binlog配置,binlog参数,二进制日志配置,二进制文件参数配置 关键词:binlog缓存,binlog 刷新 0.bin写入流程 写binlog流程如下:# 数据操作buffer po ...
- log4j2用Log4jContextSelector启动参数配置全局异步日志是如何使用disruptor
与 log4j2用asyncRoot配置异步日志是如何使用disruptor差异有几个: 给disruptor实例的EventFactory不同 此处EventFactory采用的是RingBuffe ...
- YARN日志聚合相关参数配置
日志聚合是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制.默认情况下,Contain ...
- Java虚拟机-JVM各种参数配置大全详细
usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K ...
- 关于自动化测试框架,所需代码技能,Java篇——参数配置与读取.
前言: 说在前边.像我这种假期不出去浪,在这里乖乖写文章研究代码的人,绝壁不是因为爱学习,而是自己不知道去哪玩好,而且也不想玩游戏,看电视剧什么的,结果就无聊到看代码了…… 至于如何解读代码,请把它当 ...
- JVM参数配置 java内存区域
java内存区域 一些基本概念 http://www.importnew.com/18694.html https://www.cnblogs.com/wangyayun/p/6557851.html ...
- SQLServer数据库镜像配置
目录 一.目标...2 二.前提条件.限制和建议...2 三.设置概述...2 四.安装Sql Server 2008 enterprise X64.3 4.1.安装.NET3.5.3 4.2.安装时 ...
- 性能测试 Apache参数配置与性能调优
Apache性能调优 by:授客 QQ:1033553122 环境: Apache 2.4 1.选择合适的MPM(Multi -Processing Modules, 多处理模块) Unix/Linu ...
随机推荐
- cygwin编译环境小记
[gcc] 预定义宏 编译器通常会根据平台和编译选项的不同,为被编译的程序提供不同的预定义的宏, 例如WIN32 WIN64 LINUX, 例如DEBUG, RELEASE. 1. 在使用gcc/g+ ...
- web组件
慕课网:http://www.imooc.com/learn/99 js 在实战中的分层: 应用层 框架组件-框架通用组件.定制组件.独立组件 框架core(框架核心层) 浏览器底层
- A:石头剪刀布
总时间限制: 1000ms 内存限制: 65536kB描述石头剪刀布是常见的猜拳游戏.石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.一天,小A和小B正好在玩石头剪刀布.已知他们的出拳 ...
- SSM框架学习之高并发秒杀业务--笔记4-- web层
在前面几节中已经完成了service层和dao层,到目前为止只是后端的设计与编写,这节就要设计到前端的设计了.下面开始总结下这个秒杀业务前端有哪些要点: 1. 前端页面的流程 首先是列表页,点某个商品 ...
- js实现继承
js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...
- PDF 补丁丁 0.4.3.1342 测试版发布:修复崩溃问题
PDF 补丁丁 0.4.3.1342 测试版发布了. 此测试版修复了之前测试版在合并文件.书签编辑器.文档结构探查器中出现的崩溃问题. 推荐下载了0.4.3测试版的网友尽快更新.
- Linux Shell Demo
#!/bin/sh for p in ./* do if test -d $p then touch $p".ok" if test -f $p"/busi.xml&qu ...
- ubuntu下minicom和USB转串口(转)
ubuntu下minicom和USB转串口(转) minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利 ...
- vector 的 push_back[转]
vector是用数组实现的,每次执行push_back操作,相当于底层的数组实现要重新分配大小(即先free掉原存储,后重新malloc):这种实现体现到vector实现就是每当push_back一个 ...
- 使用HTML5+CSS3制作圆角内发光按钮----示例
<!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...