爲包含1.5 * 10**8條記錄的表設置主鍵, 大約需要多長時間?

2012-04-23 13:01:32 +08:00
 013231
一張表, 只有一列, bigint型, 包含一億五千萬條記錄. 插入數據時爲保證插入速度, 沒有設置索引.
插入完成後, 我使用
ALTER TABLE hashes MODIFY hash BIGINT PRIMARY KEY;
將此列設置爲主鍵. 可是已經30+小時了, 此命令仍未完成.
機器是Linode 512, 完成此命令大約需要多長時間?
2740 次点击
所在节点    MySQL
5 条回复
napoleonu
2012-04-24 19:38:23 +08:00
看机器性能,你可以找个性能好的机器加好再传上去,特别是IO性能好。 Linode 512 有的玩了。
road2stat
2012-04-24 22:25:01 +08:00
KDD Cup 2012 track2?
013231
2012-04-25 20:29:19 +08:00
@napoleonu 在我的Mac mini上進行(2.4G Core2 Duo, 8 GB 1067 MHz DDR3, 320 GB SATA Disk), 1小時43分就完成了. 不知爲何Linode 512上如此的慢.
@road2stat 不是.
Livid
2012-04-25 20:33:17 +08:00
(8 * (1.5 * 10000 * 10000) ) / (1024*1024) = 1144.4091

这张表不可能在 512MB 的机器上不吃交换运行的(你可以用 iostat 看一下),1.5 亿个 bigint 在内存里至少有 1.1G。
013231
2012-04-25 20:43:33 +08:00
@Livid 這我知道, 可是沒想到如此的慢(40+小時還沒完成, 然後被我終止了).
對了, 我在兩臺機器上使用的語句不同:
Linode上是:
ALTER TABLE hashes MODIFY hash BIGINT PRIMARY KEY;
Mac mini上是:
ALTER TABLE hashes ADD PRIMARY KEY (hash);
這兩種語句的效率相同嗎?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/33037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX