![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 51
指尖流年999
试试
展开
-
MSYQL MVCC多版本并发控制机制
mysql在可重复读隔离级别下,如何保证事务较高的隔离性,靠的是MVCC((Multi-Version Concurrency Control)机制来保证的。对一行数据的读和写两个操作默认 是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操 作加锁互斥来实现的。mysql隔离级别(读已提交和可重复读)都实现了MVCC机制。mvcc机制其实是靠undo回滚日志和readview一致性视图来实现的。undo回滚日志版本链是指一行数据被多个原创 2022-01-05 19:06:49 · 561 阅读 · 0 评论 -
MYSQL表锁,行锁,间隙锁(Gap Lock)
间隙锁,锁的就是两个值之间的空隙。间隙锁只有再可重复读级别下才会生效。Mysql默认级别是可重复读repeatable-read,可重复读存在幻读问题,可以用间隙锁来解决幻读。例如:account表数据存在三个间隙:(3,10),(10,20),(20,正无穷)如果一个事务执行sql:update account set name='aaa' where id>3 and id<18;那么其他事务将无法在间隙范围(3,20]插入数据。这个...原创 2022-01-05 16:31:45 · 1331 阅读 · 0 评论 -
MYSQL并发事务处理带来的问题
更新丢失(Lost Update)或者脏写当两个或多个事务同时操作同一行数据的时候,然后基于最初选定的值更新该行时,由于每个事务不知道其他事务的存在,会发生丢失更新问题,最后的事务的更新会覆盖其他事务的更新。脏读(Dirty Reads)一个事务对一行数据做修改,在这个事务提交之前,这条记录的数据处于不一致的状态,也就是说修改的数据对其他事务是不可见的;但是,在不加控制的时候,另一个事务就会读取到未提交的数据,也就是脏数据,并对数据进行修改。一句话:事务A读取到了事务B已经修改但尚未..原创 2022-01-05 16:06:49 · 596 阅读 · 0 评论 -
事务和ACID属性
事务是指一组sql语句组成的逻辑处理单元。ACID是指原子性,一致性,隔离性,持久性。原子性(Atomicity):事务是一个原子操作,是一个不可分割的工作单位,对数据的修改,要么都执行,要么都不执行。一致性(Consistent):在事务开始和完成的时候,数据都要保持一致状态。使得数据从一个一致的状态转换到另一个一致状态。这意味着所有相关的数据规 则都必须应用于事务的修改,以保持数据的完整性。隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的独立环原创 2022-01-05 15:36:02 · 514 阅读 · 0 评论 -
MYSQL表关联JOIN常见两种算法
1、嵌套循环连接Nested-Loop Join (NLJ)算法。一次一行从一张表(驱动表)中读取行数据,再从这行数据中获取关联字段,根据关联字段再到另一张表(被被驱动表)中取出满足条件的行,然后取出两张表的结果集合。EXPLAIN select * from t1 inner join t2 on t1.a= t2.a;2、 基于块的嵌套循环连接 Block Nested-Loop Join(BNL)算法把驱动表的数据读入到 join_buffer 中,然后扫描被驱动表,把..原创 2022-01-05 14:49:22 · 511 阅读 · 0 评论 -
mysql count操作效率比较
在innodb引擎中:在字段有索引情况下:count(*)≈count(1)>count(字段)>count(主键id)字段有索引的情况下,其实这四种性能其实都差不多,非要抠细节的话,那就如果上面排名一样了。先说count(主键id),去主键索引树扫描,判断不为null,然后计数加1;但是主键索引树的叶子节点是完整数据,扫描起来会比较慢;count(字段)是扫描二级索引,判断字段是否允许为空,然后计数加1,二级索引的叶子节点是只存了主键字段,那肯定是比完整数据占用空间少,所以co原创 2022-01-01 17:45:58 · 1221 阅读 · 0 评论 -
MYSQL索引下推
索引下推,全程,索引条件下推(Index Condition Pushdown)简称ICP。SELECT * FROM employees WHERE name like 'LiLei%' AND age = 22 AND position ='manager'创建了索引:idx_name_age_position,联合索引。正常情况(MYSQL5.6之前),这条sql根据最左前缀匹配原则,name会走索引,age和position不一定会走索引。name是like模糊匹配,age和postio原创 2021-12-30 11:00:09 · 2668 阅读 · 0 评论