oracle不开归档对效率会快吗,关于性能:存档庞大的数据库(oracle),而不会影响向其插入记录的进程...
我們有一個審計數(shù)據(jù)庫(oracle),它保存部署在應(yīng)用程序服務(wù)器上的服務(wù)(大約100個)執(zhí)行的所有活動的監(jiān)視器信息。您可能認為審計數(shù)據(jù)庫非常龐大,因為服務(wù)處理的請求數(shù)量很大。此數(shù)據(jù)庫上唯一的寫入事務(wù)是實時編寫審計信息的服務(wù)。
隨著審計數(shù)據(jù)庫的開始增長(每天超過一百萬條記錄),查詢所需數(shù)據(jù)(例如select all errors occurred with service A for requests between start date and end date)很快變得幾乎不可能。
為了解決這個問題,一些"聰明的孩子"決定設(shè)置一個批處理作業(yè),將數(shù)據(jù)從數(shù)據(jù)庫復(fù)制到另一個數(shù)據(jù)庫(例如,audit_archives)并刪除記錄,以便在審計數(shù)據(jù)庫中保留僅2天的審計數(shù)據(jù)。
這看起來很簡潔,但每當"批處理"進程運行時,將數(shù)據(jù)插入審計數(shù)據(jù)庫的審計進程開始變得非常慢 - 有時"批處理"進程也因數(shù)據(jù)庫爭用而失敗。
設(shè)計此方案以更有效的方式執(zhí)行上述歸檔的更好方法是什么,以便對審計流程和批處理產(chǎn)生最小的影響?
您可能希望研究對基表進行分區(qū)。
創(chuàng)建鏡像表(作為"歷史"數(shù)據(jù)的目標)并在該表上創(chuàng)建相同的分區(qū)方案(最可能是基于每個日期)。
然后,您可以簡單地將"舊"分區(qū)(使用ALTER TABLE the_table EXCHANGE partition)從一個表交換到另一個表。應(yīng)該只需要幾秒鐘來"移動"分區(qū)。實際性能取決于定義的索引(本地,全局)。
這種技術(shù)通常用于反過來(準備將新數(shù)據(jù)輸入數(shù)據(jù)倉庫環(huán)境中的報告表),但也應(yīng)該用于"歸檔"。
感謝您的答復(fù)。 這里有一個問題是,在工作日的24小時之內(nèi),我們無法承擔審計表不可用的費用。
@ringbearer:為什么你認為桌子不可用?
ALTER TABLE the_table EXCHANGE partition的副作用?
@ringbearer:不,表不會"不可用"。 鎖定可能存在一些問題,但您需要嘗試一下。 我不確定是否需要鎖定表或鎖定分區(qū)。
我輕松的方式。
使用FORALL語句刪除舊記錄部分最佳
用FORALL復(fù)制數(shù)據(jù)部分最好
根據(jù)星期幾添加分區(qū)
II隊列
使用FORALL語句刪除舊記錄部分最佳
使用審計觸發(fā)器填充audit_archives,在觸發(fā)器使用隊列中避免長dml
總結(jié)
以上是生活随笔為你收集整理的oracle不开归档对效率会快吗,关于性能:存档庞大的数据库(oracle),而不会影响向其插入记录的进程...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle avg分析函数,分析函数之
- 下一篇: presto读取oracle,Prest