【问题标题】:What does a database log keep track of?数据库日志记录什么?
【发布时间】:2010-02-16 22:17:05
【问题描述】:

我对 SQL Server 很陌生,想知道 SQL Server 日志和自定义日志(在我的例子中,使用 log4net)之间有什么区别?我想在使用log4net 记录什么方面有更多选择,但是数据库会自动记录哪些内容?例如,如果用户注册到我的站点,我是否必须手动记录该事务,还是将其自动记录在数据库的日志中?我目前正在启动一个项目,并想弄清楚我应该记录什么。

谢谢

【问题讨论】:

    标签: sql-server database logging log4net


    【解决方案1】:

    苹果和橙子。

    Log4net 和其他自定义“日志记录”只是捕获应用程序报告的事件的一种方式。在这种情况下,“日志”是指该基础设施使用的任何存储来保存有关这些事件的信息。

    另一方面,数据库日志完全不同。为了保持一致性和原子性,数据库使用所谓的Write-Ahead-Log 协议。在 WAL 中,所有更改都首先持久写入日志或日志,然后再应用于数据。这允许恢复通过回滚任何未提交的工作来重放日志(日志)并使数据恢复到一致的状态。

    数据库日志与您的应用程序代码完全无关。引擎会自动记录任何数据库更新,因为这是在数据库中更新任何数据的方式。您无法修改它,也无权访问日志中写入的内容(严格来说,您可以查看日志,但不会找到任何对您的应用程序有用的信息)。

    【讨论】:

      【解决方案2】:

      SQL 日志处理回滚或合并数据的事务日志记录。他们通常只由知道他们正在做什么的人处理恢复备份或运送日志以用于备份。

      log4net 和其他日志框架在代码日志中处理您想为自己的信息输出的异常、警告或调试级别信息。它们可以发送到数据库、命令窗口、平面文件或 Web 服务中的表。常见的日志记录场景是在应用程序级别捕获未处理的异常以帮助追踪错误,或者在写出堆栈跟踪的任何 try catch 语句中。

      【讨论】:

        【解决方案3】:

        它会跟踪事务,以便在发生崩溃时回滚或重放它们。比简单的日志记录更复杂。

        【讨论】:

        • 什么会使日志缩小?数据提交后会被删除吗?
        • @Sergio——这取决于很多因素(数据库、负载、恢复模型等)。通常,“简单”模式下的 SQL Server DB 会尽可能地环绕其日志文件。它通常会在必须时增长,然后仅在启用自动收缩(错误)或您使用命令或 SQL 作业手动收缩时收缩。
        【解决方案4】:

        两者几乎完全无关。

        数据库日志用于回滚事务、从崩溃中恢复等。所有这些都是确保数据库一致性的好东西。它包含更新/插入/删除 - 与意图或您的应用尝试做什么无关,除非它直接影响数据库中的数据。

        另一方面,应用程序日志(使用 Log4Net)在构建和调试应用程序时非常有用。它由驱动,并且应该包含跟踪您的应用正在做什么的信息。当您不再需要它时,可以安全地关闭或减少它(通过切换日志级别)。

        【讨论】:

          【解决方案5】:

          SQL Server 日志文件实际上是用来维护它自身的稳定性的,但是对于普通的开发人员来说并不是非常有用。这不是你想的(我也是我想的),一个已经运行的 SQL 语句的列表。这是一种专用格式,旨在帮助 SQL 从崩溃或回滚事务中恢复。

          如果您需要跟踪系统中发生的事情,SQL 事务日志将无济于事,并且很难将这些信息取回。相反,我建议在您的表上添加触发器,将信息写入另一个表,或者在您的数据层中添加一些代码,以保存正在发生的事情的日志。它可以像用你自己的实现包装 SQL 命令对象一样简单,除了它正在执行的任何正常代码之外,它还将 SQL 语句保存到 log4net。

          【讨论】:

            【解决方案6】:

            这是 RMDBS 可以确保atomicityconsistency 的机制,请参阅ACID

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-11-10
              • 2011-03-06
              • 1970-01-01
              • 2019-06-05
              • 2015-12-21
              • 1970-01-01
              • 1970-01-01
              • 2014-04-17
              相关资源
              最近更新 更多