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

处方药可以做网站宣传吗深圳市网站建设公司设计公司

处方药可以做网站宣传吗,深圳市网站建设公司设计公司,学校网站建设企业,宝安高端网站设计怎么样mysql锁之乐观锁、悲观锁、表锁、行锁、共享锁、排他锁 MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一个资源的机制#xff0c;在数据库中#xff0c;除传统的计算资源#xff08;CPU、RAM、I/O#xff09;的争用以外#xff0c;数据也是一种供许多用户共享的资…mysql锁之乐观锁、悲观锁、表锁、行锁、共享锁、排他锁 MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一个资源的机制在数据库中除传统的计算资源CPU、RAM、I/O的争用以外数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说锁对数据库而言显得尤其重要也更加复杂。 一、乐观锁Optimistic Lock MySQL中的乐观锁主要通过CAS的机制来实现一般通过version版本号来实现。 CAS是项乐观锁技术当多个线程尝试使用CAS同时更新同一个变量时只有其中一个线程能更新变量的值而其它线程都失败失败的线程并不会被挂起而是被告知这次竞争中失败并可以再次尝试。 比如扣减库存问题通过乐观锁可以实现如下 //查询出商品信息storeNum 10 select storeNum from items where id1 //根据商品信息生成订单 //修改商品storeNum为2 update items set storeNum2 where id1 and storeNum 10;我们在更新之前先查询一下库存表中当前库存数storeNum然后在做update的时候以库存数作为一个修改条件。当我们提交更新的时候判断数据库表对应记录的当前库存数与第一次取出来的库存数进行比对如果数据库表当前库存数与第一次取出来的库存数相等则予以更新否则认为是过期数据。 二、悲观锁Pessimistic Lock ​ 悲观锁的特点是先获取锁再进行业务操作即“悲观”的认为获取锁是非常有可能失败的因此要先确保获取锁成功再进行业务操作。通常所说的“一锁二查三更新”即指的是使用悲观锁。通常来讲在数据库上的悲观锁需要数据库本身提供支持即通过常用的select … for update操作来实现悲观锁。当数据库执行select for update时会获取被select中的数据行的行锁因此其他并发执行的select for update如果试图选中同一行则会发生排斥需要等待行锁被释放因此达到锁的效果。select for update获取的行锁会在当前事务结束时自动释放因此必须在事务中使用。 悲观锁的流程 在对记录进行修改前先尝试为该记录加上排他锁exclusive locking。 如果加锁失败说明该记录正在被修改那么当前查询可能要等待或者抛出异常。具体响应方式由开发者根据实际需要决定。 如果成功加锁那么就可以对记录做修改事务完成后就会解锁了。 其间如果有其他对该记录做修改或加排他锁的操作都会等待我们解锁或直接抛出异常。 比如淘宝下单过程中扣减库存的需求说明一下如何使用悲观锁 //0.开始事务 begin; //1.查询出商品信息 select storeNum from items where id1 for update; //2.修改商品storeNum 为2 update items set storeNum2 where id 1; //3.提交事务 commit;在对id 1的记录修改前先通过for update的方式进行加锁然后再进行修改。这就是比较典型的悲观锁策略。 如果以上修改库存的代码发生并发同一时间只有一个线程可以开启事务并获得id1的锁其它的事务必须等本次事务提交之后才能执行。这样可以保证当前的数据不会被其它事务修改。 上面提到使用select…for update会把数据给锁住不过我们需要注意一些锁的级别MySQL InnoDB默认行级锁。行级锁都是基于索引的如果一条SQL语句用不到索引的话优化器在选择时候如果发现锁表可能性能更好的话有可能会直接锁表。 三、表级锁Table-level lock 直接给整个表添加锁 select storeNum from items where name王五周八 for update;InnoDB在使用过程中只要不通过索引检索数据时全部是表锁。 开销小加锁快不会出现死锁锁定粒度大发生锁冲突的概率最高并发度最低 MyISAM在执行查询语句SELECT前会自动给涉及的所有表加读锁在执行更新操作UPDATE、DELETE、INSERT等前会自动给涉及的表加写锁这个过程并不需要用户干预因此用户一般不需要直接用LOCK TABLE命令给MyISAM表显式加锁。 四、行级锁record Locks 使用InnoDB中给添加指定的行添加锁 select storeNum from items where id10 for update;InnoDB行锁是通过给索引上的索引项加锁来实现的这一点MySQL于Oracle不同后者是通过在数据块中对相应的数据行加锁来实现的InnoDB只有通过索引条件检索数据InnoDB才使用行级锁 行锁的劣势开销大加锁慢会出现死锁 行锁的优势锁的粒度小发生锁冲突的概率低处理并发的能力强 五、共享锁share lock 共享锁又称读锁允许一个事务去读取一行阻止其他事务获得相同数据集的排它锁若事务T对数据对象A加上S锁则事务T可以读A但不能修改A其他事务只能对再对A加S锁而不能加X锁直到T释放A上的锁这保证了其他事务可以读A但在释放A上的S锁之前不能对A做任何修改。 六、排他锁exclusive lock 排它锁又称写锁允许获取排它锁的事物更新数据阻止其他事务取得相同的数据集共享读锁和排它写锁若事务T对数据对象A加上X锁事物T可以读A也可以修改A其他事务不能再对A加任何锁直到T 释放A上的锁
http://www.w-s-a.com/news/802320/

相关文章:

  • 网络司网站如何建立公司网站建议和规则
  • 织梦网站模板后台密码找回企业vi设计公司性价比高
  • php 爬取网站所有链接传奇手游发布网站
  • 免费软文网站wordpress中文名注册
  • 企业网站建设研究目的意义怎样设计一个公司网站
  • 怎么架构网站便民信息发布平台
  • 网站 建设 现状网站推广合同需要缴纳印花税吗
  • 熊猫头表情包制作网站wordpress 缺省目录
  • 网站浏览图片怎么做的群晖wordpress升级5.0
  • 25个优秀个人网站设计模板网站建设定位分析论文
  • 在线网站备案站长seo综合查询工具
  • 网站根 html网站建设行业数据
  • 网站公司做的网站有最字设计说明室内设计
  • 在线网站代码生成我想做个百度网站怎么做
  • 网站的建设费用分为长治市建设厅官方网站
  • 做网站都有哪些费用建设免费手机网站
  • 网站 组成代码做网站图片怎么插
  • 2020中国企业500强榜单南宁seo标准
  • 北美购物网站排名烟台专业的网站建站公司
  • 门户网站设计特点营销策划咨询机构
  • 天津做网站就到徽信xiala5中国营销型网站
  • 外汇网站建设制作深圳三站合一网站建设
  • 深圳坂田网站设计公司有哪些学校网站建设管理办法
  • 太原建设银行网站中山营销型网站设计
  • 广东省建设厅官方网站多少钱江苏省江建集团有限公司建设网站
  • 网站开发主流服装网站开发课程设计
  • 在iis里面创建网站wordpress响应式视频
  • 学设计哪个网站好网页设计音乐网站
  • 可以自己做斗图的网站上海模板建站多少钱
  • 山东川畅信息技术有限公司网站建设网站开发任务书