我有一張表,即X,大約64列存儲在線金融交易。 每天有數百萬條記錄被插入到X中。大約16列X是可查詢的,也就是說,許多系統報告需要根據這16列的值過濾X的數據。如何管理有大量插入和選擇的大型表格?
具有所有這16列的DB索引使插入操作太慢。另一方面,在某些列上沒有索引會導致一些報告太慢。
所以,這是問題。我如何設計表格X及其索引以獲得插入和報告的最佳性能?我使用oracle 11g DBMS。
我有一張表,即X,大約64列存儲在線金融交易。 每天有數百萬條記錄被插入到X中。大約16列X是可查詢的,也就是說,許多系統報告需要根據這16列的值過濾X的數據。如何管理有大量插入和選擇的大型表格?
具有所有這16列的DB索引使插入操作太慢。另一方面,在某些列上沒有索引會導致一些報告太慢。
所以,這是問題。我如何設計表格X及其索引以獲得插入和報告的最佳性能?我使用oracle 11g DBMS。
嘗試對錶格進行分區。不要創建一張巨大的表格,而應該每天,每週或每月創建一個表格,並將所有查詢連接起來。或者,Oracle支持分區表(但是否可用取決於您的Oracle版本)。
插入數據時,插入正確的分區。這樣,更新的索引將會小得多。缺點是你將需要更多的索引空間,因爲索引值將被複制。
從積極的角度來看,查詢可能會快得多,因爲當數據庫位於不同的磁盤上時,數據庫可以並行讀取表。
另請注意,SQL數據庫不會縮放到任何大小。改爲考慮一個集羣或雲數據庫。他們還有其他缺點,但他們可以處理任何數量的記錄(只要您有足夠的物理空間用於服務器,就是這樣)。
沒有理由每天SQL數據庫無法擴展到數百萬個插入。什麼是「雲數據庫」? –
主要原因是插入或查詢數據的時間隨着添加數據而增加。最終,數據庫上的任何操作都將花費太長時間。是的,術語「雲數據庫」並不確切。 「map-reduce有效的數據存儲」會更好嗎? –
map-reduce能力是一個很好的術語。但我懇求在意見上有所不同。精心設計的SQL數據庫比我們大多數人意識到的可以進一步擴展。 –
Recommemdations:
你需要實時報告,還是從x小時/天以前的結果令人滿意? – podiluska
如果除延遲時間/天的報告外沒有解決方案,我必須接受它,但在線報告更可取。 – hsalimi
爲什麼在這張桌子上有64列?我的直覺認爲這個表太寬了,這些數據中的一些應該分佈在更多的表格中。 –