mysql 悲观锁与乐观锁的理解 悲观锁与乐观锁是人们定义出来的概念,你可以理解为一种思想,是处理并发资源的常用手段。 不要把他们与mysql中提供的锁机制(表锁,行锁,排他锁,共享锁)混为一谈。 一、悲观锁 顾名思义,就是对于数据的处理持悲观态度,总认为会发生并发冲突,获取和修改数据时,别人会修改 ...
分类:
数据库 时间:
2020-06-25 19:44:02
阅读次数:
55
本人写此随笔时,是在做进销存库存业务时出现了前后数量不等的情况才做一下记录和分享,之前我们很多的开发人员再存储过程中喜欢select......into form 表 将需要的字段数据放入到变量,然后再在随后的业务中后对变量进行修改后,再update回表中,而这时就会导致脏数据的出现; 对此,我认为 ...
分类:
数据库 时间:
2020-06-23 15:54:09
阅读次数:
71
整理自极客时间MySQL45讲 根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候, ...
分类:
数据库 时间:
2020-06-21 16:16:02
阅读次数:
73
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每 次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传 统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写 锁等,都是在做操作之前先上锁。再比如 Java 里面的同步原语 synchroniz ...
分类:
其他好文 时间:
2020-06-21 14:03:03
阅读次数:
67
MySQL锁机制 MySQL都有什么锁 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间 ...
分类:
数据库 时间:
2020-06-18 10:48:54
阅读次数:
57
mysql 数据表引擎有哪些? MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。 MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等(5.6.4以后支持全文索引)。 常 ...
分类:
数据库 时间:
2020-06-17 14:20:08
阅读次数:
66
MySQL有哪些行锁,是如何解决幻读的? 行锁根据互斥的纬度可以分为: 1、共享锁:当读取当一行记录时为了防止别人修改则需要添加S锁。 2、排他锁:当修改一行记录时为了防止别人同时进行修改则需要添加X锁。 根据锁定的范围可以分为: 1、间隙锁:间隙锁锁定范围是索引记录之间的间隙或者第一个或最后一个索 ...
分类:
数据库 时间:
2020-06-16 18:29:30
阅读次数:
92
1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 3、页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 ...
分类:
数据库 时间:
2020-06-16 15:07:23
阅读次数:
106
在上一篇文章《MySQL常见加锁场景分析》中,我们聊到行锁是加在索引上的,但是复杂的 SQL 往往包含多个条件,涉及多个索引,找出 SQL 执行时使用了哪些索引对分析加锁场景至关重要。 ...
分类:
数据库 时间:
2020-06-15 22:32:56
阅读次数:
64
查询引擎命令:show engines MyISAM和InnoDB对比 对比项 MyISAM InnoDB 主外键 不支持 支持 事务 不支持 支持 行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发操作 行锁,操作时只锁住一行,不对其他行有影响,适合高并发 缓存 只缓存索引,不缓存真实数据 ...
分类:
数据库 时间:
2020-06-08 18:54:42
阅读次数:
87