千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:南昌千锋IT培训  >  技术干货  >  假设mysql的两条连接同时发送对同一个表同一条记录的update语句,mysql会怎么处理?

假设mysql的两条连接同时发送对同一个表同一条记录的update语句,mysql会怎么处理?

来源:千锋教育
发布人:xqq
时间: 2023-10-15 22:33:04

一、mysql的两条连接同时发送对同一个表同一条记录的update语句怎么处理

InnoDB 是行级锁,row lock,任何更新操作都是要先获取排他锁,再进行更新的。其他操作只能等着了。期间就可能出现死锁。理论上是么有并行的,任何东西只是运行的快,其实都是串行的来的。

对于单核的系统而言,这不是问题,操作系统总有个调度,不可能真正的两个线程同时执行,对于InnoDB而言,属于行锁,即在执行更新以前,就已经把记录加锁了,所以即使此时切换到另外一个线程,也只是阻塞而已。

两个人同时操纵数据库,处理并发问题的方法:

1.利用数据库的行锁,在where后面增加库存=1的判断,这样后执行的那条语句会匹配不到数据,也就是结果就是影响行数为0。

2.乐观锁,其实就是增加一列每次操作的时候+1。下单前先读取现有的数据,然后更新时把读取出来的乐观锁值增加到where后面,本质上和1一样。

延伸阅读:

二、Django 是什么

Django 是一个高级的 Python 网络框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django 负责处理网站开发中麻烦的部分,因此你可以专注于编写应用程序,而无需重新开发。 它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

Django 可以使你的应用具有以下优点:

完备性

Django 遵循“功能完备”的理念,提供开发人员可能想要“开箱即用”的几乎所有功能。因为你需要的一切都是一个”产品“的一部分,它们都可以无缝结合在一起,遵循一致性设计原则,并且具有广泛和最新的文档。

通用性

Django 可以(并已经)用于构建几乎任何类型的网站—从内容管理系统和维基,到社交网络和新闻网站。它可以与任何客户端框架一起工作,并且可以提供几乎任何格式(包括 HTML,Rss 源,JSON,XML 等)的内容。你正在阅读的网站就是基于 Django。

在内部,尽管它为几乎所有可能需要的功能(例如几个流行的数据库,模版引擎等)提供了选择,但是如果需要,它也可以扩展到使用其他组件。

安全性

Django 帮助开发人员通过提供一个被设计为“做正确的事情”来自动保护网站的框架来避免许多常见的安全错误。例如,Django 提供了一种安全的方式来管理用户账户和密码,避免了常见的错误,比如将 session 放在 cookie 中这种易受攻击的做法(取而代之的是 cookies 只包含一个密钥,实际数据存储在数据库中)或直接存储密码而不是密码哈希。

密码哈希是通过密码散列函数发送密码而创建的固定长度值。Django 能通过运行哈希函数来检查输入的密码 – 就是 – 将输出的哈希值与存储的哈希值进行比较是否正确。然而由于功能的“单向”性质,即时存储的哈希值受到威胁,攻击者也难以解决原始密码。(但其实有彩虹表 – 译者观点)

默认情况下,Django 可以防范许多漏洞,包括 SQL 注入,跨站点脚本,跨站点请求伪造和点击劫持。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

为什么Impala要使用C++语言,而不是Java?

2023-10-15

为什么Cassandra的写速度比MySQL快?

2023-10-15

为什么不能在前端连接数据库?

2023-10-15

最新文章NEW

为什么使用Redis做缓存而不会使用关系型数据库?

2023-10-15

假设mysql的两条连接同时发送对同一个表同一条记录的update语句,mysql会怎么处理?

2023-10-15

手机APP开发适合哪些行业?

2023-10-15

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>