河南省住房和城乡建设厅查询网站简洁印象wordpress企业主题
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:54
当前位置: 首页 > news >正文
河南省住房和城乡建设厅查询网站,简洁印象wordpress企业主题,海口专业网站建设,网站开发与客户沟通前言 为什么会出现锁 MySQL中的锁是为了保证并发操作的正确性和一致性而存在的。 当多个用户同时对同一份数据进行操作时#xff0c;如果不加控制地进行读写操作#xff0c;就可能导致数据不一致的问题。例如#xff0c;当多个用户同时对同一行数据进行写操作时#xff… 前言 为什么会出现锁 MySQL中的锁是为了保证并发操作的正确性和一致性而存在的。 当多个用户同时对同一份数据进行操作时如果不加控制地进行读写操作就可能导致数据不一致的问题。例如当多个用户同时对同一行数据进行写操作时就可能出现数据被覆盖的情况。这时通过使用锁可以控制用户对数据的访问保证同一时间只有一个用户对数据进行修改或者读取操作从而避免数据的不一致。 模式分类 乐观锁Optimistic Locking 是什么 乐观锁并不是锁而是锁的设计思想。认为对同一数据的并发操作不会总发生属于小概率事件不用每次都对数据上锁而是在更新时检查数据版本通常是一个版本号或时间戳如果版本号或时间戳与之前的一致则认为数据没有被修改可以更新如果不一致则认为数据已经被修改更新操作失败。这种方式不会阻塞其他访问请求但是如果冲突频繁发生则需要重试更新操作可能会增加系统的复杂度。 优缺点 优点 乐观并发控制没有实际加锁所以没有额外开销也不错出现死锁问题适用于读多写少的并发场景因为没有额外开销所以能极大提高数据库的性能。。 缺点 乐观并发控制不适合于写多读少的并发场景下因为会出现很多的写冲突导致数据写入要多次等待重试在这种情况下其开销实际上是比悲观锁更高的。而且乐观锁的业务逻辑比悲观锁要更为复杂业务逻辑上要考虑到失败等待重试的情况而且也无法避免其他第三方系统对数据库的直接修改的情况。 怎么玩 悲观锁Pessimistic Locking 是什么 悲观锁也是一种思想对数据被其他事务的修改持保守态度每次更新数据钱都会添加锁会通过数据库自身的锁机制来实现从而保证数据操作的排它性。 优缺点 优点 悲观并发控制采取的是保守策略“先取锁成功了才访问数据”这保证了数据获取和修改都是有序进行的因此适合在写多读少的环境中使用。当然使用悲观锁无法维持非常高的性能但是在乐观锁也无法提供更好的性能前提下悲观锁却可以做到保证数据的安全性。 缺点 由于需要加锁而且可能面临锁冲突甚至死锁的问题悲观并发控制增加了系统的额外开销降低了系统的效率同时也会降低了系统的并行性。 怎么玩 按颗粒度分类 InnoDBMyISAMBDB表锁truetruetrue页锁falsefalsetrue行锁truefalsefalse全局锁Global Lock 是什么 全局锁就是对整个数据库实例加锁加锁后的整个实例就处于只读状态后续的DML的写语句DDL语句已经更新操作的事务提交语句都将被阻塞。 优缺点 优点简单全局锁是 MySQL 内部实现的一种简单锁机制可以很容易地使用。 稳定全局锁是最稳定的锁能够保证操作的一致性和安全性。 效率高当需要执行全局操作时全局锁是最高效的锁机制。它可以在很短的时间内锁定整个数据库确保操作的原子性。 灵活MySQL 全局锁还可以用于备份和恢复数据库、进行主从同步等。 安全全局锁可以保证数据的完整性和一致性防止数据丢失和损坏。 缺点 它会对数据库的并发性能产生很大的影响并且会导致其他用户的请求被阻塞。因此在使用全局锁时需要慎重考虑其优缺点确保操作的安全和效率。 怎么玩 加锁 flush tables with read lock 解锁 unlock tables 表级锁Table Lock 是什么 表示对当前操作的整张表加锁它实现简单资源消耗较少被大部分 MySQL 引擎支持 优缺点 优点 开销小加锁快不会出现死锁 缺点 锁定粒度大发出锁冲突的概率最高并发度最低。 怎么玩 加表读锁或叫共享锁 lock tables t_student read; 加表写锁或叫独占锁 lock tables t_stuent write; 解锁 unlock tables 页级锁Page Lock 是什么 锁定表中某些行集合称做页被锁定的行只对锁定最初的线程是可行。如果另外一个线程想要向这些行写数据它必须等到锁被释放。不过其他页的行仍然可以使用。在MySQL5.1之前BDB引擎默认页级锁之后被弃用。 优缺点 优点 提高并发性能页级锁的粒度比表级锁小可以让更多的并发事务同时访问不同的数据页从而提高了并发性能。减少锁冲突页级锁只锁定需要修改的数据页减少了锁冲突的可能性降低了锁等待时间和死锁的风险。提高精度由于锁的粒度更细所以事务只需要锁定需要修改的数据页而不是整个表这提高了锁的精度减少了不必要的锁。 缺点 内存开销较大MySQL在使用页级锁时需要维护大量的锁信息这些信息需要占用内存如果数据表很大锁信息的存储可能会占用较多的内存。锁定时间较长由于页级锁只锁定需要修改的数据页而不是整个表因此锁定的时间会相对较长尤其是在对大量数据进行操作时这会导致并发性能下降。容易造成页分裂页级锁需要将表分成若干页如果频繁对数据进行修改会导致数据页不断增加从而容易造成页分裂进一步增加了内存的占用。 怎么玩 SELECT * FROM table_name WHERE id BETWEEN 1 AND 100 FOR UPDATE; 行级锁Row Lock 是什么 基于索引数据结构实现是 MySQL 中锁定粒度最细的一种锁只有线程当前使用的行被锁定其他行对于其他线程都是可用的InnoDB引擎默认的锁级别。 注意 InnoDB的行锁是针对索引加的锁不是针对记录加的锁。并且该索引不能失效否则都会从行锁升级为表锁。 优缺点 优点 发生锁冲突几率低并发高 缺点 开销大加锁慢会出现死锁的情况 怎么玩 记录锁Record Locks 几对某条记录加锁 update user set age10 where id1 间隙锁Gap Locks 即对某个范围加锁但是不包含范围的临界数据 update user set age10 where id10 and id10 临键锁Next-Key Locks 又记录锁和间隙锁组成既包含记录本身又包含范围左开右闭区间 update user set age10 where id10 and id10 属性分类 共享锁/读锁Shared Lock/S锁 是什么 是用于读取数据时使用的一种锁。当一个事务对一个数据对象加上共享锁时其他事务也可以对该数据对象加上共享锁但是不能对其加上排它锁。也就是说其他事务可远观而不可亵玩焉。 优缺点 优点 因为共享锁可以让多个事务在同一时间访问同一资源所以在读多写少的情况下共享锁能够提高系统的并发性能和吞吐量。 缺点 共享锁对于写操作是阻塞的即如果一个事务已经持有了共享锁其他事务就不能获取排它锁也就不能对该资源进行写操作共享锁不能保证数据的一致性即多个事务同时进行读操作时可能读取到的数据是不一致的。 怎么玩 在select语句末尾加上lock in share mode关键字。
对id1的用户加读锁
select * from user where id1 lock in share mode; 排它锁/写锁Exclusive Lock/X锁 是什么 是用于修改数据时使用的一种锁。当一个事务对一个数据对象加上排它锁时其他事务既不能对该数据对象加上共享锁也不能对其加上排它锁。也就是说其他事物不可远观更不可能亵玩焉 优缺点 优点 排它锁可以保证在同一时间只有一个事务可以对资源进行写操作从而避免了数据的不一致性排它锁在进行写操作时可以保证数据的完整性从而保证了数据的正确性。 缺点 排它锁会阻塞其他事务的读写操作从而降低了系统的并发性能和吞吐量如果某个事务持有了排它锁并且出现了死锁其他事务将无法获取该资源的锁从而无法进行读写操作。 怎么玩 在select语句末尾加上for update关键字。
对id1的用户加写锁
select * from user where id1 for update; 小扩展意向锁 InnoDB所用的表级锁其设计目的主要是为了在一个事务中揭示下一步将要被请求的锁的类型。 意向共享锁IS 表示事务准备给数据行加入共享锁也就是说一个数据行加共享锁前必须先取得该表的IS锁 意向排他锁IX 类似上面表示事务准备给数据行加入排他锁说明事务在一个数据行加排他锁前必须先取得该表的IX锁。 怎么玩 意向锁是InnoDB自动加的不需要用户干预。 小结 MySQL的锁没有优劣之分只有是否更适合当前场景的合适度之说。 在实际应用中需要根据具体的场景选择适当的锁类型以达到合理的性能和数据一致性。例如如果需要高并发的读写操作可以使用行锁来避免资源竞争和冲突如果需要修改整张表的结构可以使用表锁来避免并发问题。此外还需要注意锁的范围和持续时间尽可能减少锁的持有时间以提高并发性能。
- 上一篇: 河南省住房和城乡建设局网站商城网站建设系统
- 下一篇: 河南省住房和城乡建设厅网站主页公司官网的seo
相关文章
-
河南省住房和城乡建设局网站商城网站建设系统
河南省住房和城乡建设局网站商城网站建设系统
- 技术栈
- 2026年03月21日
-
河南省网站建设哪家好电商外贸平台大全
河南省网站建设哪家好电商外贸平台大全
- 技术栈
- 2026年03月21日
-
河南省汝州市建设门户网站网页美工设计的工作流程?
河南省汝州市建设门户网站网页美工设计的工作流程?
- 技术栈
- 2026年03月21日
-
河南省住房和城乡建设厅网站主页公司官网的seo
河南省住房和城乡建设厅网站主页公司官网的seo
- 技术栈
- 2026年03月21日
-
河南省住房和城乡建设网站万网域名优惠口令
河南省住房和城乡建设网站万网域名优惠口令
- 技术栈
- 2026年03月21日
-
河南省住建厅网站官网wordpress订单查询
河南省住建厅网站官网wordpress订单查询
- 技术栈
- 2026年03月21日
