Re: [問題] 當資料越來越多時,DBA該.......?
謝謝 in 哥提供的許多寶貴經驗
其實因為前人建置的資料庫被設計成把所有交易資料都放在同一張表
然後又為了線上資料庫的效率,固定把三個月前的資料移到備份主機上存放
可惜這些交易資料不只要用來產生摘要報表,還會經常性的(每日)被使用在一些即時應用
為了不影響線上交易,所以想要將資料倒到另一台離線資料庫
並配合MySQL及網頁語言去開發一些查詢功能
目前第3種方法是被認為較為可行的,但不知道是否有比較好的解決方法?
想問的是
1.程式會變複雜很多是指加入要到哪一個資料表搜尋的判斷嗎?
2.效率會變差是指程式開發的效率變差嗎? 還是資料庫執行的效率?
另外關於第2種方法,就像上面提到的,我們的資料被分散在兩台主機資料庫上了
所以目前我們使用的SQL查詢工具(水晶、資料庫瀏覽工具...等)
純下 SQL 很難同時 union 這兩個資料庫的查詢結果,一定得用程式語言來搭配...
※ 引述《in09 ()》之銘言:
: ※ 引述《asklove (是問愛不是要愛b)》之銘言:
: : 不知道有沒有人遇過或想過這個問題
: : 如果有一個線上交易系統,平均每天都會產生30多萬筆交易資料,暫定大約50MB好了
: : 如果就這樣放任不管讓資料都放在同一張交易資料表的話,那麼這張表將會增長得很快
: : 一個月就會有將近1000萬筆交易資料,佔去硬碟空間約1.5G
: 有的, 一個月 150G 都不是什麼希奇的事 (我說真的)
: : 長此以往,有可能會超出DBMS或OS的檔案系統限制嗎? (順便問一下 MySQL 的限制是?)
: 一定會, 所有 OS 和 DBMS 都有上限.
: : 而且可想而知,對這個資料表進行搜尋時將會越來越慢、
: : 資料表的維護、建立索引等工作也將越來越困難
: : 當發生這種情形,又不可以將以前的交易資料捨棄,在面對日益增多的交易資料時,
: : DBA應該要採取哪種措施,來讓使用者可以正常進行交易資料的查詢、每日新資料的進入,
: : 並維持DB不至於崩潰呢?
: MySQL 我不清楚, 很多貴死人的資料庫, 如 DB2, Oracle 都已經考慮到這類的事
: 有很多不同的做法, 不過, 有個老前輩說, 這種資料其實不適合放在 relational db
: =_=|||
: 目前我看到的, 都是一開始設計 DB 時, 就得考慮進去. 然後 applicaiton 要配合.
: DB2 有些機制可以支援讓 DB/AP 都可以不用想太多, 不過, 一來貴,
: 二來, 其實 DB 維護的工作不輕 ( IBM 宣稱說很簡單啦 )
: : 1.將一定時間以前(如六個月前)的資料全部備份到另一台離線主機上。
: : (缺點,查詢時只能查到一部份資料,且備份主機依然會有上述的問題,
: : 而使用者還是有需要查詢以前的交易資料)
: : 2.將固定時間範圍內的資料(如半年)分散放到多台主機DB,順便分散loading(有錢的作法)
: : 需要搜尋時就用程式去判斷需要的資料是什麼月份,再去那個主機DB尋找。
: : (不過要在查詢時將不同DB資料合在一起,我還沒學會怎麼純下SQL而不需程式流程
: : 輔助...有人會嗎?)
: 這個, DB2 有這種功能喔, 錢花下去就有了, 用起來就像在一台機器上工作而已.
: 我寫過一點點簡單的, 利用 ODBC/CLI 連到不同主機上的 DB.
: 程式不算太難, 可是資料庫在設計時要想一下, 我加了些 summary table.
: 以便彙整資料, 不然把所有資料讀進來再用程式整理, 效率會很差
: : 3.一個月建立一張新的交易資料表在備份主機,且每日備份資料,
: : 需要搜尋時就用程式去判斷需要的資料是什麼月份,再去那個資料表尋找。
: : (同一個資料庫下比較好下SQL)
: 這個我們用過, 有些資料可以, 有些有實際上的困難, 程式變得複雜很多,
: 而且效率差, 所以, 一樣, 我們又建了些 summary , 把常用查詢生出另一個 table.
: : 4.禁止使用者存取一定時間以前的資料。(超爛的方法,會被打死吧 XD)
: 這個我們算是用過吧 ? 一定時間以前的資料, 要先申請,
: 要用人工( 或其它要花錢的自動化方法 ), 把舊的儲存體 mount 上來,
: 然後才能查詢.
: 最貧窮的作法就是, 備份的 DB, 儲存路徑設在光碟機上
: 要用時才放入光碟, start database, 開始用, 很累吧 ^_^
: : 5.其他我還沒想到的方法。
: : 請高手分享一下資料庫的管理心得....謝謝。
--
答答的馬蹄聲
我不是歸人,也不是過客,
我.........................................是馬......>"<
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.171.1.105
討論串 (同標題文章)