zoukankan      html  css  js  c++  java
  • [转]Mssql的Tempdb库的处理

    转自:http://wanoyxj.blog.163.com/blog/static/9573613720088249442641/

    检查数据库有无问题 : dbcc checkdb 数据库名
    --截断事务日志
    backup log 数据库名 with no_log
    --收缩数据库
    dbcc shrinkdatabase (数据库名)

    为tempdb添加日志文件:
    ALTER DATABASE tempdb ADD LOG FILE
    ( NAME='templog_1',
    FILENAME ='d:\tempdb_log_1.ldf')

    增加日志大小:
    USE master
    GO
    ALTER DATABASE tempdb
    MODIFY FILE
    (NAME ='tempdb_log',
    SIZE = 2000MB)
    GO


    use tempdb
    select * from tempdb.dbo.sysfiles
    dump transaction tempdb with no_log --清空日志
    dbcc shrinkfile ('templog',1)
    select * from tempdb.dbo.sysfiles

    @重启SQL SERVER服务

    清空日志:
    DUMP TRANSACTION 库名 WITH NO_LOG
    再:企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数后确定
    SQL Server在每次重启服务时会重建tempdb数据库
    如果系统运行过程中 tempdb因需要自动增长了,SQL Serve不会记住增长后的大小,重启服务后仍然恢复到初始大小,
    但如果用户使用了手工调整tempdb的大小,重启服务SQL Server会把tempdb重建为用户指定大小


    测试示例
    tempdb初始化大小为8MB
    1)使tempdb自动增长
    select b.* into #t from sysprocesses a,sysobjects b
    重启后使用sp_helpdb 'tempdb'
    可以看到tempdb又恢复到8MB


    2) 用户使用Alter Database调整为100MB,
    USE master
    GO
    ALTER DATABASE tempdb
    MODIFY FILE
    (NAME = tempdev,SIZE = 100MB)


    重启服务后使用查看tempdb大小就为100MB
    以下查询可以看到tempdb的变化
    select a.filename,a.name,a.size*8.0/1024.0 as originalsize_MB,
    f.size*8.0/1024.0 as currentsize_MB
    from master..sysaltfiles a join tempdb..sysfiles f on a.fileid=f.fileid
    where dbid=db_id('tempdb')
    and a.size<>f.size

    总结:
    当系统自动调整tempdb大小时,对文件的读写将暂时的阻塞
    所以如果我们预知tempdb将会增加到某个大小时,可以自行调整,从而避免性能下降

    如何收缩 SQL Server 中的 Tempdb 数据库

  • 相关阅读:
    CSUFT 1002 Robot Navigation
    CSUFT 1003 All Your Base
    Uva 1599 最佳路径
    Uva 10129 单词
    欧拉回路
    Uva 10305 给任务排序
    uva 816 Abbott的复仇
    Uva 1103 古代象形文字
    Uva 10118 免费糖果
    Uva 725 除法
  • 原文地址:https://www.cnblogs.com/Athrun/p/2749057.html
Copyright © 2011-2022 走看看