MySQL 8.0版本说明
MySQL 8.0源代码文档10bet官方网站
要优化插入速度,可以将许多小操作合并为单个大操作。理想情况下,您可以建立一个连接,一次为许多新行发送数据,并将所有索引更新和一致性检查推迟到最后。
插入一行所需的时间由以下因素决定,其中数字表示近似比例:
连接:(3)
向服务器发送查询:(2)
解析查询:(2)
插入行:(1 ×行大小)
插入索引:(1 ×索引个数)
关闭:(1)
这没有考虑打开表的初始开销,对于每个并发运行的查询都要执行一次。
表的大小减慢了按日志插入索引的速度N
,假设b树索引。
您可以使用以下方法来加速插入:
如果您同时从同一个客户端插入许多行,请使用
插入
具有多个语句的语句值
列表一次插入几行。这比使用单独的单行要快得多(在某些情况下要快很多倍)插入
语句。如果向非空表添加数据,则可以调优bulk_insert_buffer_size
变量使数据插入更快。看到第5.1.8节,“服务器系统变量”.从文本文件加载表时,使用
加载数据
.这通常比使用快20倍插入
语句。看到第13.2.7节“LOAD DATA语句”.利用列具有默认值这一事实。只有当要插入的值与默认值不同时,才显式插入值。这减少了MySQL必须进行的解析,并提高了插入速度。
看到第8.5.5节“InnoDB表的批量数据加载”关于特定于
InnoDB
表。看到第8.6.2节,“MyISAM表的批量数据加载”关于特定于
MyISAM
表。