社区
疑难问题
帖子详情
[求招]SQL Server 2000上的tempdb库日志文件每天能增大30几G
wmcode
2011-12-02 02:38:31
现在每天都要上服务器清空下tempdb日志,要不就得报磁盘空间满了,有没有办法查出是哪些操作导致他增长这么快?
...全文
179
10
打赏
收藏
[求招]SQL Server 2000上的tempdb库日志文件每天能增大30几G
现在每天都要上服务器清空下tempdb日志,要不就得报磁盘空间满了,有没有办法查出是哪些操作导致他增长这么快?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mizuho_2006
2011-12-02
打赏
举报
回复
好恐怖,换ORACLE吧。。
Ubuntu_Fedora
2011-12-02
打赏
举报
回复
tempdb恢复模型是不可更改的,
正常情况,checkpoint大致每分钟会触发,标志日志为可重用。
你这种情况是I/O性能出问题了,系统数据库的checkpoint一般在用户数据库之后的,如果I/O太繁忙,tempdb的checkpoint就会有可能被打断 ,如此到处日志不断增长
你可以定时运行checkpoint,或者创建一个警报判断日志达到20G时运行checkpoint
勿勿
2011-12-02
打赏
举报
回复
是些什么东西有那么快。跟踪看看 ,优化下
wmcode
2011-12-02
打赏
举报
回复
@roy_88,已经是简单模型了。
@AcHerat,刚把服务重启下,好像增长没那么快了,等再观察下。
@fredrickhu,跟踪了下,是有一些存储过程中创建了临时表,不过平台程序很长一段时间没有更新了,以前都正常的。
小祝
2011-12-02
打赏
举报
回复
1、当在存储过程中创建一个临时表时,比如(CREATE TABLE #a),无论你在使用哪个数据库,SQL数据库引擎都会将这个表创建在tempdb数据库中。
2、对大型的结果集进行排序,比如使用ORDER BY或GROUP BY或UNION或执行一个嵌套的SELECT时,如果数据量超过了系统内存容量,SQL数据库引擎就会在tempdb中创建工作表。
3、运行DBCC check/ DBCC REINDEX/ALTER TABLE,SQL数据库引擎同样会使用tempdb。
SQL会在完成指定操作后自动清理,并销毁这些临时表,但是,很多时候系统部会自动清理的。比如,t-sql创建了一个事务,但是却没能执行,那么这些孤儿对象将遗留在tempdb中。
如果条件允许,重新启动SQL服务会重建TempDB,TempDB空间会释放出来。
亲,你可以考虑下尽量少使用create table #tmp
--小F--
2011-12-02
打赏
举报
回复
看下LOG?用SQL PROFILER跟踪下。
-晴天
2011-12-02
打赏
举报
回复
奇怪,那里头能放些什么东西,会那么大呢?
AcHerat
2011-12-02
打赏
举报
回复
建立个跟踪看下,在空闲的时候服务重启下。
中国风
2011-12-02
打赏
举报
回复
把Tempdb設置為簡單模式沒?
sweetqueen1
2011-12-02
打赏
举报
回复
最好是关闭一些什么日志记录啥的~
SQL
Server
安全及性能优化
SQL
Server
安全及性能优化 修补漏洞 安装程序补丁修补漏洞 随时关注微软官方网站补丁升级 关闭不必要的端口 关闭联必要的服务 数据
库
引擎
SQL
Server
Analysis Services
SQL
Server
Reporting Services
SQL
Server
Integration Services
SQL
Server
代理
SQL
Full-text Filter Daemon launcher
SQL
Server
Browser 同时开启所有服务系统性能会变得很差,根据需要手动启动或者禁用某个服务 DTC: Distributed Transaction Coordinator(分布式事务处理协调器),用于协调多个数据
库
、消息队列、
文件
系统等等资源管理器的事务,由于内部开发中并不使用这个功能,远程数据
库
服务器上也并不经常使用,因此建议关闭这个服务 禁用不使用的协议 Shared Memory 默认为已启用状态,这个协议只能用于本地连接,不能用于远程连接,一般用于其它协议出问题的时候管理作诊断使用 TCP/IP 禁用不需要使用的协议,减少网络攻击对象 减少监听的网卡和IP地址 改变监听端口号 安全地设置账户 Windows身份验证[微软推荐的方式] 优势: 1.访问
Sql
Server
时速度更快,不用输入用户名和密码 2.可以利用Windows系统的自身工具和安全策略管理账户 3.安全确认和口令加密、审核、口令失效、最小口令长度和账号锁定
Sql
Server
身份验证 1.将sa账户名更改为其它账户名比如nocial,防止黑客利用sa进行攻击 2.删除不使用的账户 3.对已有账户设置安全密码[强制密码规则] 4.限制登录->远程登录、匿名登录 5.限制用户角色和权限,一般将权限设置到最低。设置角色的时候不要为public角色授予任何权限,并且从sysadmin这个角色中删除windows的administrators组,提高系统安全性。 删除不必要的数据
库
对象 删除危险的存储过程 xp_cmdshell:执行操作系统命令,这是一个系统后门[可以移动
文件
位置、创建用户、提升用户权限],建议不需要则删除掉。 ole自动化存储过程 任务管理存储过程 强化
文件
和目录安全 数据
库
最终以
文件
的形式存储在
文件
系统中 使用NTFS设置权限 限制共享【不能设置为完全控制】 及时审核
日志
sql
server
的审核机制可以帮助跟踪并且阻止系统中没有授权的用户他的行为。比如没有授权的用户登录系统会阻止这次登录,并且把这次操作给记录下来。审核机制既能跟踪失败记录也能跟踪成功记录。所有的数据
库
平台均在不同程度上提供了审查功能。 跟踪用户行为 保护数据
库
数据
库
性能优化 数据
库
的性能优化主要有两个方面:减少查询比较次数、减少资源的征用。 使用工具
Sql
Server
Profiler优化数据
库
的性能,减少资源的征用
Sql
Server
Profiler的功能
Sql
Server
Profiler的用法 定义跟踪 登录连接、失败和断开 Select、Insert、Update和Delete语句
SQL
批处理的开始或结束 写入到
Sql
server
错误
日志
的错误 安全权限检查 Profiler执行的事件 让Profiler监视我们感兴趣的事件,可以监视的事件太多,监视太多会大大降低性能和
增大
表数据,只监视与数据
库
的性能密切相关的哪些事件。常见的感兴趣的事件: 执行查询的性能 单个用户或应用程序的活动 逻辑磁盘的读写 语句级别上的CPU占用 Standart模板的事件类 优化数据
库
性能可以从五个层次来进行: 优先级一:减少数据的访问【减少磁盘访问】 优先级二:返回更少数据【减少网络传输或磁盘访问】 优先级三:减少交互次数【减少网络传输或磁盘访问】 优先级四:减少开销【减少CPU及内存开销】 优先级五:利用更多资源【增加资源】 技术上从四个方面来解决性能优化问题 1、调整数据
库
结构设计 2、调整应用程序结构设计 3、调整数据
库
SQL
语句 4、调整服务器内存分配 如果不熟悉
sql
server
可以使用数据
库
引擎优化顾问来对数据
库
提出优化建议,然后通过系统管理的修改达到目的。 数据
库
引擎优化顾问 数据
库
引擎优化顾问介绍 分析一个或多个数据
库
的工作负荷和物理实现,工作负荷可以是优化的
sql
语句或者
sql
server
profiler的跟踪
文件
和数据表。我们可以在运行引擎优化顾问前运用
sql
server
profiler记录一些事件,然后将跟踪结果存储为
文件
或者数据表,然后把这些提供给数据
库
引擎优化顾问,让它去分析。 提出合理的物理设计结构,物理设计结构包括数据
库
中的索引、索引视图、非聚集索引、聚集索引视图等等。对工作负荷进行分析后,数据
库
优化顾问会建议添加删除修改数据
库
的物理设计结构。推荐一组合理的物理结构以降低工作负荷的开销。从而提高数据
库
的性能 数据
库
性能优化的常见问题 如何发现问题,如何分析导致性能降低的原因仍然是数据
库
管理员要掌握的知识。 事务占用资源的时间过长,造成阻塞 许多用户同时访问数据
库
的时候会产生大量事务,许多用户同时竞争一个资源导致占用资源的时间过长,造成阻塞。从而降低了数据
库
执行效率。产生这样的现象的原因如下: 1、多表连接查询,查询期间占用多个表 2、事务需要占用太多资源,容易出现多个事务占用对方资源的状况。从而导致死锁 解决之道: 1、避免多表连接查询,联合过多的表会在查询中占用过多的资源。很容易因为别的事务占用资源而相互等待。 2、使用统一的
SQL
语句规范,特别是访问表的顺序要保持一致,这样可以避免互相占用资源而导致的死锁。 不合理的数据
文件
设置,影响事务处理的性能 当事务处理产生大量数据的时候,数据
文件
的大小如果设置不合理将导致数据
文件
的不断扩展,这也会影响到事务处理的性能,进而影响到整个数据
库
的性能。 1、频繁操作数据
库
,导致
日志
文件
增长的过快,因为
日志
文件
记录数据
库
的原始操作。所以它的增长速度比数据
文件
要快得多。当
日志
文件
的增长大小设置不合理的时候会导致频繁地扩展
文件
。从而影响性能 2、查询操作比较频繁,系统数据
Temp
db
的大小设置不合理。 查询操作比较频繁的时候系统数据
Temp
db
增长得会比较快,因为查询所产生的临时数据都存放在这个数据
库
上。如果
Temp
db
过小当查询数据量较大的时候
Temp
db
会自动扩展,如果遇到频繁的查询会导致
Temp
db
不断扩展,从而影响系统性能。这种情况我尽可能地使查询的返回结果比较小 3、大量插入数据,导致数据
文件
增长过快。不要设置数据
文件
的自动收缩,它会在忙碌的系统上导致不必要的性能开销。所以如果没有特别需要不要设置数据
库
的自动收缩。最好采用手动收缩。 磁盘数据组织不合理,导致磁盘的访问次数过多 数据
库
的磁盘访问都是按照页来访问数据的,无论访问的数据再少都是以页为单位读取,1页为8K。所以如果将经常访问的数据放在一起,数据
库
读取尽量少的页面就能够完成读取操作。这样效率自然就提高了。也减少了磁盘头的来回移动。否则会多次读取硬盘页面导致访问的效率降低。 对于表A和表B、表C、表D,如果经常查询表A和表B中的数据,那么可以将他们放在同一个
文件
组M中;如果经常访问表C和表D中的数据可以将他们放在同一个
文件
组N中。这样读取效率就比较高,因为一次读取就可能包含了两个表中的数据,因此提高了查询效率。要解决“磁盘数据组织不合理,导致磁盘的访问次数过多”这个问题,我们可以将经常读写的数据放置在不同的磁盘上,也就是将经常在一起被多表连接查询的表放在同一个
文件
组上。这里强调:这里反复提到的“不同的磁盘”指的的是不同的磁盘,而不是同一个硬盘的不同分区。 批量导入数据的时候,要进行特殊设置 当用户需要大批量导入数据的时候会突然增加很多
日志
记录,并且如果数据表上有索引,数据表每增加一条记录就会在索引上增加一条数据从而降低插入的性能。解决方案: 1、大批量导入数据的时候设置数据
库
的恢复模式为“大容量
日志
恢复模式” 2、导入前禁用索引,导入完毕后重建索引。
SQL
SERVER
temp
db
数据
库
异常
增大
解决方法及原因查找
-
SQL
SERVER
temp
db
数据
库
异常
增大
,导致服务器卡顿,最简单的方法就是重启系统.
temp
db
会自动重新创建恢复到初始大小(比如8M).--1.
temp
db
文件
过大,可以通过重新启动系统,
temp
db
数据
文件
及Log会释放空间到初始大小(比如8M).--2.
temp
db
在系统默认的C盘,自动扩展过大可能导致系统盘C盘空间问题,需要迁移到数据盘。--5.#看是哪条
sql
导致的比如查到的session_id 55。
Sql
Server
数据
库
temp
db
的
日志
已满的解决办法
由于云端服务器c盘太小,不知道啥原因导致数据
库
的
日志
突然
增大
,如图。
SQL
SERVER
temp
db
数据
库
异常
增大
原因查找
--
SQL
SERVER
temp
db
数据
库
异常
增大
,导致服务器卡顿。 use
temp
db
go
DB
CC
SQL
PERF(LOGSPACE) --1.查看数据
库
文件
使用情况 select
db
_name() as
db
name, name as filename, size/128.0 as CurrentSizeMB, size/128.0 - cast(fileproperty(name,'spaceUsed') as int)/128.0 as FreeSpaceMB from sys...
sql
server
系统数据
库
temp
db
的大小暴增原因
当业务代码执行t-
sql
语句,返回的结果行数超大时(如640亿行,因数据错误导致),会导致
temp
db
文件
暴增。实际生产环境中以每秒100Mb到200Mb的速度写入该
文件
,持续一段时间,最终
temp
db
文件
大小120Gb左右。以上是推测,具体原因还在排查中。
疑难问题
22,210
社区成员
121,726
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章