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

做网站的必备软件做网站的公司主要工作

做网站的必备软件,做网站的公司主要工作,网站后台上传图片不显示,企业网站备案材料1. 锁 为什么要加锁: 加锁是为了保证数据的一致性,防止并发冲突。这个思想在程序开发领域中同样很重要。在程序开发中也会存在多线程同步的问题。当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等&…

1. 锁

为什么要加锁:

加锁是为了保证数据的一致性,防止并发冲突。这个思想在程序开发领域中同样很重要。在程序开发中也会存在多线程同步的问题。当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在进行访问,保证数据的完整性和一致性。

1.1. 锁的分类方式

1. 按锁粒度划分

锁类型

粒度

并发性

开销

死锁可能性

特点

行锁

容易

锁单行记录

页锁

一般

可能

锁定一个页,页中多行

表锁

锁整个表

  • 附加粒度:区锁、数据库锁(不同引擎支持不同锁粒度)
  • 锁升级机制:当锁资源占用超过阈值,系统将小粒度锁升级为大粒度锁以节省资源(如行锁升级为表锁)

2. 按数据库管理角度划分

锁类型

别名

行为

共享锁(S锁)

读锁

允许并发读,不允许写

排它锁(X锁)

写锁

排他访问,其他事务不能读写

意向锁

 

提前声明下级资源有锁,辅助加锁判断

加锁命令:

  • 表级共享锁:LOCK TABLE table_name READ;
  • 表级排它锁:LOCK TABLE table_name WRITE;
  • 解锁:UNLOCK TABLE;
  • 行级共享锁:SELECT ... LOCK IN SHARE MODE
  • 行级排它锁:SELECT ... FOR UPDATE

意向锁的作用

  • 用于快速判断是否可以加表级锁,无需扫描所有记录
  • 类型包括:意向共享锁(IS锁)、意向排它锁(IX锁)

1.2. 死锁

死锁的概念:

死锁(Deadlock)是指在并发系统中,两个或多个事务因争夺资源而互相等待,导致所有事务都无法继续执行的现象。

死锁产生的四个必要条件(Coffman条件):

  1. 互斥条件:资源一次只能被一个事务占用。
  2. 请求与保持条件:一个事务已经持有资源,同时又申请其他资源。
  3. 不剥夺条件:事务持有的资源在使用完之前,不能被强制剥夺。
  4. 循环等待条件:两个或多个事务之间形成资源等待环路。

为什么共享锁也可能导致死锁?

多个事务同时持有共享锁时,尝试升级为排它锁可能发生资源互相等待,导致死锁

死锁处理机制:

  • 数据库检测循环等待
  • 选出牺牲事务,回滚重试

降低死锁概率的方式:

  1. 如果事务涉及多个表,操作比较复杂,那么可以尽量一次锁定所有的资源,而不是逐步来获取,这样可以减少死锁发生的概率;
  2. 如果事务需要更新数据表中的大部分数据,数据表又比较大,这时可以采用锁升级的方式,比如将行级锁升级为表级锁,从而减少死锁产生的概率;
  3. 不同事务并发读写多张数据表,可以约定访问表的顺序,采用相同的顺序降低死锁发生的概率。

1.3. 从程序员的角度对锁进行划分

乐观锁和悲观锁并不是锁,而是锁的设计思想

1. 悲观锁(Pessimistic Locking)

  • 特点:认为并发冲突可能发生,操作前加锁
  • 实现:直接使用数据库锁机制,如 SELECT ... FOR UPDATE
  • 适用场景:高冲突、高一致性要求

2. 乐观锁(Optimistic Locking)

  • 特点:认为冲突较少,不主动加锁,提交时校验
  • 实现方式:

版本号机制

    • 增加 version 字段
    • 更新语句中包含 WHERE version = ?
    • 若版本不一致则更新失败

时间戳机制

    • 使用 update_time 字段进行乐观校验
  • 适用场景:读多写少场景,性能优于悲观锁

两种锁的使用场景:

  1. 乐观锁适合读操作多的场景,相对来说写的操作比较少。它的优点在于程序实现,不存在死锁问题,不过适用场景也会相对乐观,因为它阻止不了除了程序以外的数据库操作。
  2. 悲观锁适合写操作多的场景,因为写的操作具有排它性。采用悲观锁的方式,可以在数据库层面阻止其他事务对该数据的操作权限,防止读 - 写和写 - 写的冲突。

 


文章转载自:

http://dGxv2WF7.cmqrg.cn
http://VguYR3ah.cmqrg.cn
http://e6ThWQTi.cmqrg.cn
http://wvvlQxGj.cmqrg.cn
http://1ofF0o5E.cmqrg.cn
http://YtISXOBr.cmqrg.cn
http://EewQlOnH.cmqrg.cn
http://oGvZClym.cmqrg.cn
http://xwOtBUKK.cmqrg.cn
http://X9dQX9qd.cmqrg.cn
http://9TQfin0T.cmqrg.cn
http://YOtxUary.cmqrg.cn
http://paqhr4cu.cmqrg.cn
http://Y8Ytwirj.cmqrg.cn
http://XtWsbN7d.cmqrg.cn
http://Zges9cxH.cmqrg.cn
http://hwY5SmFK.cmqrg.cn
http://S9YDe3i5.cmqrg.cn
http://zenTfMHx.cmqrg.cn
http://oO6fPHpo.cmqrg.cn
http://527Z2KLF.cmqrg.cn
http://CwpCvd1s.cmqrg.cn
http://aaIlDyTe.cmqrg.cn
http://CDBzG0gc.cmqrg.cn
http://a7uuUz2N.cmqrg.cn
http://fUAKDVik.cmqrg.cn
http://81NgtsZM.cmqrg.cn
http://BOYvIstF.cmqrg.cn
http://wE579qlw.cmqrg.cn
http://Dww9AmwQ.cmqrg.cn
http://www.dtcms.com/wzjs/766022.html

相关文章:

  • 学校网站建设评估百度指数十年
  • 西双版纳建设厅网站postgresql做网站用什么环境
  • 建设工程教育官方网站遵义住房和城乡建设厅网站
  • 网站建设技术包括哪些内容西安推广网站
  • 网站备案到公司名称怎么做外网网站监控
  • 湖北高速公路建设网站上海娱乐场所关闭
  • 吧台 东莞网站建设WordPress主题在线生成
  • 企航互联提供天津网站建设wordpress默认密码
  • 连云港做网站的公司wordpress 查询数据
  • 简述网站开发的流程公司名字大全免费取名
  • 网站文章没有被收录常州网站建设最易
  • 金融棋牌网站建设网络营销公司名字
  • c 网站建设报告企业信息查询源码
  • 济南移动网站制作企业网站后台模版
  • c2c电子商务网站建设栏目结构图江门网站制作系统
  • 网站域名区别wordpress 图片暗箱
  • 自助建设影视网站wordpress四级级分类目录
  • 镇江网站设计建设深圳网站设计技术
  • 各大搜索引擎提交网站入口大全云翼计划wordpress
  • 八大恶心的网站制作网上开店平台有哪些
  • 弹幕做的视频网站热 综合-网站正在建设中
  • 专业做网站的团队微网站建设市场
  • 辽宁城乡建设集团网站单页网站怎么优化
  • 百度上免费创建网站进入公众号主页
  • django 开发一个公司网站最新网站排名优化方法
  • 手机网站赏析wordpress需要登录才可以看到内容
  • 岳阳网站开发服务新网站如何做快照
  • 模板 网站域名验证网站
  • 建设网站需要的费用服务企业网站建设的IT
  • 响应式网站模板多少钱怎样做广告设计