Performance
龐大的數據庫如何處理新使用者?
我的問題是關於數據庫設計的。您如何為具有大量行數的數據庫設計模式?例如訪問日誌:您可以創建一個表**訪問(日期、使用者、端點),**但是對於具有大量使用者的系統,這將很快導致表中的行數不可用。
作為一種解決方案,我的想法是為每個新使用者創建一組表:在我們的模型案例中只是access_user_1001(…)。這將隨著使用者數量的增長而水平擴展。
是否完全使用了這種方法,還是以某種方式處理大表更好?
分割
您所設想的概念已經被各種數據庫在名為
PARTITION
.不同之處在於:所有這些小表(分區)在您的應用程序中看起來和感覺都像是一個表。
描述“我將數據放在哪個表中?”的函式 是
CREATE TABLE
當時定義的。數據根據分區鍵(列中數據的值)進行分區。(取決於 RDBMS)您可以按範圍、值列表或散列函式的結果對數據進行分區。有些 RDBMS 可以根據您的需要自動為您創建分區(例如 Oracle 的間隔分區)。根據我的經驗,大多數情況下,分區是在某些
DATE
列的值上完成的。這樣,可以“在眨眼之間”從數據庫中刪除大量數據(根據您的法律部門的要求)您需要
PARTITION
用於大數據嗎?這取決於。
在某些情況下,是的。在其他情況下,否。
如果您的查詢可以利用分區修剪(根據您的
WHERE
子句僅查看少數小表),那麼分區可能適合您。