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

商城网站建设新闻百度官方版

商城网站建设新闻,百度官方版,国内做心理咨询师培训出名的网站,网站开发和网页制作前言 mysql 的表锁之 AUTO_INC, 是我们自增长的时候做并发控制的锁 主要是用于 自增长生成新的 id 的时候的控制 在前面的文档中, 我们又看到 mysql 这边自增长的处理的相关的大概脉络 但是 对于一些 并发控制的细节, 我们当时 应该是直接忽略掉了 我们这里就来看一下…

前言

mysql 的表锁之 AUTO_INC, 是我们自增长的时候做并发控制的锁 

主要是用于 自增长生成新的 id 的时候的控制 

在前面的文档中, 我们又看到 mysql 这边自增长的处理的相关的大概脉络

但是 对于一些 并发控制的细节, 我们当时 应该是直接忽略掉了  

我们这里就来看一下 mysql 这里的 AUTO_INC 的一个实现 

当然 它的实现 有几种方式, 模式选择有 0, 1, 2

模式为 0 的场景下, 主要是 基于乐观锁, 每一个表映射一个 mutex, 来尝试乐观获取锁 

模式为 1 的场景下, 对于 INSERT, REPLACE 命令主要是 基于乐观锁, 每一个表映射一个 mutex, 来尝试乐观获取锁, 其他的场景基于 表自增长锁

模式为 2 的场景下, 主要是基于和前面的 表共享锁, 表排他锁 一个级别的 表自增长锁

我们这里核心关注的是 表自增长锁 的相关实现

 

 

表自增长锁

获取 LOCK_AUTO_INC 这边的实现 和 获取其他表级别的锁的主流程一致

差异在于 LOCK_AUTO_INC 和其他锁的兼容性, 在之前 表共享锁, 表排他锁 的场景下面, 为了简化问题, 我们是跳过了 LOCK_AUTO_INC, 这里我们来讲 LOCK_AUTO_INC 代入进来看看 

e792b2929fb6978302d6e87fc3d60a29.png

 

从这里可以看到, 如果是我们 LOCK_AUTO_INC 这边和 表意向锁 是兼容的

和 LOCK_AUTO_INC 是不兼容的, 和 表共享锁, 表排他锁 是不兼容的

总结下来意思就是, 如果是 事务1 获取的是 行锁, 那么是不影响 事务2 获取 表自增长锁 的

如果是 事务1 获取的是 表自增长锁, 那么是会阻塞 事务2 获取 表自增长锁 的

如果是 事务1 获取的是 表共享锁, 表排他锁, 那么是会阻塞 事务2 获取 表自增长锁 的

b806a5361a2750bb7b50bb42a5bda834.png

 

整体的这边获取 表自增长锁 这边的具体的 锁表策略 分派方式如下

基本上三种策略就是 mutex乐观锁 + mutex乐观锁, 表自增长锁 + 表自增长锁 

e04368ca75dc970792fde762d1bacd4f.png

 

 

表自增长锁的获取和释放

表自增长锁 的获取是在执行 insert sql 的时候

d0bf6e144eb8d6333668599078ccfe16.png

 

然后释放 表自增长锁 是在语句执行完成之后释放的 如下 

304289f9f22d792835fc5167d90674c4.png

 

 

表自增长锁阻塞的 N 中方式

表自增长锁 的阻塞方式 就是上面提及的 表共享锁, 表排他锁, 表自增长锁 被持有的情况下  

假设我们这里尝试模拟 各种阻塞的方式, 事务1先进行执行, 然后事务2尝试获取表排他锁, 产生阻塞 

事务2 这边执行固定的 sql 语句如下 

begin;
INSERT INTO `test_02`.`tz_test_02`(`field1`, `field2`) VALUES ('field1', '11');
commit;

 

事务1获取 表排他锁 导致 事务2获取MDL元数据锁 阻塞

begin;
lock tables tz_test_02 write;
-- sleep 10min
unlock tables;
commit;

 

事务1获取 表共享锁 导致 事务2获取MDL元数据锁 阻塞

begin;
lock tables tz_test_02 read;
-- sleep 10min
unlock tables;
commit;

 

 

事务1 获取了 表自增长锁, 导致事务2获取MDL元数据锁 阻塞        

 

 

 

 

 

http://www.hrbkazy.com/news/36885.html

相关文章:

  • web制作企业门户网站搜索引擎有哪些?
  • 凡科网电脑版怎么做网站2022年新闻摘抄十条
  • 昨天正常的网站突然显示建设中自媒体平台app
  • 新吴区推荐做网站价格网络营销模式包括哪些
  • wordpress如何添加一个文章列表页seo排名计费系统
  • 可以在线做c语言的网站怎么投放广告是最有效的
  • 网站建设资质备案下载一个百度导航
  • 推广网站代码企业培训十大热门课程
  • 上海网站建设哪家公司好专业精准网络营销推广
  • 网站推广对接学电脑培训班多少一个月
  • 帝国网站如何做中英文切换南宁seo推广服务
  • 新公司注册在哪个网站网络推广要求
  • 传奇游戏排行榜前十名成都seo推广
  • 十堰网站建设电话百度一下图片识别
  • 上传网站到百度黄冈网站推广优化找哪家
  • 网站上的动图都怎么做的如何做市场营销推广
  • 网页制作与网站开发网站搭建工具
  • 哪个网站做首饰批发好媒体网络推广价格优惠
  • 做网站用php建网站找谁
  • 相册网站开发新手小白怎么学做运营
  • wordpress 调用全文福州网站优化公司
  • 简单的网页制作素材百度搜索优化建议
  • 义乌网站制作企业站seo案例分析
  • 徐州手机网站开发公司中国十大关键词
  • 常州 做网站颜色广告
  • web网站开发能使用c 吗苏州seo安严博客
  • 团购网站为什么做不走网络营销的主要方式和技巧
  • 网站的轮播图一般是做多大seo专业技术培训
  • 湘潭做网站问下磐石网络seo关键词排名系统
  • 贵州建设厅网站备案人员查询seo快速排名外包