※ 引述《iamnotfat (我不肥)》之銘言:
: 假設我現在有一個系統 內含手機號碼為primary key,共一百萬筆
: 但我不確定門號分布,所以我可以用hash partition or range partition
: 不知道大大們會選用哪一種
: ex1:
: range partition:
: 0910
: 0920
: 0930
: .
: .
: .
: 0990....etc
: 但為了performance問題仍可在細切....例如每五萬筆再另開一個partition
: ex2:
: hash partition
: hash 20 切成二十個等分
以我個人的經驗, Oracle 在幾千萬筆以內, 假如 index 做的好, 完全沒有必要partition,
我以前做的系統每秒約200筆交易, 系統維持14天的紀錄, 隨時有上億筆資料在線上, 用
Oracle 8.1.7, 沒有需要 partition.
也試過 hash index, 反而比較慢.
在一個特定情況下partition table才會比較快, 那就是每天新增一個新 partition 並移除
一個不需要的舊 partition代替 delete 那些舊紀錄,會稍快一些,但要把建 partition 的
程式碼放在 Oracle 的Queue 或 cron 裡, 在production系統上我不太放心.
B tree index, 資料存取時間是 O(log n), 分割成 1/20應該不會有明顯的加速.
且 fragmentation 可能更嚴重除非你一個 partation 放在一個硬碟裡.
--
Do not depend on others without effort...
當我年輕時,請教別人問題時常聽到上面那句話. 當時心裏偶而會有些小小抱怨.
當時間過去,我偶而會想到上面那句話, 心中十分感謝當初告訴我那句話的人.
當發現問題時,最有價值的不是問題的答案,
而是找到解決的方向,並在努力的過程裡具備解決問題的能力.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.169.217.133