我正在尝试创建 Wikipedia DB 副本(大约 50GB),但在处理最大的 SQL 文件时遇到问题。
我使用 linux split 实用程序将 GB 大小的文件拆分为 300 MB 的块。例如
split -d -l 50 ../enwiki-20070908-page page.input.
在我的服务器上,300MB 的文件平均需要 3 个小时。我有 ubuntu 12.04 服务器操作系统和 Mysql 5.5 服务器。
我正在尝试如下:
mysql -u username -ppassword database < category.sql
注意:这些文件由 Insert 语句组成,不是 CSV 文件。
维基百科提供数据库转储供下载,因此每个人都可以创建维基百科的副本。
您可以在此处找到示例文件:维基百科转储 http://dumps.wikimedia.org/enwiki/20091103/
我认为导入速度很慢,因为我的 MySQL 服务器的设置,但我不知道应该更改什么。我在一台具有不错的处理器和 2GB RAM 的机器上使用标准的 Ubuntu MySQL 配置。有人可以帮我为我的系统进行合适的配置吗?
我尝试将 innodb_buffer_pool_size 设置为 1GB 但没有成功。
由于您的内存少于 50GB(因此您无法在内存中缓冲整个数据库),因此瓶颈是磁盘子系统的写入速度。
加快导入速度的技巧:
- MyISAM is not transactional, so much faster in single threaded inserts. Try to load into MyISAM, then
ALTER
the table to INNODB
- Use
ALTER TABLE .. DISABLE KEYS
避免逐行更新索引(仅限 MyISAM)
- Set
bulk_insert_buffer_size
高于您的插入大小(仅限 MyISAM)
- Set
unique_checks = 0
这样就不会检查唯一约束。
有关更多信息,请参阅InnoDB 表的批量数据加载在 MySQL 手册中 http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html.
Note:如果原始表有外键约束,那么使用MyISAM作为中间格式是一个坏主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)