时间:2021-05-23
锁的概念
①、锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具。
②、在计算机中,是协调多个进程或线程并发访问某一资源的一种机制。
③、在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源。
④、如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题。
⑤、锁的冲突也是影响数据库并发访问性能的一个重要因素。
MySQL锁的概述
相对于其它数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking)。BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁。InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
表级锁:表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁。它开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:行级锁是MySQL中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页级锁:页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多。行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。BDB支持页级锁。开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
从上述特点可见,很难笼统地说哪种锁更好,只能就具体应用的特点来说哪种锁更合适!!仅从锁的角度 来说:表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如Web应用。而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有 并发查询的应用,如一些在线事务处理(OLTP)系统。
举例说明
①、在购买商品时,商品库存只有1个的时候,两个人同时购买的时候,到底是谁买到的问题。
②、会用到事务,先从库存表中取出物品的数据,然后插入订单,付款后,插入付款表信息。
③、更新商品的数量,在这个过程中,使用锁可以对有限的资源进行保护,解决隔离和并发的矛盾。
锁的分类
按操作分:
按粒度分:
以上就是关于Mysql锁的全部相关知识点,感谢大家的阅读和对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文总结了MySql索引、锁、事务知识点。分享给大家供大家参考,具体如下:1.索引索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的记录。索引的优点:天
前言最近遇到一个mysql在RR级别下的死锁问题,感觉有点意思,研究了一下,做个记录。涉及知识点:共享锁、排他锁、意向锁、间隙锁、插入意向锁、锁等待队列场景隔离
第一个知识点:表单的属性及总结第二个知识点:H5新增的表单控件和属性以及总结第一个知识点:我们常见的表单验证有哪些呢 text 文本框标签 passwor
前言这是总结SQL知识点的第二篇文章,一次只总结一个知识点,尽量说明白。上次我们谈到行转列,用的是Pivot函数,这次我们来谈谈Unpivot函数。(这里是用的
前言未来的一个月时间中,会总结一系列SQL知识点,一次只总结一个知识点,尽量说明白,下面来说说SQL中常用Pivot函数(这里是用的数据库是SQLSERVER,