2010-04-09 98 views
8

我正在研究一個涉及來自美味網站的大量數據的項目。可用數據是「Date,UserId,Url,Tags」(針對每個書籤)。針對數據量非常大的數據庫設計

我將我的數據庫規範化爲3NF,並且由於我們想要組合使用的查詢的性質,我下降到了6個表格......然而,設計看起來很好,現在大量的數據在數據庫中,大多數查詢需要將至少兩個表一起加入以獲得答案,有時候是3或4.起初,我們沒有任何性能問題,因爲對於測試問題,我們沒有添加太多數據到數據庫。既然我們有大量的數據,那麼只需加入非常大的表格就需要很多時間,而且我們的項目必須是實時的,這是一場災難。

我想知道有多大公司解決這些問題。看起來規範化表只會增加複雜性,但大公司如何處理其數據庫中的大量數據,是不是使用規範化?

謝謝。

回答

13

既然你問到大公司(一般)如何處理這樣的:

他們通常有誰根植公司使用的數據庫DBA(數據庫管理員)。

這意味着他們擁有了解如何以最佳方式設計表,配置文件和調整查詢/索引/操作系統/服務器以瞭解可能導致數據庫問題的RAID控制器固件版本的所有信息。

你不會談論你做過什麼樣的調整,

  • 您是使用MyISAM還是InnoDB表?他們的性能(而不是他們的功能)對於不同的工作負載而言是截然不同的。
  • 表根據您運行的查詢是否正確索引?
  • 對所有查詢運行EXPLAIN - 這將幫助您識別可以添加/刪除的密鑰,選擇正確的密鑰,比較查詢(SQL留下很多方法來完成相同的事情)
  • 有你調整了查詢​​緩存?對於某些工作負載,查詢緩存(默認爲on)會導致相當大的減速。
  • 你的盒子有多少內存,是mysql調整來利用這個優勢?
  • 您是否使用面向數據庫的文件系統和raid設置?
  • 有時需要稍微去標準化。
  • 不同的數據庫產品將具有不同的特徵,對於某些worlkoads,MySQL可能會非常快速,而對其​​他數據庫則會很慢。
+3

感謝您的回覆。老實說,我沒有想到你在這裏提到的東西。現在我意識到我在設計數據庫時忽略了很多。數據庫使用MyISAM。我會閱讀你提到的事情。非常感謝 – Hossein 2010-04-10 08:56:36

相關問題