InnoDB为什么使用自增id作为主键

简介: MySQL以16KB数据页存储数据。主键自增时,写满后直接使用新页;若主键非自增,为保持索引有序,插入需定位到合适位置,易引发页分裂,导致数据频繁迁移,降低插入性能。

MySQL底层使用是使用数据页为单位来存储数据的,一个数据页大小默认为16K,当数据页满了,就会申请新的数据页进行存储数据。
如果主键为自增 id 的话,mysql 在写满一个数据页的时候,直接申请另一个新数据页接着写就可以了。
如果主键是非自增 id,为了确保索引有序,mysql 就需要将每次插入的数据都放到合适的位置上。当往一个快满或已满的数据页中插入数据时,新插入的数据会将数据页写满,mysql 需要申请新的数据页,并且把上个数据页中的部分数据挪到新的数据页上。这就造成了页分裂,这个大量移动数据的过程是会严重影响插入效率。

相关文章
|
8月前
|
弹性计算 Kubernetes 安全
已上线!云监控 2.0 面向实体的全链路日志审计与风险溯源
在云端,一次 API 调用背后可能隐藏着一场数据泄露;一个异常进程背后,或许是 AK 泄露引发的链式攻击。传统日志“看得见却看不懂”,而云监控 2.0 日志审计通过 UModel 实体建模,将分散在 ACS、K8s、主机各层的日志自动串联。
545 93
|
8月前
|
机器学习/深度学习 人工智能 安全
2025 智能体工程现状
全面分析 AI 智能体在企业中的采用现状、挑战与趋势。
637 60
|
8月前
|
存储 人工智能 Cloud Native
加入我们,一起定义「Data x AI」的未来
我们在杭州、上海开放岗位。如果你准备好了,请加入我们,一起建造 AI 时代最重要的数据基础设施。
510 58
|
9月前
|
人工智能 运维 Serverless
从 Transform 到 Transformer,用 EventBridge 与百炼构建实时智能的 ETL 数据管道
作为数据处理领域的经典模式,ETL(Extract-Transform-Load)通过提取、转换、加载三个步骤,高效地处理着各类结构化数据。然而,面对 AI 时代海量、异构、实时的“数据洪流”,传统 ETL 链路,尤其是其核心的转换(Transform)环节,正面临严峻挑战。本文将从一个初级开发者也能理解和上手的视角,探讨 AI 时代的数据处理新范式:如何利用基于 Transformer 架构的大语言模型(LLM)重塑传统数据处理中的转换(Transform)环节,并结合事件驱动架构(Event-Driven Architecture, EDA),为 AI 数据处理链路“注入实时智能”。
509 74
|
8月前
|
存储 缓存 关系型数据库
常见索引类型
本文档系统梳理了数据库索引的多维度分类:按存储结构分为聚簇与非聚簇索引,按约束性分为普通、唯一及主键索引,按字段数量分为单列与组合索引,按功能支持全文与空间索引,按底层结构涵盖B+树与哈希索引,详述其定义、适用场景及核心特性。
什么是幂等
幂等性指操作执行一次或多次结果一致。读操作(如HTTP GET)不改变数据,天然幂等;写操作(如POST、PUT、DELETE)可能改变状态,需额外机制保障幂等。
|
8月前
|
传感器 算法 机器人
医疗引导机器人技术架构解析:决定品牌竞争力的核心要素
智慧医院建设推动医疗引导机器人迈向智能化,其核心技术涵盖多传感器融合导航、垂直领域大模型与RAG语义理解、主动视觉交互、跨楼层梯控及HIS系统深度集成。本文从技术架构出发,剖析环境感知、认知决策与系统协同的关键突破,揭示机器人如何成为连接物理空间与数字医疗的核心终端。
|
8月前
|
SQL 数据采集 监控
阿里云国际站服务器进行漏洞扫描的目的,漏洞扫描技术原理是什么?
阿里云国际站服务器进行漏洞扫描的目的,漏洞扫描技术原理是什么?
510 1
|
人工智能 自然语言处理 JavaScript
我定制的通义灵码 Project Rules,用 AI 写出“更懂我”的代码
本文分享了一名全栈开发同学使用通义灵码做代码生成、接口注释、测试代码补全等工作,效率明显提升的体会。
|
8月前
|
运维 负载均衡 监控
微服务有哪些优缺点?
微服务将应用拆分为小型独立服务,具备技术异构、弹性好、易部署、可独立扩展等优势,适合复杂系统。但其也带来分布式复杂性、运维难、数据一致性挑战等问题,需权衡团队能力与项目需求后采用。