發生了什麼事情的簡短回顧。我正在處理7100萬條記錄(與其他人處理的數十億條記錄相比,數量並不多)。在另一個thread上,有人建議我的羣集的當前設置不適合我的需要。我的表結構是:帶有8000萬條記錄並添加索引的表需要超過18小時(或永遠)!怎麼辦?
CREATE TABLE `IPAddresses` (
`id` int(11) unsigned NOT NULL auto_increment,
`ipaddress` bigint(20) unsigned default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
我加71萬條記錄,然後做了一個:
ALTER TABLE IPAddresses ADD INDEX(ipaddress);
它已經14小時,該操作仍然沒有完成。在谷歌搜索,我發現有一個衆所周知的方法來解決這個問題 - 分區。我知道我需要現在基於ipaddress分區我的表,但是我可以在不重新創建整個表的情況下執行此操作嗎?我的意思是,通過一個ALTER語句?如果是的話,有一個要求說要分區的列應該是主鍵。我將使用這個ipaddress的id來構造一個不同的表,所以ipaddress不是我的主鍵。在給定此場景的情況下,如何分區我的表格?
MySQL自己的分區文檔:http://dev.mysql.com/doc/refman/5.1/en/partitioning.html – 2010-09-12 19:06:46
id字段完全是不必要的。 – 2010-09-12 22:04:43
@Seun:在這種情況下,如果我想要構建一個包含say,URI | ipaddress的表,並且想要使用與ip地址關聯的id,我將如何做到這一點?我試圖規範一個不同的表格,首先要求創建這張表格。有什麼建議麼? – Legend 2010-09-12 22:09:10