Mysql 性能问题:在数据库中导入数据
我正在使用MySQL v5.1 我的简单场景是,将大量数据从一个数据库中的一个表导入另一个数据库中的另一个表。而另一个数据库中的表(数据将插入的位置)将首先被截断 具体来说,假设我有两个数据库,分别名为“db_one”和“db_two” db\u one有一个名为Mysql 性能问题:在数据库中导入数据,mysql,sql,database,indexing,Mysql,Sql,Database,Indexing,我正在使用MySQL v5.1 我的简单场景是,将大量数据从一个数据库中的一个表导入另一个数据库中的另一个表。而另一个数据库中的表(数据将插入的位置)将首先被截断 具体来说,假设我有两个数据库,分别名为“db_one”和“db_two” db\u one有一个名为db\u one\u cars的表,其中包含6000000条记录(数据量很大)。而db_two有一个名为db_two_cars的表,其中也包含大量数据 我将首先删除db\u two\u cars中的所有数据(截断表),然后将所有数据从d
db\u one\u cars
的表,其中包含6000000条记录(数据量很大)。而db_two有一个名为db_two_cars
的表,其中也包含大量数据
我将首先删除db\u two\u cars
中的所有数据(截断表),然后将所有数据从db\u one\u cars
导入到db\u two\u cars
。(注意:这两个表分别位于两个数据库中)
因此,我创建了一个sql文件,其内容如下:
TRUNCATE TABLE db_two_cars;
ALTER TABLE db_two_cars DISABLE KEYS;
INSERT INTO db_two_cars (car_id, name, customer, company_name)
SELECT id, CONCAT('c-', name), customer, company_name FROM db_one.db_one_cars;
ALTER TABLE db_two_cars ENABLE KEYS;
db\u one\u cars和db\u two\u cars表均为InnoDB表,结构相同,car\u id
用作主键
,公司名称
用作多列键
,客户
用作多列键
我想加快这大量数据的导入,同时也希望性能良好在导入数据后查询表
我的问题:
优化表db\u two\u cars
?为什么?(它会提高性能吗?我只是插入数据)ALTER TABLE db\u two\u cars PACK\u KEYS=0?
为什么?(它会提高性能吗)p.S.我指的性能包括加快数据导入速度,以及为将来的数据查询提供良好的性能以改进将数据导出到csv文件的过程 并使用以下命令将此文件加载到新表:
另一个加速的技巧你可以看看这个你的意思是加载数据填充比我使用的方式快得多?那么如何处理索引呢?关于处理索引,请参见:我仍然对我的第一个和第二个问题感兴趣,尽管加载数据填充可能是一个不错的选择。如果有人能回答我的前两个问题。