gpt4 book ai didi

mysql - 创建索引耗时过长

转载 作者:IT老高 更新时间:2023-10-29 00:17:17 27 4
gpt4 key购买 nike

大约 2 个月前,我将 EnWikipedia 数据(http://dumps.wikimedia.org/enwiki/20120211/)导入 mysql。

EnWikipedia 数据导入完成后,我在 mysql 中的 EnWikipedia 数据库的表中创建索引大约 2 个月。

现在,我已经到了在“pagelinks”中创建索引的地步了。

但是,似乎需要无限的时间才能通过这一点。

因此,我检查了剩余时间,以确保我的直觉正确与否。

结果,预计剩余时间为60天(假设我从头开始再次在“pagelinks”中创建索引。)

My EnWikipedia database has 7 tables: 
"categorylinks"(records: 60 mil, size: 23.5 GiB),
"langlinks"(records: 15 mil, size: 1.5 GiB),
"page"(records: 26 mil, size 4.9 GiB),
"pagelinks"(records: 630 mil, size: 56.4 GiB),
"redirect"(records: 6 mil, size: 327.8 MiB),
"revision"(records: 26 mil, size: 4.6 GiB) and "text"(records: 26 mil, size: 60.8 GiB).

我的服务器是...Linux 版本 2.6.32-5-amd64 (Debian 2.6.32-39),内存 16GB,2.39Ghz Intel 4 core

创建索引需要这么长时间是常见的现象吗?有没有人有一个更好的解决方案来更快地创建索引?

提前致谢!


P.S:我做了以下操作来检查剩余时间。

引用资料(对不起,下页是日文):http://d.hatena.ne.jp/sh2/20110615

第一。我在“pagelink”中有记录。

 mysql> select count(*) from pagelinks;
+-----------+
| count(*) |
+-----------+
| 632047759 |
+-----------+
1 row in set (1 hour 25 min 26.18 sec)

第二。我得到了每分钟增加的记录数量。

getHandler_write.sh

 #!/bin/bash

while true
do
cat <<_EOF_
SHOW GLOBAL STATUS LIKE 'Handler_write';
_EOF_
sleep 60
done | mysql -u root -p -N

命令

$ sh getHandler_write.sh
Enter password:
Handler_write 1289808074
Handler_write 1289814597
Handler_write 1289822748
Handler_write 1289829789
Handler_write 1289836322
Handler_write 1289844916
Handler_write 1289852226

第三。我计算了录制速度。

根据2.的结果,记录的速度是

 7233 records/minutes

第四。那么剩余时间为

 (632047759/7233)/60/24 = 60 days

最佳答案

这些表都很大,所以我预计索引会很慢。 6.3 亿条记录是需要索引的大量数据。要看的一件事是分区,如果数据集很大,没有正确分区的表,性能就会很低。以下是一些有用的链接: using partioning on slow indexes您还可以尝试查看用于构建索引的缓冲区大小设置(默认值为 8MB,对于您的大表,这会减慢您的速度。buffer size documentation

关于mysql - 创建索引耗时过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10121521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com