我正在設置一個系統來爲我運行的網站的用戶託管WordPress博客。目前,在一個數據庫和不同的博客中,事情運行得很好,使用自己的前置表(user1_posts
,user_posts
等)。更多的表或更多的數據庫?
儘管到目前爲止工作,它感覺有點混亂。如果這個數據庫有4000個表,那會是一個問題嗎?把它分成400個數據庫會更好嗎? (或者我錯過了這樣做的更聰明的方法?)
謝謝!
我正在設置一個系統來爲我運行的網站的用戶託管WordPress博客。目前,在一個數據庫和不同的博客中,事情運行得很好,使用自己的前置表(user1_posts
,user_posts
等)。更多的表或更多的數據庫?
儘管到目前爲止工作,它感覺有點混亂。如果這個數據庫有4000個表,那會是一個問題嗎?把它分成400個數據庫會更好嗎? (或者我錯過了這樣做的更聰明的方法?)
謝謝!
一個CUSTOMER_ID列添加到您的表,然後轉到垂直
你在做什麼本質上是給他們一個單獨的數據庫爲每個用戶的數據將是孤立存在的。我可能會建議將它們分解到他們自己的數據庫中。
問題在於,如果您有一張表格,所有用戶都在共享他們的數據。那時你需要考慮是否要將數據保存在一個地方或單獨使用
將數字引入列名稱,表名或數據庫名稱的那一刻,您很可能會有問題。
雖然有這個規則的例外,他們是罕見。請注意。
fwiw,這正是WordPress MU所做的一切,我有機會惹惱它。它最終會創建wp_1_posts,wp_2_posts等。 假設它運行的是wordpress.com,所以在這種情況下它不會太糟糕。 – 2009-10-23 11:01:52
通過這個邏輯,Windows是一個卓越的操作系統,只是因爲每個人都使用它! :-) – 2009-10-23 21:20:47
根據表的大小和數據庫軟件的不同,您可能需要考慮分區。
如果該表不大,並且不需要最終安全性,那麼使用customer_id列將起作用。
模式中的4000個表是非常大的,它可能會或可能不會導致性能問題 - 取決於數據庫。
維護400個數據庫可能會成爲一個很大的麻煩。仔細想想日常維護 - 備份,升級等,以及在有400個數據庫時如何做。我個人會避免這條路線。
也許一條中間道路?一個數據庫爲每50個客戶?
這取決於你使用的是什麼引擎。如果你使用MyISAM,如果你有比my.cnf中設置的表緩存大小更多的表,性能會非常糟糕。
將表緩存設置爲>表的總數是至關重要的,否則它將不得不打開和關閉表,這會泄漏關鍵緩衝區中的索引緩存,這意味着堆不必要的IO。
如果您使用多個數據庫或同一個數據庫,它沒有任何區別,MyISAM的表緩存具有安全效果。
同樣的事情可能發生其他引擎,但我覺得效果顯着得多(關閉表時,如InnoDB中不會失去它的高速緩存,但它仍然不是免費的)
4000表是一個有點大。
如果你打算在不同的數據庫拆分你的表...你可以看看有元數據庫安排..一個元DB坐在了包含不同的數據庫以及連接的詳細信息...共同信息的所有不同的數據庫..這樣,你應該能夠輕鬆擴展..並與現有的運行系統..你將需要剛剛超過你的元DB的包裝來支持你正在運行的應用...
我不知道多少,這會幫幫我!!!!
重複:http://stackoverflow.com/questions/1580540/max-tables-design-pattern/1581021#1581021 – 2009-10-22 02:04:32