2012-03-22 96 views
0

我爲My Company設計了一個新論壇,並且我想確認將論壇帖子保存在MySQL數據庫中將具有可擴展性並且具有良好性能。 帖子可能有400左右的字符(可能我會限制爲400字符)。如果我在MySQL字段中保存了400個字符的文本,並且表中有1000萬行,會影響性能。 我的主要限制是性能。可以請人闡明這一MySQL字段中的最大數據長度

回答

5

有兩種數據類型來考慮VARCHAR或TEXT

你決定什麼數據類型取決於

  • 你怎麼經常顯示呢?
  • 您存儲

TEXT和BLOB的字符總數存儲假表與表只是有一個指針實際存儲的位置。

VARCHAR與表格內嵌存儲。當尺寸合理時,VARCHAR會更快,其折衷取決於您的數據和硬件,因此您希望使用您的數據對真實世界進行基準測試。

如果數據經常被檢索(包括在大多數查詢中),VARCHAR(內聯存儲)通常更快。但是,對於通常不會被檢索到的大量數據(即沒有被任何查詢引用),那麼最好不要將數據存儲在內聯中。對於行內存儲的數據,行大小有一個上限。

當一個表具有TEXT或BLOB列時,該表不能存儲在內存中。這意味着每個查詢(沒有命中緩存)必須訪問文件系統 - 這比內存慢了幾個數量級。

如果您發佈的內容是大量使用文本字段,但文本字段存儲在其中,當你真正需要它只是訪問一個單獨的表。這樣原始表格可以存儲在內存中,並且速度會更快。

把它看作是把數據分成一個「內存表」和一個「文件表」。這樣做的理由是爲了避免訪問文件系統,除非需要(即只在需要文本時)。

你可以嘗試(posts,post_text)或(post_details,posts)或類似的東西。