我想如何設計一個表,每天獲得10到5000萬個插入,並且需要快速響應以選擇......我應該使用索引嗎?或者開銷成本太高了?高插入率的設計表
編輯:我不擔心交易量......這實際上是一個分配...我需要弄清楚一個表的設計,「必須非常好地響應選擇不基於主鍵,知道這張桌子肯定會收到一大筆插入日的「
我想如何設計一個表,每天獲得10到5000萬個插入,並且需要快速響應以選擇......我應該使用索引嗎?或者開銷成本太高了?高插入率的設計表
編輯:我不擔心交易量......這實際上是一個分配...我需要弄清楚一個表的設計,「必須非常好地響應選擇不基於主鍵,知道這張桌子肯定會收到一大筆插入日的「
。至少主鍵,外鍵,然後無論你需要報告,只是不要過分。 10k-50k一天插入不成問題。如果是這樣,我不知道,有一百萬個插入,那麼你可以開始考慮有單獨的表,數據字典和什麼不是,但爲了您的需要,我不會擔心。
最佳費率是PK排序與插入順序相同,沒有其他索引。每天10-50萬不是那麼多。如果只是插入,那麼我不會看到任何髒的讀取方向。
如果您正在優化select,那麼使用行級別鎖定插入。
測量索引碎片。定期使用適當的填充因子對索引進行碎片整理。填充因子決定了索引碎片的速度以及碎片整理的頻率。
即使您每天做了50,000個工作,而您的一天工作時間爲8個小時,平均每秒仍然少於兩個插入。我想你可能會得到比這更高的峯值,但總的來說,SQL Server可以處理比你似乎擁有更高的事務處理速率。
如果您的表格相當寬(大量列或幾個非常長的列),那麼您可能需要考慮通過代理(IDENTITY)列進行聚類。你的音量不足以彌補桌子末端的不良熱點。結合這一點,對於數據一致性(即FK)和檢索(PK,自然鍵等)所需的任何鍵使用索引。請謹慎設置索引上的填充因子,並考慮在週期性停機時間窗口中重建它們。
如果您的表格非常狹窄,那麼您可以考慮對自然鍵進行聚類,但是您必須確保滿足您的響應時間預期。
tks!我已更新問題以評論你的答案 – Leonardo
如果這是家庭作業,那麼它應該被標記爲家庭作業。每天50 K並不是很大。 – Paparazzi
好的...現在5000萬... – Leonardo