SQL Server数据库空间管理 (2)
本篇内容主要解决剩余的两个问题:2)、日志文件不停增长 4)、自动增长和自动收缩
日志文件不停增长的解决
首先,当日志文件超过预期的时候,我们然要看看日志文件中存放了什么内容:DBCC LOG ;这里就不对这个命令进行仔细的讲解了,重要的是我们通过这个可以知道日志记录的特点:
1.日志记录的是数据的变化,而不是记录用户发过来的操作。
2.每条记录都有它唯一的编号(LSN),并且记录了他的事务号。
3.日志记录的行数和实际修改的数据量有关。
4.日志记录了事务的发生时间,但是不保证记录下了发起这个事务的用户名,更不记录发起者的程序名称。
5.SQL Server能从日志记录里里面读到数据修改前的值和修改后的值。
再次,SQL Server采用的日志记录会避免日志文件将空间耗尽,这种机制会定期清理日志文件中不需要的日志记录:
1. 所有没有经过“检查点”的日志记录。
2.所有没有提交的事务所产生的日志记录,以及在他们之后的所有日志记录。
3.所有要做备份的日志记录。
4.有其他需要读取日志的数据库功能模块。
最后,我们分析日志文件中记录越来越多的原因,以便于处理日志不停增长:
1.数据库恢复模式不是简单模式,但是没有安排日志备份;
对于非简单模式的数据库,只有做完日志备份记录才会被截断。做完整备份和差异备份都不会起到这个作用。
2.数据库上面有一个很长时间都没有提交的事务;
这个情况,只要这个连接不断开,这个事务就会永远存在,直到客户端主动提交或者回滚它。而这个事务的那个开启时间点开始的所有日志记录,SQL Server都会记录。
3.数据上有个很大的事务正在进行;
例如:用户正在建立/重建索引,或者用DELETE/INSERT语句删除或插入大量数据等。
4.数据库复制或者镜像出了异常。
要避免日志文件不停增长,其实就是要避免上面这些情况的发生,对于一个最近不会去做日志备份的数据库,设置简单恢复模式即可;如果数据库设置了完整恢复模式,那就一定要安排定期做日志备份。如果复制或镜像任务出问题,要及时解决,如果没有办法解决就要暂时拆除复制或镜像,以防止日志记录越积越多;通常解决日志增长的原因步骤如下:
1. 检查日志现在使用情况和数据库状态:
DBCC SQLFREE(LOGSPACE)
go
SELECT name,recovery_model_desc,log_resuse_wait,log_reuse_wait_desc from sys.dadabases
go
如果检查结果表明,当前日志绝大数都在使用中(Log Space Used(%)),那就马上定位是什么原因导致了日志记录不能被SQL Server清除掉,如果当前日志的大部分已经处于空闲状态,那就说明触发日志增长的因素已经暂时消失。如果数据库的状态是LOG_BACKUP,那就意味这SQL SERVER在等待日志备份,这时候需要检查备份计划,是否需要做日志备份,如果不需要就可以直接把恢复模式设置为简单。这样SQL server会在下一个检查点的时候做日志记录截断工作。
2.检查最老的活动事务:
--返回当前数据库最久没有提交的事务
DBCC OPENTRAN
GO
---查询这个连接是由什么程序建立的以及这个连接最后发过来的一句命令内容
SELECT st.text,t2.* From
sys.dm_exe_session AS t2, sys.dm_exec_connections AS t1
CROSS APPLY
sys.dm_exec_sql_text(t1.most_recent_sql_handle) AS st
WHERE t1.session_id=t2.session_id AND t1.session_id>50
如果找到了一条这样的事务,可以尝试使用kill 命名关闭连接。
自动增长和自动收缩
设置自动增长要注意:
1. 要设置成按照固定大小增长,而不能按照比例;
这样就能避免一次增长太多或者太少所带来的不必要麻烦。比较小的数据库,设置一次增长50MB到100MB。对大的数据库设置一次增长100MB到200MB。
2.要定期监测各个数据文件的使用情况,尽量保证每个文件剩余的空间一样大,或者是期望的比例。
3.设置文件最大值,以免SQL SERVER 文件自增长用尽磁盘空间,影响操作系统。
4.发生自增长后,要及时检查新的数据文件空间分配情况。
除了自动增长的功能,数据库还有一个自动收缩的功能。如果设定了这个功能,SQL SERVER每隔半个小时就会检查文件使用情况。如果空间空间大于25%,SQL SERVER就会自动运行DBCC SHRINKFILE的动作。所以这个功能能够防止数据库申请过多的空间而不使用。看似这样做是很好的,但是也是有弊端的:
1.SQL SERVER 只有在空间用尽的情况下才会做自动增长。如果没有找出自增的原因,从而从根本上避免空间用尽,虽然能够暂时用DBCC SHRINKFILE功能收缩文件大小,但是下次数据库还是会可能增长。
2.数据文件收缩会给文件带来更多的碎片。
3.不管是数据库收缩还是增长,对SQL SSERVER都是浪费资源的事情。
SQL Server数据库空间管理 (2)的更多相关文章
- SQL Server数据库空间管理 (1)
数据库经常遇到的问题: 1).数据库文件空间用尽 2).日志文件不停增长 3).数据库文件无法收缩 4).自动增长和自动收缩 本系列就以上面的4个问题入手分析并总结数据库空间的管理方法. 1. ...
- MS SQL Server数据库在线管理工具
MS SQL Server数据库以其优异的性能,被广泛使用,特别是政务,医疗行业.但是远程维护挺不方便的,目前有一款基于WEB的工具TreeSoft数据库管理系统. 免安装,直接解压就可以用了.直接通 ...
- Microsoft SQL Server 数据库服务器管理维护角色
固定服务器角色: 按照从最低级别的角色(bulkadmin)到最高级别的角色(sysadmin)的顺序进行描述: Bulkadmin:这个服务器角色的成员可以运行BULK INSERT语句.这条语句允 ...
- SQL Server 数据库空间使用情况
GO /****** Object: StoredProcedure [dbo].[SpaceUsed] Script Date: 2017-12-01 11:15:11 ******/ SET AN ...
- c# SQL Server数据库操作-管理命令参数的类:SqlParameter
使用SqlCommand类来执行Transact-SQL语句或存储过程时,有时需要用参数传值或作为返回值,SqlParameter类正是为了此需要而设计的类.下面介绍如何使用该类为SqlCommand ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式
1.文件分配方式以及文件空间检查方法 最常用的检查数据文件和表大小的命令就是:sp_spaceused 此命令有三个缺陷:1.无法直观的看出每个数据文件和日志文件的使用情况.2.这个存储过程依赖SQL ...
- 3. SQL Server数据库状态监控 - 可用空间
原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 ...
- SQL Server 数据库表的管理
上一篇文章简单梳理了一下SQL Server数据库的安装和基本操作,这篇文章主要讲述一下数据库表的管理 一.数据库的创建 有关数据库的创建有两种方式,一种是通过视图创建,第二种就是通过T-SQL语句来 ...
- 《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的还原方式
本篇是继上篇的备份方式,本篇介绍的是还原方案,在SQL Server在2005以上现有的还原方案一般分为以下4个级别的数据还原: 1.数据库完整还原级别: 还原和恢复整个数据库.数据库在还原和恢复操作 ...
随机推荐
- linux mysql 优化
第一 在 /etc/my.cnf 中加入 skip-name-resolve ,重启mysql,这样就能禁用DNS解析,连接速度会快很多.不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用 ...
- javascript之对象
一.创建对象 1.对象直接量. var point = { x:0,y:0 }; //point就是一个对象,跟C#不同,它不需要一定有类才能创建对象. 2.通过new创建对象 var d = new ...
- ListView中分割线的设置
1.在布局文件中ListView元素中通过属性设置 android:divider="#fffff" 分割线颜色 android:dividerHeight="1px&q ...
- codecomb 2090【最小乘积路】
题目描述 给定n个点的带权有向图,求从1到n的路径中边权之积最小的简单路径. 输入格式 第一行读入两个整数n,m,表示共n个点m条边. 接下来m行,每行三个正整数x,y,z,表示点x到点y有一条边权为 ...
- apache+php+mysql常见集成环境安装包
http://www.thinksaas.cn/group/topic/33/ apache+php+mysql是常见php环境,在windows下也称为WAMP,对于初学者自选版本搭建总是会遇到一些 ...
- 【转】android camera(一):camera模组CMM介绍
关键词:android camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者:xubin ...
- sizeof用法
c语言详解sizeof 原文地址:http://blog.sina.com.cn/s/blog_5da08c340100bmwu.html 一.sizeof的概念 sizeof是C语言的一种单 ...
- C# StreamReader/StreamWriter与FileStream用法详解
http://www.360doc.com/content/13/0610/08/12579422_291878973.shtml
- HMM的学习笔记1:前向算法
HMM的学习笔记 HMM是关于时序的概率模型.描写叙述由一个隐藏的马尔科夫链随机生成不可观測的状态随机序列,再由各个状态生成不可观測的状态随机序列,再由各个状态生成一个观測而产生观測的随机过程. HM ...
- 武道释义 · 零散
若是你防御你的左边.你的右边必定是弱点: 若是你防御你的前面,你的后面必定是弱点. 若是你处处小心防御,则必定处处都是弱点." 有些武术尽管先声夺人.但却如喝渗水之酒,令人越瞧越觉无味: 但 ...