Database-Design
正確的數據庫分區
我曾經問過一個問題“儲存使用者事件數據的正確技術”,我認為正確的答案是創建一個數據庫分區。現在從我讀過的內容來看,有不同的分區方法,但是對於這個問題,我們將假設我們正在使用 RDBMS(如 MySQL)上的日期欄位進行水平鍵分區……(如果您有異議或對此的論點,無論如何都有貢獻)。
基本問題是您如何知道要創建多少個分區?
我知道這是一個非常開放的問題,因為它也將嚴重依賴於您執行它的硬體,但無論哪種方式,都應該有一些指導方針指出更好的性能在哪裡,或者這樣做的正確方法,甚至你會如何判斷這樣的事情?我發現的大多數文件都使用諸如“大”、“大”、“很多”之類的術語……當涉及到訪問速度或行數、效率與儲存或所需硬體時,這些術語是什麼意思。是從反複試驗或觀察到的性能中,如果事情開始變得有點粗糙,您只需添加一個或兩個分區?
我對大型數據庫方案中這個看似常見的障礙的意見和矛盾非常感興趣。
謝謝
我會告訴你我在定義“大”、“大”、“很多”這些術語時的經驗:
- a lot是一個數據庫,需要大約 400 GB 來儲存一整月的數據(來自我們所有 Web 應用程序的自定義日誌資訊)
- big是這個數據庫中的一個表,其中包含大部分空間:-).. 大約是這個大小的一半(一個表 200 GB,據我記得)
- large是一整天的數據(大約 12-15 GB) - 這意味著該魔術表的分區
這不是規則或最佳實踐。但是當您覺得目前的索引策略有點失去並且似乎沒有什麼可以使您的查詢更快時,我相信是時候考慮分區了。