Performance

龐大的數據庫如何處理新使用者?

  • June 13, 2020

我的問題是關於數據庫設計的。您如何為具有大量行數的數據庫設計模式?例如訪問日誌:您可以創建一個表**訪問(日期、使用者、端點),**但是對於具有大量使用者的系統,這將很快導致表中的行數不可用。

作為一種解決方案,我的想法是為每個新使用者創建一組表:在我們的模型案例中只是access_user_1001(…)。這將隨著使用者數量的增長而水平擴展。

是否完全使用了這種方法,還是以某種方式處理大表更好?

分割

您所設想的概念已經被各種數據庫在名為PARTITION.

不同之處在於:所有這些小表(分區)在您的應用程序中看起來和感覺都像是一個表。

描述“我將數據放在哪個表中?”的函式 是CREATE TABLE當時定義的。數據根據分區鍵(列中數據的值)進行分區。(取決於 RDBMS)您可以按範圍、值列表或散列函式的結果對數據進行分區。有些 RDBMS 可以根據您的需要自動為您創建分區(例如 Oracle 的間隔分區)。

根據我的經驗,大多數情況下,分區是在某些DATE列的值上完成的。這樣,可以“在眨眼之間”從數據庫中刪除大量數據(根據您的法律部門的要求)

您需要PARTITION用於大數據嗎?

這取決於。

在某些情況下,是的。在其他情況下,否。

如果您的查詢可以利用分區修剪(根據您的WHERE子句僅查看少數小表),那麼分區可能適合您。

引用自:https://dba.stackexchange.com/questions/269092