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

建设地情网站的作用一个网站开发语言

建设地情网站的作用,一个网站开发语言,无锡网站推广优化公司哪家好,商业空间设计师岗位职责大家好#xff0c;我是冰点#xff0c;今天给大家带来#xff0c;关于MySQL中的锁的使用。 我首先提个问题#xff0c;大家知道什么是 乐观锁、悲观锁、共享锁#xff0c;、排它锁、行锁、表锁#xff0c;以及每种锁的使用场景吗#xff1f; !! 背景#xff1a;最近在各…大家好我是冰点今天给大家带来关于MySQL中的锁的使用。 我首先提个问题大家知道什么是 乐观锁、悲观锁、共享锁、排它锁、行锁、表锁以及每种锁的使用场景吗 !! 背景最近在各种群和博客里又看见了什么[乐观锁]、悲观锁什么鬼的感觉很高级的词汇于是乎今天对这几个概念进行整理一下揭开它神秘的面纱给大家提供一个基本参考。作为开发人员不管是用什么编程语言我觉得这些是应该要掌握的。知其然知其所以然。 锁机制是 MySQL 中用来保证并发访问数据库时数据一致性和完整性的重要机制。在并发访问中多个事务可能同时对同一份数据进行操作。如果不采用锁机制就会出现数据错乱和丢失的问题。MySQL 中的锁机制主要包括以下几种类型 1. 乐观锁 乐观锁是指在数据更新操作时先读取数据并记录版本号然后在更新时检查版本号是否发生变化如果没有变化则继续更新否则回滚操作。乐观锁适用于并发度高的场景因为乐观锁不会限制其他事务对数据的访问如果数据冲突则只需要回滚操作即可。 如果使用mybatis-plus 可以做直接配置 使用场景适用于并发度高的场景例如在高并发的电商网站中多个用户同时对同一个商品进行下单操作。 示例 SQL -- 获取商品库存数量和版本号 SELECT stock, version FROM product WHERE id 1;-- 更新商品库存数量 UPDATE product SET stock  stock - 1, version  version  1 WHERE id  1 AND version  1;2. 悲观锁 悲观锁是指在数据更新操作时先加锁然后再更新数据更新完成后再释放锁。悲观锁适用于并发度低的场景因为悲观锁会限制其他事务对数据的访问如果没有必要就会影响并发性能。MySQL 中的悲观锁主要有共享锁和排它锁两种。 使用场景适用于并发度低的场景例如在银行系统中多个用户同时对同一个账户进行转账操作。 示例 SQL -- 对账户进行排它锁定 SELECT balance FROM account WHERE id  1 FOR UPDATE;-- 用户 A 进行转账操作 UPDATE account SET balance  balance - 100 WHERE id  1;-- 用户 B 进行转账操作 UPDATE account SET balance  balance  100 WHERE id  1;-- 释放锁 COMMIT;3. 共享锁 共享锁是指多个事务可以共享同一份数据但是不能同时进行更新操作。在获取共享锁之后其他事务只能获取共享锁不能获取排它锁。共享锁适用于读多写少的场景可以提高并发度。 使用场景适用于读多写少的场景例如在新闻网站中多个用户同时对同一篇文章进行阅读操作。 示例 SQL -- 对文章进行共享锁定 SELECT * FROM article WHERE id  1 LOCK IN SHARE MODE;-- 用户 A、用户 B 和用户 C 同时读取文章内容 SELECT title, content FROM article WHERE id  1;-- 释放锁 COMMIT;4. 排它锁 排它锁是指在获取锁之后其他事务不能获取任何类型的锁也不能进行读取和更新操作。排它锁适用于写多读少的场景可以保证数据的一致性和完整性。 使用场景适用于写多读少的场景例如在订单系统中多个用户同时对同一份订单进行修改操作。 示例 SQL -- 对订单进行排它锁定 SELECT * FROM orders WHERE id  1 FOR UPDATE;-- 用户 A 进行修改操作 UPDATE orders SET status  paid WHERE id  1;-- 用户 B 进行修改操作 UPDATE orders SET status  shipped WHERE id  1;-- 释放锁 COMMIT;5. 行锁 行锁是指在对数据的某一行进行操作时只对该行进行锁定其他行不受影响。行锁适用于并发度高的场景可以提高并发性能。 使用场景适用于并发度高的场景例如在社交网站中多个用户同时对同一篇文章进行点赞操作。 示例 SQL -- 对点赞行进行行锁定 SELECT * FROM like WHERE user_id  1 AND article_id  1 FOR UPDATE;-- 用户 A 进行点赞操作 INSERT INTO like (user_id, article_id) VALUES (1, 1);-- 用户 B 进行点赞操作 INSERT INTO like (user_id, article_id) VALUES (2, 1);-- 用户 C进行点赞操作 INSERT INTO like (user_id, article_id) VALUES (3, 1);-- 释放锁 COMMIT;6. 表锁 表锁是指在对整个表进行操作时对整个表进行锁定其他事务不能对该表进行任何操作。表锁适用于并发度低的场景因为表锁会限制其他事务对数据的访问如果没有必要就会影响并发性能。 使用场景适用于并发度低的场景例如在定时任务系统中多个任务同时对同一张表进行查询操作。 示例 SQL -- 对整个表进行表锁定 LOCK TABLES task READ;-- 多个任务进行查询操作 SELECT * FROM task WHERE status  pending;-- 释放锁 UNLOCK TABLES;总结 !! 锁的掌握应该是每个开发人员必备的技能同样锁的使用需要根据具体场景和业务需求进行调整和优化。如果锁的粒度过大或过小都会影响并发性能和系统的稳定性。在使用锁时需要根据具体情况选择不同的锁类型和锁粒度以提高并发性能和保证数据安全。同时需要注意锁的使用方式和时机避免死锁和长时间等待的情况出现。
http://www.tj-hxxt.cn/news/130707.html

相关文章:

  • 网站规划与建设 pptwordpress 进入
  • 网站设计营销门户网站的推广
  • 个人博客网站html模板wordpress 问答 api
  • 广州网站建设(信科网络)阳区城市规划建设局网站
  • 网站建设与维护课程标准济南公众平台网站建设
  • 网站建设与管理实训报告wordpress的链接功能
  • asp怎么做网站重庆seo关键词排名
  • 网站放到服务器wordpress dux主题首页
  • 贵阳市网站开发建设局网站更改法人所需材料
  • asp.net 如何设置网站首页北京市在建工程项目查询
  • 网站系统制作教程如何用手机开发游戏
  • .net网站开发的例子h5可以做网站吗
  • 门户网站推荐国内网站建设哪家好
  • 如何用服务器搭建网站如何在网上做网站推广
  • 莱州市建设局网站wordpress和dedecms哪个好
  • 网站建设续费是那些充值中心网站怎么做
  • 网站建设往年的高考题推广平台有哪几个
  • 建网站的公司服务中国flash网站模板中心
  • 沈阳网站制作的公司哪家好免费推广的软件
  • 营商环境建设监督局网站安徽公路建设行业协会网站是哪个
  • 沈阳专门代做网站的设计ui
  • 东莞企业网站设计排名软件开发工程师证书怎么考
  • seo网站编辑免费公司网站建站
  • 网站建设与维护期末试卷百度网站排名优化
  • 十大网站央企 网站建设 公司
  • 深圳网站建设及优化投资网站哪个好
  • 极速网站建设服务商网站开发加维护需要多少钱
  • 深圳网站建设门户谁用fun域名做网站了
  • 江苏天宇建设集团网站合肥效果图制作公司
  • 南通做公司网站电子商务适合女生学吗