为了优化插入速度,请将许多小操作合并为一个大操作。理想情况下,您进行单个连接,一次发送许多新行的数据,并将所有索引更新和一致性检查延迟到最后。
插入行所需的时间由以下因素决定,其中数字表示近似比例:
- 连接:(3)
- 向服务器发送查询:(2)
- 解析查询:(2)
- 插入行:(1×行大小)
- 插入索引:(1×索引数)
- 关闭:(1)
这没有考虑到打开表的初始开销,该开销对于每个同时运行的查询都执行一次。
*N*假设B树索引, 表的大小会减慢按log插入索引的速度。
您可以使用以下方法来加快插入速度:
- 如果要同时从同一客户端插入许多行,请使用
INSERT具有多个VALUES列表的语句一次插入多个行。这比使用单独的单行INSERT语句要快得多(某些情况下要快很多倍)。如果要将数据添加到非空表,则可以调整bulk_insert_buffer_size变量以使数据插入更快。请参见 第5.1.8节“服务器系统变量”。 - 从文本文件加载表格时,请使用
LOAD DATA。这通常比使用INSERT语句快20倍 。请参见 第13.2.7节“ LOAD DATA语句”。 - 利用列具有默认值的事实。仅当要插入的值与默认值不同时才明确插入值。这减少了MySQL必须执行的解析并提高了插入速度。
- 有关表的 特定提示,请参见第8.5.5节“为InnoDB表加载大数据”
InnoDB。 - 有关 特定于表的提示,请参见第8.6.2节“为MyISAM表批量加载数据”
MyISAM。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




