44 mysql batch insert 的实现

前言

我们这里 来探讨一下 insert into $fields values ($values1), ($values2), ($values3);

的相关实现, 然后 大致来看一下 为什么 他能这么快

按照 我的思考, 应该里里面有 批量插入才对, 但是 调试结果 发现令我有一些意外

呵呵 果然 只有调试才是唯一的真理

相比于 单条单条的数据交互, 节省的是多次服务交互的开销, 服务插入的一些细节开销 

 

测试数据表如下 

CREATE TABLE `tz_test_02` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `field1` varchar(128) DEFAULT NULL,
  `field2` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `field_1_2` (`field1`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8

 

 

批量数据插入的实现

执行 sql 如下 “insert into tz_test_02 (`field1`, `field2`) values ("你好0", "没意思0"), ("你好1", "没意思1"), ("你好2", "没意思2"), ("你好3", "没意思3"), ("你好4", "没意思4"), ("你好5", "没意思5"), ("你好6", "没意思6"), ("你好7", "没意思7"), ("你好8", "没意思8"), ("你好9", "没意思9");”

 

整体的批量插入流程如下 

its 迭代的是带插入的记录列表, 合计 10 条, 然后 循环插入

这里 fill_record_n_invoke_before_triggers 的处理是将每一条记录的内容复制到对应的 数据字段上面

write_record 是将当前数据行 持久化到数据库

4f8d41da35224c2ba4c2cbae0ee72e94.png

 

 

数据拷贝到目标数据行

tz_test_02 的数据列表拷贝如下 

8bbacb112fc54e9d93e7ac5c065caade.png

2bcfc073329245ccb9091ee3ebc6934d.png 

 

持久化记录到目标表

插入记录情况如下

8510d8263e1841ee9ac4879b669c14b4.png

 

53b5f469b0f9411a9fe8f3539e510ec7.png 

 

待插入记录 按照字节拆解如下

f5b5e8b599494c73ae8fc9d361734326.png

 

 

 

 

 

相关推荐

  1. 44、PHP 实现数据流中中位数(含源码)

    2024-07-12 19:54:05       20 阅读
  2. 为什么音频采样率是44.1K不是40K也不是42K

    2024-07-12 19:54:05       18 阅读
  3. 商场数据库项目MySQL实战(1——44

    2024-07-12 19:54:05       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 19:54:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 19:54:05       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 19:54:05       58 阅读
  4. Python语言-面向对象

    2024-07-12 19:54:05       69 阅读

热门阅读

  1. Vue使用vue-cropper裁剪图片作头像

    2024-07-12 19:54:05       21 阅读
  2. RuoYi-Vue3不启动后端服务如何登陆?

    2024-07-12 19:54:05       20 阅读
  3. mysql8 锁表与解锁

    2024-07-12 19:54:05       19 阅读
  4. 如何部署本地dockers镜像源

    2024-07-12 19:54:05       19 阅读
  5. CAD二次开发(12)- 块的定义和使用

    2024-07-12 19:54:05       17 阅读
  6. MySQL在Windows系统上的详细安装指南

    2024-07-12 19:54:05       16 阅读
  7. ubuntu 换源

    2024-07-12 19:54:05       24 阅读
  8. Elasticsearch进阶学习

    2024-07-12 19:54:05       15 阅读
  9. 面向对象进阶基础练习

    2024-07-12 19:54:05       21 阅读