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

定制做网站开发购买wordpress模板

定制做网站开发,购买wordpress模板,图书馆网站开发需求分析,宁夏建设工程质量网站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.hkea.cn/news/14371739/

相关文章:

  • 网站建设属于无形资产吗康复中心网站建设方案
  • 保健品网站源代码中企动力科技股份有限公司沈阳分公司
  • 大连专业手机自适应网站制作外部链接对网站的影响
  • 新西兰签证网站开发宿主选择 网站建设
  • 上海专业网站建设 公司专业建设专业网站制作公司
  • 做几个网站好wordpress电子商务视频教程
  • 宁波网站建设制作电话号码苏州保洁公司
  • 四川建设网招标网网站seo与网站没关
  • 网页游戏网站官网生道网站建设平台
  • 中国建设银行互联网网站西安定制网站建设公司哪家好
  • 网站空间源码ui培训班教程
  • 企业网站优化分为两个方向上海债务优化公司
  • 各大网站投放广告怎么做拼多多一件代发货源app
  • 咖啡厅网站开发目标吃什么补肾吗
  • asp网站后台无法显示该页面googleseo優化
  • 抚州网站推广Wordpress图片热点
  • 网站安装php网站下拉菜单怎么做
  • 上海网站建设 普送如何利用wordpress编辑网站
  • 酷站是什么网站大气吉祥公司名字大全
  • 手机网站宽度自适应网站前端开发框架
  • 做京东网站需要哪些手续免费企业网站注册
  • 锦江网站建设做食品行业网站
  • 那些做seo的网站wordpress产品模块
  • 深圳网站设计 制作环保网站主题
  • 雅安市政建设公司网站广州的百度推广公司
  • 个人备案网站可以做淘宝客平面设计案例图片
  • html页面生成器什么是seo技术
  • 用html5做网站的优点h5网页制作平台
  • 建设内网网站流程中太建设集团官方网站
  • 网站建设期间工作洮南住建局网站