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

杭州亿向建设有限公司 网站wordpress英文自动采集

杭州亿向建设有限公司 网站,wordpress英文自动采集,网站建设一个下载链接,建设银行 网站查询密码数据库锁是一种机制#xff0c;用于管理并发访问数据库的方式。当多个用户或事务同时访问数据库时#xff0c;可能会导致数据不一致或冲突的问题。数据库锁的作用是确保数据的一致性和完整性#xff0c;同时允许多个用户并发地访问数据库。 需要注意的是#xff0c;加锁是消…数据库锁是一种机制用于管理并发访问数据库的方式。当多个用户或事务同时访问数据库时可能会导致数据不一致或冲突的问题。数据库锁的作用是确保数据的一致性和完整性同时允许多个用户并发地访问数据库。 需要注意的是加锁是消耗资源的锁的各种操作包括获取锁、校验锁是否已解除、释放锁等都会增加系统的开销。 这里以MySQL为例介绍下数据库锁关于数据库锁的理论知识可以参考数据库锁概述一文。 锁的分类 按照不同的划分标准可以将锁分为多种类型。如悲观锁和乐观锁、共享锁和排他锁、意向锁、表锁和行锁和页锁等。 悲观锁和乐观锁 根据加锁的时机可以将数据库锁可以分为两类悲观锁和乐观锁。 所谓悲观锁就是对数据的修改抱有悲观态度。当要对一个数据库中的一条数据进行修改时为了避免同时被其他人修改直接对该数据进行加锁以防止并发。这种借助数据库锁机制在修改数据之前先锁定再修改的方式被称之为悲观并发控制又名悲观锁Pessimistic Concurrency Control简称PCC。 悲观锁采用的是先取锁再访问的保守策略为数据处理的安全提供了保证。但是在效率方面处理锁的机制会让数据库产生额外的开销还有增加产生死锁的机会另外还会降低并行性一个事务如果锁定了某行数据其他事务就必须等待该事务处理完才可以处理那行数据。 所谓乐观锁是相对悲观锁而言的对数据的修改持有乐观的态度。当要对一个数据库中的一条数据进行修改时假设数据一般不会造成冲突只在数据进行提交的时候对数据进行冲突检测如果没有冲突则直接修改如果存在冲突则提供补偿策略如执行回滚操作或执行重试操作。这次推迟并发冲突校验的方式被称为乐观并发控制又名乐观锁Optimistic Concurrency Control简称OCC。 乐观锁采用的是推迟冲突校验的积极策略在数据争用不大、冲突较少的场景下中可以获得更高的吞吐量且不会引入锁更不会带来死锁的问题。但是对于数据争用较大冲突较多的场景乐观锁则会因补偿策略带来回滚压力或CPU消耗。 共享锁和排他锁 根据是否独占数据还是共享数据可以将数据库的锁分为共享锁和排他锁。 共享锁(shared lock记为S)也称读锁如果事务 T T T获得了数据项Q上的共享型锁则 T T T对数据项Q可读但不可写其他事务也可对数据项Q加共享锁但不能加排他锁。 排他锁(exclusive lock记为X)也称写锁如果事务 T T T获得了数据项Q上的排他型锁则 T T T对数据项Q即可写又可读其他事务对数据项Q不能加任何锁。 共享锁和排他锁的兼容关系如下 锁的类型共享锁(S)排他锁(X)共享锁(S)兼容冲突排他锁(X)冲突冲突 从上面的表格可知共享锁和共享锁是兼容的也就是说如果事务 T T T对数据加了共享锁那么其他事务是可以继续加共享锁的。但是如果事务 T T T对数据加了排他锁那么其他事务是不可加任何锁的。 从数据隔离性的角度来说共享锁主要是为了支持并发的读取数据而出现的读取数据时不允许其他事务对当前数据进行修改操作从而有效避免不可重复读的问题。排他锁主要是为了解决在修改数据时不允许其他事务对当前数据进行修改和读取操作从而可以有效避免脏读的问题。 意向锁 意向锁是一种表锁用来表示一个事务接下来要获取的行锁类型(共享锁还是排他锁)。MySQL官方文档给出的描述如下 Intention locks are table-level locks that indicate which type of lock (shared or exclusive) a transaction requires later for a row in a table.当一个事务想要获取某行的锁时它必须先获取该行所在表的意向锁。根据意图获取的行锁类型可以将意向锁细分为意向共享锁(Intention Shared lockIS)和意向排他锁(Intention eXclusive lockIX)。意向共享锁表示该事务要获取的行锁类型是共享锁而意向排他锁则表示该事务要获取的行锁类型是排他锁。 意向锁主要用于表锁和行锁共存的场景。举例来说如果一个事务对表中的某一行加行锁那么当另一个事务想对表加锁时如果没有意向锁则需要遍历该表的所有行确保不存在锁冲突。如果有意向锁如果可以兼容则另一个事务进一步加锁否则直接返回提示锁冲突。意向锁的兼容关系如下 锁的类型共享锁(S)排他锁(X)意向共享锁(IS)意向排他锁(IX)共享锁(S)兼容冲突兼容冲突排他锁(X)冲突冲突冲突冲突意向共享(IS)兼容冲突兼容兼容意向排他锁(IX)冲突冲突兼容兼容 从上面的表格可知意向锁之间是兼容的。也就是说对同一个表是可以随便加意向锁的。但是对于意向共享锁来说和共享锁是兼容的和排他锁是冲突的。这主要是因为意向共享锁目的是给特定的行添加共享锁而共享锁与排他锁是冲突的。同样的对于意向排他锁来说对共享锁或排他锁都是冲突的这主要是因为意向排他锁目的是给特定的行添加排他锁而排他锁与共享锁或排他锁是冲突的。 需要说明的是对InnoDB来说意向锁是由InnoDB执行引擎自己维护的用户无法手动操作意向锁。当向数据行加共享锁/排他锁之前InooDB 会自动先获取该数据行所在数据表的对应意向锁。 此外除了存在意向共享锁和意向排他锁还有共享排他型意向锁(shared and intention-exclusive, SIX)见于多粒度封锁协议中。有兴趣的同学可以自行学习。 表锁和行锁和页锁 根据加锁的粒度可以将数据库的锁细分为表锁、行锁、页锁。 表锁(Table Lock)是一种粗粒度的锁它锁定整个表阻止其他事务访问表中的任何行。表锁适用于需要对整个表进行操作的情况表锁开销小且加锁快但因锁的粒度较大发生锁冲突的概率较高数据库的并发性能较低。 行锁Row Lock是一种细粒度的锁它锁定指定的行。行锁开销大且加锁慢但因其加锁粒度较小发生锁冲突的概率较低数据库的并发性能较高。 页锁(Page Lock)是介于行锁和表锁之间的一种锁机制它锁定表的一个页或多个页。页锁通常在特定情况下使用例如当需要批量操作数据时。页锁的开销和加锁速度也介于行锁和表锁之间数据库的并发性能一般。注意页级锁是 MySQL 中比较独特的一种锁定级别在其他数据库中并不常见。页级锁主要应用于 BDB(BerkeleyDB )存储引擎中这里不过多介绍有兴趣的同学还请自行学习。 此外无论是表锁还是行锁都可以根据是否独占数据还是共享数据进一步细分为共享锁和排他锁。 锁的使用 对不同的存储引擎锁的支持情况和使用方式是不同的。这里重点介绍下MyISAM和InnoDB两种存储引擎的锁的使用其他引擎的锁的使用还请自行学习。 表锁的使用 MyISAM 只支持表级锁不支持行锁。在执行 selectupdatedeleteinsert 等语句都会给表自动加锁(针对读操作加共享锁、针对写操作加排他锁)。 InnoDB默认采用行锁在未使用索引字段查询时升级为表锁。需要说明的是即便在条件中使用了索引字段MySQL会根据自身的执行计划考虑是否使用索引。如果MySQL认为全表扫描效率更高即使指定了索引字段也不会使用索引这种情况下InnoDB将使用表锁而不是行锁。因此在分析锁冲突时有必要进一步检查SQL的执行计划以确认是否真正使用了索引。注意以下场景下会优先使用表锁 (1) 全表更新。事务需要更新大部分或全部数据且表又比较大。若使用行锁会导致事务执行效率低从而可能造成其他事务长时间锁等待和更多的锁冲突。 (2) 多表查询。事务涉及多个表比较复杂的关联查询很可能引起死锁造成大量事务回滚。这种情况若能一次性锁定事务涉及的表从而可以避免死锁、减少数据库因事务回滚带来的开销。 行锁的使用 InnoDB为实现行锁提供了多种实现方式。如记录锁(Record Lock)、间隙锁(Gap Lock)、临键锁(Next-Key Lock)等。需要说明的是行锁仅在使用索引字段时才会生效否则会升级为表锁。 记录锁(Record Lock) 记录锁是封锁记录记录锁也叫行锁示例如下 SELECT * FROM test_table WHERE id 1 FOR UPDATE;它会在 id1 的记录上加上记录锁以阻止其他事务插入更新删除 id1 这一行。 间隙锁(Gap Lock) 间隙锁锁定一个范围但不包含记录本身间隙锁是封锁索引记录中的间隔或者第一条索引记录之前的范围又或者最后一条索引记录之后的范围。间隙锁主要目的也是为了避免出现幻读(Phantom Read)对应的事务的隔离级别降级为可重复读。如果将事务的隔离性级别调整成读已提交或读未提交间隙锁都会失效。间隙锁对应的事务隔离级别是可重复。示例如下 SELECT * FROM test_table WHERE id 100 FOR UPDATE更多间隙锁的使用示例可以参考MySQL锁 —— 记录锁、间隙锁、临键锁、自增锁 一文。 以下情况均会产生间隙锁 (1) 使用普通索引且需要锁定一个区间。 (2) 使用多列唯一索引且需要锁定一个区间。 (3) 使用唯一索引且需要锁定一个区间。 注意间隙锁封锁的不是多条记录而是一个区间以防止出现幻读现象。 临键锁(Next-Key Lock) 临键锁是记录锁与间隙锁的组合它的封锁范围既包含索引记录又包含索引区间。同间隙锁一样临键锁也是为了避免出现幻读(Phantom Read)。同样的临键锁对应的事务隔离级别是可重复。示例如下 SELECT * FROM table WHERE age 24 FOR UPDATE; 更多临键锁的使用示例可以参考MySQL锁 —— 记录锁、间隙锁、临键锁、自增锁 一文。 临键锁会锁住一段左开右闭区间的数据。需要强调的一点是InnoDB 中临键锁只与非唯一索引列有关在唯一索引列(包括主键列)上不存在临键锁。 锁优化 MySQL锁机制是确保数据库数据一致性和完整性的关键技术同时也是提高数据库性能的挑战之一。了解不同类型的锁以及它们的适用场景是设计高效数据库应用程序的重要一步。 在使用锁时需要根据应用程序的需求选择合适的锁类型同时考虑事务隔离级别以及优化策略以提高并发性能并避免常见的锁问题。 为了优化MySQL锁性能可以考虑以下几个策略 (1) 选择合适的隔离级别 (2) 减小事务的规模 (3) 尽量在SQL中使用索引 (4) 避免长时间的锁定 (5) 定期清理无效的锁 参考 数据库系统概念 Abraham Silberschatz, Henry F. Korth, S. Sudarshan 著 https://www.cnblogs.com/qlqwjy/p/7798266.html 乐观锁和悲观锁的区别 https://www.cnblogs.com/kexinxin/p/11620345.html 数据库中的锁 https://cloud.tencent.com/developer/article/2332879 MySQL 锁的完全解析提高数据库性能的关键技术 https://learnku.com/articles/39212 一张图彻底搞懂 MySQL 的锁机制 https://www.zhihu.com/tardis/zm/art/52312376?source_id1005 数据库基础三Mysql里的锁 https://zhuanlan.zhihu.com/p/185003485 详解 MySql InnoDB 中意向锁的作用 https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html#innodb-intention-locks InnoDB Locking https://blog.csdn.net/zcl_love_wx/article/details/82015281 一分钟深入Mysql的意向锁——《深究Mysql锁》 https://zhuanlan.zhihu.com/p/52879825 浅谈数据库共享锁与排它锁 https://juejin.cn/post/7088256473574309919 MySQL表锁、行锁和页锁 https://www.mysqlzh.com/doc/218.html BDB (BerkeleyDB)存储引擎 https://blog.csdn.net/kuyuyingzi/article/details/87710259 MySQL 表锁和行锁机制很详细 https://blog.csdn.net/qq_16268979/article/details/103441178 MyISAM的表锁和InnoDB的行锁 https://www.jianshu.com/p/478bc84a7721 MySQL记录锁、间隙锁、临键锁Next-Key Locks详解 https://blog.csdn.net/zhangchaoyang/article/details/108809249 MySQL锁 —— 记录锁、间隙锁、临键锁、自增锁
http://www.zqtcl.cn/news/37057/

相关文章:

  • 网站推广seo是什么东营+网站建设
  • 官方网站搭建采集网站图片
  • 重庆免费建站公司地址重庆在线课程平台
  • vps 网站发布黄骅贴吧二手房
  • 搜狐视频网站联盟怎么做做酒店经理的一些网站
  • 部署iis网站去黄山旅游的攻略
  • 赛门博网站建设培训心得体会1000字通用
  • 网站开发vsc网络推广的概念
  • 深圳营销型网站建设电话网络平台建站
  • 卖鞋的网站建设思路flash网站建设技术
  • 模板免费下载网站做购物网站哪种服务器好
  • 江门营销网站建设wordpress 自己写的网页
  • 免费php外贸网站模板建一个大型网站需要多少钱
  • 江苏建设人才考试网是啥网站清苑建设局网站
  • 网站后台管理系统怎么上传WordPress文章模板修改
  • 网站主关键词qq是谁开发出来的软件?
  • 网页设计知名网站江苏企业网站制作哪家好
  • 学院网站信息化建设wordpress预约小程序
  • 有自媒体谁还做网站广州建设集团股份有限公司
  • 一个空间怎么放两个网站推广最有效的办法
  • 点瑞网络网站建设购物网站
  • cloudflare做侵权网站免费的舆情网站app
  • 做网站的关键技术网站建设前端学什么语言
  • 公司网站建设需要要求什么软件网站建设整个流程图
  • 企业网站建设费用 珠海wordpress怎么换语言包
  • 扁平化购物网站模板手机微信客户端网站建设
  • 专门做推广的网站吗id链接wordpress
  • 天津圣辉友联做网站梅林多丽工业区做网站
  • 酒业网站建设中英文网站是咋做的
  • 做网站用html上海第五届世界进口博览会