我正在为 70-432 (SQL Server 2008) 考试学习,我对事务日志的工作原理有点困惑。
据我了解,(如果我错了请纠正我......)日志主动存储在内存中并尽可能频繁地复制到驱动器上的文件中。在每个检查点,完整的事务被提交到硬盘驱动器上的数据文件(也就是说,直到检查点它们才真正写入驱动器)。尾部始终保存尚未提交的事务。
当灾难发生时,您尝试备份日志的“尾部”。是存储在文件中,还是要从内存中转储?我知道这并不总是可行的,但强烈建议您尝试这样做。
我的理解对吗?
我正在为 70-432 (SQL Server 2008) 考试学习,我对事务日志的工作原理有点困惑。
据我了解,(如果我错了请纠正我......)日志主动存储在内存中并尽可能频繁地复制到驱动器上的文件中。在每个检查点,完整的事务被提交到硬盘驱动器上的数据文件(也就是说,直到检查点它们才真正写入驱动器)。尾部始终保存尚未提交的事务。
当灾难发生时,您尝试备份日志的“尾部”。是存储在文件中,还是要从内存中转储?我知道这并不总是可行的,但强烈建议您尝试这样做。
我的理解对吗?
我的所有数据库都处于完全恢复状态,并且每 15 分钟进行一次日志备份,因此我的日志文件通常很小。问题是如果有一个夜间操作导致大量事务发生并导致我的日志文件增长,我应该在之后将它们缩小吗?
拥有巨大的日志文件会对数据库性能产生负面影响吗?目前磁盘空间不是问题。
编辑:使用 SQL 2005 将很快使用 2k8。(我以为我把它放在... d'oh)
我有一个处于完全恢复模式的 sql server 2008 数据库。
我还没有备份数据库或日志。
一些数据被无意中从数据库中删除。我想回到数据被删除之前的时间点。我怎样才能做到这一点?
我们在 SQL Server 2008 中有一个数据库,其Recovery model
设置为Simple
.
定期,我们在一张大表上运行一次大更新(要更新 1500 万行)。为此,我们运行了一个需要 2 小时以上运行的存储过程。当存储过程完成运行时,日志文件增长到 37GB,这有点奇怪,因为恢复模型很简单,而且我们甚至没有在存储过程中明确开始事务(我们对数据库进行了完整备份在更新之前为安全起见)
此外,当我们缩小日志文件时,它会回到 1MB
是否可以阻止日志文件增长到 37GB?
谢谢
我编写了一个小应用程序来定期查询、清理旧数据库的数据并将其插入 SqlServer。大约有 3M 条记录,如果我让轮询寡妇非常小,我可以想象事务日志会变得非常大。在这些“复制”操作期间,我如何才能最大限度地减少它的增长?
我安装了 SQL 2005,并且我的 templog.ldf 文件不断增长,以消耗它所在驱动器上的所有可用空间。有时它会停止几mb,但有时它会更进一步,这是c驱动器,我认为这种行为可能与我看到的其他一些问题有关。
我的问题是,我应该怎么做,我可以将日志移动到另一个驱动器,但我有理由假设它不会在那里做同样的事情。我假设这种行为可能是我可以更改的结果,并且 45gb 对于 tempdb 日志来说是一个不寻常的大小。我们在代码中确实使用了很多临时表和表值函数,因此使用 tempdb 的空间很大,我可以理解 tempdb 数据库的增长,但不明白 templog 增长的原因。
到目前为止,我已经运行了 DBCC OPENTRAN('tempdb') 来查看是否有任何旧事务在附近,它们不是。我已经阅读了有关如何缩小 tempdb 并已经这样做了几次,但我真的想知道如果我能做些什么来阻止这种情况的发生,或者更多关于它为什么会增长如此之多的详细信息第一名。
==编辑==
1) tempdb 使用简单的恢复模型
2) templog 的增长发生在早上几个小时内,当时我们有一些预定的查询正在运行,基本上是前一天办公时间用完的报告负载。文件的大小在这段时间内稳步增长。我们控制同时运行多少并发报告,增加并发报告的数量会增加日志的增长速度。
MySQL有很多日志:
我知道 Postgresql 的 WAL,它相当于 InnoDB 的事务日志(对吗?)。
其他 MySQL 日志(例如 bin 日志)呢?它们是否与 Postgresql 等价?
SQL Server sp_spaceused 存储过程对于找出数据库大小、未分配空间等很有用。但是(据我所知),它不会报告事务日志的信息(并查看 SQL Server Management 中的数据库属性Studio 也不为事务日志提供该信息)。
虽然我可以通过查看 .ldf 文件轻松找到事务日志使用的物理空间,但如何找出日志文件的使用量和未使用量?
我主要是一名开发人员,但对于一个小型内部系统,我目前还负责运行 SQL Server Enterprise Edition 的服务器的一些配置。
数据库本身从两个来源看到活动:
我对使用内置的 SQL 服务器备份实用程序感到相当满意,我设置了一个维护计划,每 6 小时备份一次整个数据库,并且在数据库备份之间每 6 小时记录一次事务日志(例如,早上 6 点,数据库备份,上午 9 点事务日志备份,下午 12 点数据库备份,下午 3 点事务日志备份)。我们每周都会对整个服务器进行磁带快照(数据不是关键任务,更多的是研发项目)。
在此设置之前,数据库开始急剧增长,现在所有完整数据库备份都以非常易于管理的 15Mb(并且缓慢增长)进入,事务日志在 9 到 12Mb 之间。
我做对了吗?您对事务日志备份的频率还有其他见解吗?
如果我错过的另一个问题中的任何内容可能有用,请随时指出我。