关系数据库系统的查询优化

第1关:快速批量插入数据

任务描述
本关任务:掌握快速往表中插入大量数据。

相关知识
事情发生在很久很久以前,清晨刚来上班的小王接到一个紧急任务,领导要求他在下午前爬取 50 万条相关数据并导入公司的 MySQL 库中,一顿操作之后小王就把代码写完了,测试了几条数据之后小王觉得程序一点问题都没有,粗略估算下午前绝对可以把这项工作做完,随后就把程序放到生产环境中开始跑起来了。
不知不觉时间已过一大半,领导过来询问道:”工作进展如何呀?“,小王迷之自信的说:”一切顺利“,随后就打开数据库给领导看,然后他就傻眼了,实际入库的数据量只有预期的二十分之一不到,领导觉得大事不妙,赶紧叫小王把他的代码拿出来看一下,经验丰富的领导一眼就看出了问题所在,原因就在于小王爬取的数据入库效率非常低效,那小王的数据入库是怎么写的呢?

插入数据流程及耗时占比
用户插入一条数据进 MySQL 的大致流程及耗时占比如下:

连接:(30%);
发送查询给服务器:(20%);
分析查询:(20%);
插入数据:(10%);
插入索引:(10%);
关闭:(10%)。
从以上流程中我们不难看出,插入一条数据大部分的时间都消耗在了连接、分析以及关闭等过程上,真正插入数据占比很小,那么我们是不是可以把很多条数据放在一条SQL语句中,实现多条数据插入时共享一次连接,分析查询,关闭等步

猜你喜欢

转载自blog.csdn.net/Junds0/article/details/132987876