往mysql里面导入1000w数据_批量向mysql导入1000万数据有什么方法

本文探讨了在MySQL中批量导入1000万级别数据的优化方法,包括选择合适的数据库引擎如InnoDB和MyISAM,设置SQL批处理缓存,利用insert语句批量插入,调整数据库配置,通过本地数据库导入,以及代码级别的batch批处理。同时,文章还提醒注意索引对写入速度的影响,建议在数据稳定后再创建索引。
摘要由CSDN通过智能技术生成

千万级数据批量导入mysql的优化

1.数据库引擎:

常见的索引引擎

InnoDB,现在默认的引擎,支持外键、行锁、事务。默认是一句一事务,一句一提交。事务是需要开启的,并提交或回滚来关闭的。批量录入数据,手动开启事务,并手动提交。开启事务:start transaction;提交事务:commit;回滚事务:rollback。读写效率均等,没有特别突出的地方。InnoDB对表格的管理是基于但文件的。文件包括表头、约束、数据等信息。

MyISM,推荐的读库引擎,没有事务,支持索引。写效率相对于InnoDB较低,读效率相对于InnoDB高很多。MyISAM对表格的管理是基于多文件的。有表头文件、约束文件、数据文件。

MGR_MyISM,对MyISAM的一个变形优化,对表的信息做了一个额外的索引管理。

MEMORY,内存引擎,数据只存储在内存,不落地到磁盘。通常应用在启动数据库的同时创建若干视图,视图使用内存引擎管理(不安全操作,对视图可写,会同步到表格)。也应用在,应用启动时,提供一个临时的表格,存储应用常用的,几乎不变的数据(如:电商中的商品类型)。

sql解析效率低,与Nosql比较

2.批量sql

insert into table_name() values();----单条数据录入

insert into table_name() values(),(),();—多条数据录入。带有缓存的。可以通过命令配置,也可以通过配置文件配置。单条sql不要录入过多的数据。通常不超过3M~10M.

3.数据库配置:DBA处理

配置SQL批处理缓存:

配置是否记录binlog,不推荐关闭

配置IO缓存

4.本地数据库导入:DBA处理—效率高

通过txt或csv文件做本地导入,mysqlimport xxx文件

5.代码级开发

batch批处理。找临界值,循环多次访问数据库,批量写入。

如:临界值是2000条数据。

int i = 0;

while(){

if(i++ % 2000 == 0){

executeBatch();

}

addBatch();

}

executeBatch();

6.索引问题

索引只提升读效率,会降低写效率。

降低写效率的原因:

索引是写入数据过程中维护的,将索引字段的值进行比较处理,并保存在一个树下,树是B[+]Tree。平衡树,查询效率高,维护效率低。

推荐是索引使用方式是:建表时,先不创建索引,当数据相对趋于稳定,或正式商业发布时,创建索引。

索引是先内存维护,索引内存空间不足,需要持久化到磁盘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值