如何插入? | 非开车,纯技术交流

简介: 为了讲清楚InnoDB自增键,今天先系统性讲讲,什么是插入,如何插入。

《InnoDB自增键基础知识测试》中的四道测试题,全答对的朋友少之又少,为了讲清楚InnoDB自增键,今天先系统性讲讲,什么是插入,如何插入。 MySQL有一系列的语句,可以往数据库新增数据,称作范插入语句(insert-like statement)。不同的插入方式,对自增键的影响是不一样的。画外音:自增键,是指auto_increment,大家应该都用得很多。 更为细化后,总的来说,插入方式分为三类:

  • 简单插入(simple insert)

  • 批量插入(bulk insert)

  • 混合插入(mixed-mode insert)

  什么是简单插入(simple insert) 普通的 insert/replace 语句,不管是单条插入还是多条插入,都是简单插入。 画外音: (1)不包含递归的子查询; (2)不包含 insert … on duplicate key update…   《自增键测试》里的实验一:

insert into t1(id, name) values(1,"shenjian");

insert into t1(name) values("zhangsan"),("lisi"),("ww");

都是简单插入。   简单插入的特点是, 能够提前知道被插入的行数   因此,这类插入,在处理自增键时,是最容易的。 画外音:很容易保证自增键连续性。   什么是批量插入(bulk insert) 与简单插入相对, 在插入时,不知道被插入的行数 ,是批量插入。   《自增键测试》
里的实验二:

insert into t1(name) select name from t2;

  除此之外,像:
  • replace … select …

  • load data

都是批量插入。   由于不能够提前知道多少行插入,在处理自增列时, 每插入一行,才会赋值新的自增值 画外音,官网原文是:

InnoDB assigns new values for the AUTO_INCREMENT column one at a time as each row is processed.

  这里的潜台词是,在批量插入事务并发时,“ 可能 ”出现同一个事务的自增键不连续。 画外音:为啥是“可能”呢?潜在解决方案,未来撰文详述。   什么是混合插入(mixed-mode insert) 《自增键测试》里的实验三:

insert into t1(id, name) values (111,"111"),(NULL, "abc"),(222,"222"),(NULL,"xyz");

  有些行插入 指定了自增键 ,无需数据库生成; 有些行插入 未指定自增键 (NULL) ,需要数据库生成。 画外音:具体走哪个分支,实际执行时才知道。   以及《自增键测试》里实验四:

insert into t1(name) values("shenjian"),("aaa"),("bbb")

on duplicate key update count=100;

  有些行插入 实际上是 修改 ,无需数据库生成自增键; 有些行插入 实际上就是 插入 ,需要数据库生成自增键。 画外音:具体走哪个分支,也是实际执行时才知道。   insert … on duplicate key update … 这种情况是最最复杂的,它可能导致, 系统生成的自增值,在更新阶段用不上 画外音,官网原文是:

an INSERT followed by a UPDATE, where the allocated value for the AUTO_INCREMENT column may or may not be used during the update phase.

  说了这么多,《InnoDB自增键基础知识测试》中的四道测试题,大家心中都有谱了吧?看完本文,是不是解答了四道题的疑问呢? 画外音:昨天确实答对率比较低,今天可以再回过头重新做一遍。   末了,最近骂我的水友比较多,反馈帮朋友推广的文章越来越多了,我统一回复下: (1)精力有限,平均每周产出2-3篇技术文的频率没有降低; (2)朋友让我帮忙,我帮还是不帮? (3)我的地盘我做主;   另外|||   在这里,能有机会系统性思考,之前没有想过的问题。 画外音:当然,我只能分享和引导,收获有多大,得看大伙细节扣得多深。就像昨天和今天的两篇,“自增键”和“插入”谁都会用,但真的思考过这些“coding时用不到”的看似无用的知识么。   在这里,你能看到别处没有的技术文章。 画外音: (1)文章原创; (2)以“戏谑”的文笔“踏实”的做学问:素材可以复现,绝不“张口就来”;知识点亲自考证,要么官网,要么源码,绝不传播楼主不确定的二手消息;

最后,再挖两个坑,大伙想想。
  作业题一: insert into t1(name)values("zhangsan"),("lisi"),("wangwu"); 这类简单插入,当有 并发事务执行 时,自增键仍能保证连续性,是如何做到的? A: 粒度加锁,实施互斥 B: 粒度加锁,实施互斥 C: 全局自增键单例,实施互斥 D: SQL语句粒度加锁,实施互斥 E: 事务粒度加锁,实施互斥   作业题二: 基于SQL复制的主从同步,如果执行并发批量插入 (bulk insert) 事务,“可能”出现同一个事务的自增键不连续,那么 能否保证主从数据的一致性 ?如果能,是怎么保证的?

本文转自“架构师之路”公众号,58沈剑提供。

目录
相关文章
|
Java Spring 容器
六、spring5框架新功能
六、spring5框架新功能
218 0
|
Java 测试技术 C语言
leetcode刷题(5)
各位朋友们,大家好,今天是我leedcode刷题的第五篇,我们一起来看看吧。
|
10小时前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
7230 31
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
10小时前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
630 141
|
10小时前
|
人工智能 缓存 自然语言处理
阿里Qwen3.7-Max评测:Agent能力显著提升,耗时与调用成本大幅下降
阿里云百炼推出面向智能体的旗舰大模型Qwen3.7-Max,具备长周期自主执行能力,显著提升编程、办公自动化等复杂任务处理水平;支持MCP集成与多框架兼容,并以限时5折+100万Tokens免费试用大幅降低使用门槛,助力企业高效落地AI应用。在阿里云百炼平台快速体验:https://t.aliyun.com/U/fPVHqY
|
10小时前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
1226 2
|
10小时前
|
人工智能 弹性计算 运维
阿里云发布堡垒机智能运维Agent,运维交互进入自然语言新时代
支持自然语言运维,提升效率与安全双保障。
1161 1
|
10小时前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1297 3
|
10小时前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
332 4
|
10小时前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
297 1
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图