InnoDB提高数据insert效率

如果local_infile 被禁用,InnoDB中怎么提高insert的效率呢?

1.尽量保持数据有序。减少数据插入时对索引的维护成本。
2.一次插入多条数据。减少日志,降低日志刷新磁盘的频率。减少sql解析次数。
3.在事物中进行插入。
减少事物创建的消耗。但也要控制事物的大小,最好不超过innodb_log_buffer_size。
SET autocommit=0;
INSERT INTO table_name VALUES (1,1,10),(2,1,20),(3,1,30);
COMMIT;

如果有唯一约束和外键也可以考虑临时禁用。
禁用唯一约束
SET unique_checks=0;
... SQL import statements ...
SET unique_checks=1;

禁用外键
SET foreign_key_checks=0;
... SQL import statements ...
SET foreign_key_checks=1;

4.尽量保证主键足够小,且表上没有多余的索引。
5.如果允许,考虑临时关闭二进制日志。
6.确保innodb_buffer_pool_size,innodb_log_buffer_size,max_allowed_packet 足够大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值