我将9500万行9列的文件上传到了具有32 Gb内存的工作站上的MySQL数据库。它们是遗传数据,第一列是染色体编号(chr TINYINT)和基因组位置(pos BIGINT)。我正在尝试在chr和pos的MySQL Workbench 8.0中创建索引,但是索引要花几个小时才能超时。
我还尝试仅在染色体上索引(这只是从1到22的带符号TINYINT),但没有成功。像这样挂几个小时索引是否正常? Windows任务管理器说我只使用8 Gb的内存。
答案 0 :(得分:0)
当我使用SQL时,对我有用的一个技巧是-在上传数据之前添加索引。
在执行create table语句后,立即添加
ALTER TABLE <table_name> ADD KEY ...
然后开始上传。
如果转储中有CREATE TABLE ...
条语句,请确保它也有IF NOT EXISTS
并且没有DROP TABLE ...
。
我不确定Windows,但是对于我作为MySQL操场服务器使用的Ubuntu,16Gb RAM足以处理50M +行表。