MySQL的插入限制分析

1、如果多行插入来自同一客户端的同时,几行被插入在同一时间使用一个包含多个值的INSERT语句。这比使用一个单一的线插入语句的速度(在某些情况下多次)。如果你将数据添加到一个非空表,你可以调整bulk_insert_buffer_size变量进行数据插入速度更快。看到5.3.3部分服务器的系统变量。

2、如果你插入大量的线从不同的客户,可以加快通过延迟插入语句。看到13.2.4部分插入语法。

三.MyISAM,如果行不在表中删除,你可以插入线在SELECT语句运行。

4,当一个表是一个文本文件加载,加载数据文件使用。这通常比许多INSERT语句快20倍。看到13.2.5节,LOAD DATA INFILE语法。

5。当一个表有很多指标,可以做更多的工作来让LOAD DATA INFILE更快。使用下面的过程:

1)。创建有选择的创建表的表。
2)。执行FLUSH TABLES语句或mysqladmin flush-tables命令。
3)。用myisamchk -键用= 0只/路径/ / / tbl_name.this DB将取消从表中所有指标的使用。
4)。插入数据到表加载数据文件,因为它不更新任何指数,所以很快。
5)。如果你只想读表后,使用MyISAMPack进行压缩。看到15.1.3.3段,压缩表的特点。
6)。该指数是重新用myisamchk - R Q / / /数据库路径 / tbl_name.this写入磁盘之前将在内存中创建一个索引树的创建,它会更快,因为它避免了大量的磁盘搜索。结果,索引树也是完美的平衡。
7)。执行FLUSH TABLES语句或mysqladmin flush-tables命令。

6,锁表可以加快用多个语句执行的插入操作:

*锁定表一个写;
*插入值(1,23),(2,34),(4,33);
*插入值(8,26),(6,29);
*解锁表;

这种性能会提高,因为在所有INSERT语句完成后,索引缓存只刷新到磁盘一次。INSERT语句的数量通常刷新了多少个索引缓存区域。如果您可以用一个语句插入所有行,则不需要锁定它。

对于事务表,应该使用起始和提交而不是锁定表来加快插入速度。