2013-03-28 78 views
1

我正在使用Sybase ASE(遷移到15.7)數據清除實用程序以供多個表/數據庫用於刪除大量不需要的舊數據。我計劃在每天中午12:00至凌晨3:00以及凌晨3:00之後安排,它應該在第二天中午12點睡覺醒來並繼續清洗。該標準不會影響用戶。Sybase ASE數據清除批處理 - waitfor和事務日誌管理

  1. 這是一個很好的設計使用以下內容來批量睡覺,直到第二天?還是會損害表現?在調用waitfor之前我正在執行tran。

    waitfor time "12:00:00" 
    
  2. 事務日誌:

    • 我使用下面的查詢查找事務日誌的大小和等待,直到事務日誌可用空間<有些%。這是一個好方法嗎?
    • 另外,考慮到我的一般情況,在繼續等待之前,我應該檢查的最佳事務日誌使用百分比限制是多少? - 我應該使用「轉儲交易」嗎?我讀過我們不應該在生產系統中使用「dump transaction truncate only」。我應該以不同的方式使用它嗎?你爲我的場景建議我一些事情嗎?

      select @tlogPctUsed = ceiling(100 * (1 - 1.0 * lct_admin("logsegment_freepages",d.dbid)/sum(case when u.segmap in (4, 7) then u.size end))) 
          from master..sysdatabases d, master..sysusages u 
      where u.dbid = d.dbid 
          and d.dbid = db_id() 
          and d.status != 256 
      group by d.dbid 
      
      while (@tlogPctUsed > @tlogPctLimit) 
      begin 
          waitfor delay @10Seconds 
          select @tlogPctUsed = ceiling(100 * (1 - 1.0 * lct_admin("logsegment_freepages",d.dbid)/sum(case when u.segmap in (4, 7) then u.size end))) 
           from master..sysdatabases d, master..sysusages u 
          where u.dbid = d.dbid 
           and d.dbid = db_id() 
           and d.status != 256 
          group by d.dbid 
      end 
      

回答

0

ASE Job Scheduler將運行你清除更穩定的方法,而不是WAITFOR

不推薦在生產系統中使用truncate_only *轉儲事務的原因是它影響可恢復性。作爲流程的一部分,您可以通過將事務日誌轉儲到文件來解決此問題。這樣,您就可以處理日誌填寫問題,並且可以在發生數據庫故障時保持恢復系統的能力。

傾銷事務日誌的更多信息可以在Sybase ASE 15.7 Reference Manual: Commands

另外可以發現,sp_thresholdaction可以設置爲自動轉儲事務日誌當它達到一定的閾值。 Sybase ASE 15.7 Reference Manual: Procedures就是這樣的例子。

+0

謝謝你的投入邁克爾。我的DBA剛剛確認我們的數據庫配置了「truncate log on chkpt」和「abort tran on log full」。在這種情況下,我可以安全地使用「dump transaction with truncate only」。是對的嗎? – user1549605

+0

謝謝邁克爾 - 等待設計看起來不錯嗎? – user1549605

+0

Hey Michael, 我讓我的DBA在我們的ASE中設置作業調度程序,但他說只有一位DBA知道作業調度程序和sybase ASE作業調度程序是一個很難使用的問題。他要求我避開它並去cron。你能否讓我知道你對ASE工作安排者的想法,讓我知道是否真的很痛苦,以避免?感謝有關這方面的任何建議。 – user1549605

0
  1. WAITFOR should't傷害你的表現,但您可以在ASE重啓,DBA殺,連接與客戶端等失去了,對我來說,它看起來像不穩定的解決方案的情況下,失去了這個會議。考慮使用cron或ASE Job Scheduler
+0

謝謝,這是一個很好的觀點。我將使用作業調度程序 – user1549605

0

請謹慎使用Job Scheduler - 注意此ASE java函數中的已知錯誤,例如回收ASE只是爲了將一個失敗的JS任務從其睡眠狀態中解放出來,這使得使用JS的風險要高於waitfor。

克朗更可靠。