当前位置: 首页 > news >正文

mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复

转载自 https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c42cf94e51d45524861122d#heading-8
mysql实现这个机制的背后,主要有两种方式

  1. 采用 AUTO-INC 锁,也就是在执行插入语句时,就在表级别上加一个AUTO-INC锁。然后,为每条待插入记录的AUTO_INCREMENT修饰的列分配递增的值。在该语句执行完成之后,再把AUTO-INC锁释放掉。需要注意的是,在释放锁的时候,不同于一般情况下的读锁和写锁,是在事务执行完成之后自动释放锁。AUTO-INC锁是在当前语句插入完成之后释放的。
  2. 采用一个轻量级的锁,在为插入语句生成AUTO_INCREMENT修饰的列分配递增的值时获取该锁,在数值分配完成后就释放该锁。所以采用这种方式的话,必须清楚该插入语句具体的插入数量。同时,这种方式避免锁表,所以,效率较高。

我们可以执行

SHOW VARIABLES LIKE '%innodb_autoinc_lock_mode%';

这条sql语句,查看我们本地的mysql数据库服务器是采用的那种方式
若值为0,AUTO-INC锁方式;
若值为1,轻量级锁方式;
若值为2,两种方式混着来(就是插入记录数量确定的情况下使用轻量级锁,不确定时采用AUTO-INC锁方式)。

tips:
采用轻量级锁时,可能会造成不同事务中,插入语句生成的数值是交叉的。

转载于:https://www.cnblogs.com/theone67/p/11083371.html

相关文章:

  • Docker是什么?可以用Docker做什么?
  • 《坐热板凳》第九次团队作业:Beta冲刺与验收准备(补交:实验十二 第八次团队作业:软件测试与ALPHA冲刺)...
  • 14-使用Vue来实现JQuery的动画效果
  • MP4V2 移植 (基于imx6 平台)
  • python学习之模块--模块(二)
  • Java数据结构和算法(七)--AVL树
  • linux 获取系统时间 strftime函数格式化时间为24/12小时制
  • 第7章 虚拟机类加载机制
  • Redis 学习笔记(篇三):跳表
  • Origin C访问数据库(MySQL)
  • jquery仿淘宝购物车页面商品结算(附源码)
  • vim键盘图
  • bean和map互转
  • cookies测试点
  • oracle函数 lag()和lead()
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 2019.2.20 c++ 知识梳理
  • CentOS 7 防火墙操作
  • CSS 提示工具(Tooltip)
  • CSS实用技巧干货
  • Hibernate最全面试题
  • IDEA 插件开发入门教程
  • Intervention/image 图片处理扩展包的安装和使用
  • Java新版本的开发已正式进入轨道,版本号18.3
  • js写一个简单的选项卡
  • PHP那些事儿
  • React Transition Group -- Transition 组件
  • React 快速上手 - 07 前端路由 react-router
  • text-decoration与color属性
  • ubuntu 下nginx安装 并支持https协议
  • vue 个人积累(使用工具,组件)
  • Vue ES6 Jade Scss Webpack Gulp
  • Web标准制定过程
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 番外篇1:在Windows环境下安装JDK
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 异常机制详解
  • 优化 Vue 项目编译文件大小
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (1)(1.11) SiK Radio v2(一)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (JS基础)String 类型
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (分类)KNN算法- 参数调优
  • (四)汇编语言——简单程序
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET导入Excel数据
  • .NET的微型Web框架 Nancy
  • .NET中winform传递参数至Url并获得返回值或文件