zoukankan      html  css  js  c++  java
  • 数据库日志文件太大的解决方法及原理

    前几天做一个关于数据表优化的程序,由于数据库里面的字段的关系非常复杂,操作起来比较麻烦,刚用的时候还好,运行时间一长,生成的事务日志很大,占用了10几G,磁盘都快用完了。

    到网上搜了一下,方法下面两种:

    1.分离数据库,直接删除事务日志文件,再附加数据库,系统会为数据库创建一个新的日志文件

    2.清除事务日志并收缩数据库

    第一种方法我没用过,也不建议用,原因有两个:分离数据库会造成连接数据库的系统停止运行,如果是生产行业的话会造成停产;事务日志可作数据库故障恢复用,如果删除日志后系统新建出错,则数据库无法恢复。

    第二种方法操作方式如下:

    a)打开企业管理器,在你要操作的数据库节点右键-> 属性->事务日志

    在事务日志文件列表里找出事务日志的文件名。(注意:这里的文件名是“文件名”列中的文件名,不是“位置”列中的实际文件名,这两个文件名可能不一样)

    b)打开查询分析器,选择数据库,在查询对话框中输入

    BACKUP LOG 数据库名 WITH NO_LOG --截断事务日志

    GO

    DBCC SHRINKFILE(日志文件的文件名) --收缩日志文件,文件名就是在企业管理器里面找到的那个

    GO

    执行

    查看一下日志文件是否有缩小~~~

    原理:

    事务日志里面记录了用户对数据库的所有操作,其中有一部是保留的,用作数据库故障恢复,其它都是可删除的,载断事务日志就是将可删除的那部份日志标记为不活动日志(但并没有删除),收缩日志文件就是把日志中不活动的日志清除。

    另外,由于日志文件中的数据块是每块100M,所以如果日志文件小于100M,收缩后看文件并不会缩少(相关内容可查询sql server 帮助文档中“收缩事务日志”部份)

  • 相关阅读:
    SP笔记:交叉实现七行并成一行
    HTML tag 学习
    操作哈希表
    Efficient bipedal robots based on passivedynamic walkers
    Pushing People Around
    ZEROMOMENT PONTTHIRTY FIVE YEARS OF ITS LIFE

    Active Learning for RealTime Motion Controllers
    Accelerometerbased User Interfaces for the Control of a Physically Simulated Character
    Dynamic Response for Motion Capture Animation
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/fdasfds.html
Copyright © 2011-2022 走看看