2011-06-28 69 views
1

我經歷了一些mysql的文檔,但無法理解以下分區方式的差異:Key vs Hash vs List vs Range.Can某人可以用純英語解釋嗎?Msql分區 - 關鍵與哈希vs列表與範圍

另外我們有如下表格:我們如何通過forum_id進行分區?

CREATE TABLE IF NOT EXISTS `posts_content` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `post_id` int(11) NOT NULL, 
    `forum_id` int(11) NOT NULL, 
    `content` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=79850 ; 

感謝您

回答

3

密鑰和散列意味着,如果你定義3個分區爲forum_id,那麼對於forum_id 1,3和7中的記錄可以到分區1中的記錄將是隨機分佈的,例如,2和4分區2,5和6分區3. 在列表和範圍中,您可以定義哪些數據轉到哪個分區,並且如果您基於日期進行分區,則優先選擇它們,以確保所有最近的帖子將在同一個分區上。通常你必須避免使用多個分區的查詢。出於這個原因,您首先需要知道您的數據訪問模式,然後選擇正確的分區類型。