none
交易紀錄過大 RRS feed

  • 問題

  • 您好:

    請問 log檔案太大,是否影響整體效能?
    因為看到目前 一個db內,他的dbcc sqlperf(logspace)結果

    Log Size (MB)    Log Space Used (%)
    3089.867        98.90674

    就以
    1.    將資料庫復原模式設成「簡單」
    2.    執行 (DBCC ShrinkFile)
    3.    將資料庫復原模式設成「完整」
    的方式來做嗎?

    • 已移動 小朱MVP, Moderator 2012年6月13日 上午 08:35 (從:資料庫與程式開發(SQL Server Development))
    2012年6月7日 上午 02:26

解答

  • 那你應該要先考慮,這些交易紀錄是否有需要留存,
    有需要留存的話可以先做個備份後再清除,

    影響部分,最常碰到的應該就是吃了太多的硬碟空間,以及在定期備份裡面有包含交易紀錄時,
    當交易紀錄過大,備份時,當然就會整體效能也會受到一定的影響,

    過去的討論串請整篇都看一下。
    http://social.msdn.microsoft.com/forums/zh-TW/240/thread/01fe62a8-8021-417d-8755-5e90edf3e0a1


    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月7日 上午 03:13
  • Backup Database 只有對 data 做 backup,沒有 backup log的。
    如果你現在準備做 DBCC,那你可以現在就跑 Backup Database和Backup Log

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月7日 上午 07:39
  • 你想让日志文件的体积变小的话,只需要2个步骤,

    1,备份日志文件

    2,dbcc shrinkfile

    解释:

    为什么要备份日志?

    因为日志文件中已经committed的事务并不会被truncate掉,直到它被备份。

    为什么要运行dbcc shrinkfile ?

    因为就算日志被truncate掉了,但是日志文件的体积仍然不会变小,直到dbcc shrinkfile 为止。

    关于简单模式的话,因为sample模式会自动truncate掉已经committed的事务的事务,所以起的作用跟FULL模式下备份日志相同。

    好处就是不需要定时的手工来备份日志以达到truncate日志的目的,坏处就是牺牲掉点恢复。



    • 已編輯 Jacky_shen 2012年6月8日 上午 02:21
    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月8日 上午 02:16
  • To shrink log file with dbcc, you have to clean up log first. There are 2 ways to clean up log, backup log (backup log ERP to disk = 'd:\db_bak\erp.trn') or set db to simple recovery mode.
    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月8日 上午 02:22

所有回覆

  • 那你應該要先考慮,這些交易紀錄是否有需要留存,
    有需要留存的話可以先做個備份後再清除,

    影響部分,最常碰到的應該就是吃了太多的硬碟空間,以及在定期備份裡面有包含交易紀錄時,
    當交易紀錄過大,備份時,當然就會整體效能也會受到一定的影響,

    過去的討論串請整篇都看一下。
    http://social.msdn.microsoft.com/forums/zh-TW/240/thread/01fe62a8-8021-417d-8755-5e90edf3e0a1


    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月7日 上午 03:13
  • You have to backup log in scheduled intervals, or keep db in simple recovery mode if you don't need point of recovery. 
    2012年6月7日 上午 03:35
  • 你要 Backup log with Truncate,再 Shrink 它

    Truncating the Transaction Log

    How to BACKUP LOG WITH TRUNCATE_ONLY in SQL Server 2008

    Transaction Log Shrinking and Truncation in SQL Server


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2012年6月7日 上午 04:54
  • 您好:

    謝謝.

    因為是用sql express 2005.

    之前備份的時候是用sqlcmd 去run

    BACKUP DATABASE ERP TO DISK=''D:\DB_BAK\ERP.bak

    應該是只有做完整備份,沒有做簡單備份.也沒有做 log備份.

    若是這樣的情況下,我等他做完備份後再去執行 DBCC ShrinkFile 等動作

    應該只有刪掉 所有log資料

    那刪除log 是否會包涵  memory 中尚未存到硬碟的 資料呢?

    因為現在整體變得很慢,所以想說先處這一個看看.

    若ok,可能還需要改變一下備份的動作.

    2012年6月7日 上午 05:08
  • Backup Database 只有對 data 做 backup,沒有 backup log的。
    如果你現在準備做 DBCC,那你可以現在就跑 Backup Database和Backup Log

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月7日 上午 07:39
  • Only log backup can truncate committed tranastions from log, or set db to simple recovery mode.
    2012年6月7日 下午 12:56
  • 您好:

    謝謝.

    想確定一下:

    如果你現在準備做 DBCC,那你可以現在就跑 Backup Database和Backup Log

    ==>是指 做

    1.BACKUP DATABASE ERP TO DISK=''D:\DB_BAK\ERP.bak

    2.BACKUP log ERP_LOG      TO DISK=''D:\DB_BAK\ERP_log.bak

    還是  BACKUP log ERP_LOG      WITh NO_LOG

    另外,rmiao 您是說:

    只有log backup

    將log的交易完成的資料 truncate掉,

    或者 將db設成簡單模式

    嗎?

    還是

    將db設成簡單模式 或 做log bcakup 會

    將log的交易完成的資料 truncate掉

    謝謝

    2012年6月8日 上午 01:31
  • 你想让日志文件的体积变小的话,只需要2个步骤,

    1,备份日志文件

    2,dbcc shrinkfile

    解释:

    为什么要备份日志?

    因为日志文件中已经committed的事务并不会被truncate掉,直到它被备份。

    为什么要运行dbcc shrinkfile ?

    因为就算日志被truncate掉了,但是日志文件的体积仍然不会变小,直到dbcc shrinkfile 为止。

    关于简单模式的话,因为sample模式会自动truncate掉已经committed的事务的事务,所以起的作用跟FULL模式下备份日志相同。

    好处就是不需要定时的手工来备份日志以达到truncate日志的目的,坏处就是牺牲掉点恢复。



    • 已編輯 Jacky_shen 2012年6月8日 上午 02:21
    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月8日 上午 02:16
  • To shrink log file with dbcc, you have to clean up log first. There are 2 ways to clean up log, backup log (backup log ERP to disk = 'd:\db_bak\erp.trn') or set db to simple recovery mode.
    • 已標示為解答 softballnow 2012年6月8日 上午 03:37
    2012年6月8日 上午 02:22
  • 謝謝大家,概念有比較清楚一點了。
    2012年6月8日 上午 03:36