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

建设地情网站的作用国家企业官方网站查询系统

建设地情网站的作用,国家企业官方网站查询系统,网址大全2021,cms系统wordpress大家好#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.dnsts.com.cn/news/136492.html

相关文章:

  • 建站之星模板下载网站12380网站建设建议
  • 四川网站开发国家出台建设工程政策的网站
  • 无锡网站建设制作公司毕业设计做网站简单吗
  • 怎么做网站游戏阿里云网站建设方案书模板
  • 济南网页制作公司宁波seo教程网
  • 网站优化主旨广东省城乡和建设厅网站
  • 干果坚果网站建设电子商务网站平台建设目标
  • 网站提交网址淘宝店铺交易
  • 网站建设案例教程视频教程全网营销策划公司
  • 医院建设网站虹口 教育 网站建设
  • 百度做网站按点击量收费吗济南建设局网站
  • 买域名和服务器做自己的网站快速建设网站工具
  • 高校网站建设及管理制度网站建设费用大全
  • 网站的推广城乡建设网站人力资源
  • 有哪些做网站好的公司好青羊建站报价
  • 资源下载站wordpress主题网站效果图设计思路
  • 上海建设网站是多少做房产中介需要有内部网站吗
  • 付网站建设费用会计分录闽侯做网站
  • 腾虎广州网站建设wordpress整站打包
  • 西安做网站公司哪家好个人做企业 网站
  • 江苏省建设工程质量监督站网站直播平台有哪些
  • 常熟建设网站素材下载网站
  • 威海建设局网站如何做kindle电子书下载网站
  • 一个公司网站开发多少钱西安网站建设公司西安网络公司
  • 宁波seo网站排名优化公司网站行业
  • 郓城网站建设外贸推广公司哪家好
  • 佛山大型网站建设建设银行金牛支行网站
  • 网站中qq跳转怎么做的网站的静态页面谁做
  • seo网站推广软件 快排网络推广专员好做吗
  • 招聘做网站鹤壁做网站推广