介绍 无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。而这种并发问题的直接后果就是数据不一致问题。那么如何解决这种问题呢?Mysql需要采用锁定机制来解决。 mysql数据库由于其自身架构的特点,存在多种数据存储引擎
无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。而这种并发问题的直接后果就是数据不一致问题。那么如何解决这种问题呢?Mysql需要采用锁定机制来解决。 mysql数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。
行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予应用程序尽可能大的并发处理能力而提高一些需要高并发应用系统的整体性能。虽然能够在并发处理能力上面有较大的优势,但是行级锁定也因此带来了不少弊端。由于锁定资源的颗粒度很小,所以每次获取锁和释放锁需要做的事情也更多,带来的消耗自然也就更大了。此外,行级锁定也最容易发生死锁。
和行级锁定相反,表级别的锁定是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。所以获取锁和释放锁的速度很快。由于表级锁一次会将整个表锁定,所以可以很好的避免困扰我们的死锁问题。当然,锁定颗粒度大所带来最大的负面影响就是出现锁定资源争用的概率也会最高,致使并大度大打折扣。
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高;
mysql> show status like "table%";
* table_locks_immediate:产生表级锁定的次数;
* table_locks_waited:出现表级锁定争用而发生等待的次数;
lock table 表名称 read(write),表名称2 read(write),其他;
show open tables;
unlock tables;
lock table mytable read;
lock table mytable write;
增/删/改/查
--结束END--
本文标题: MySQL并发控制
本文链接: https://www.lsjlt.com/news/5097.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0