![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
深圳卢先生
这个作者很懒,什么都没留下…
展开
-
快速理解脏读、不可重复读、幻读和MVCC
mysql mvcc原创 2022-08-24 03:05:53 · 195 阅读 · 0 评论 -
mysql中建立联合索引需要注意哪些问题
联合索引的作用如下:用于多字段查询,比如,建了一个 key(a,b,c) 的联合索引,那么实际等于建了 key(a)、key(a,b)、key(a,b,c) 等三个索引,(是为什么会这样,待考证) 我们知道,每多一个索引,就会多一些写操作和占用磁盘空间的开销,尤其是对大数据量的表来说,这可以减少一部分不必要的开销; 覆盖索引,比如,对于联合索引 key(a,b,c) 来说,如果使用 SQL:select a,b,c from table where a=1 and b = 1 ,就可以直接通过遍历索原创 2021-09-04 17:33:48 · 366 阅读 · 0 评论 -
MySQL 执行计划的浅析
首先是explain中所有列的信息,Extra只是其中比较重要的一列。EXPLAIN列的解释table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index、ALLtype显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > in...原创 2021-09-04 17:25:29 · 1099 阅读 · 1 评论 -
为什么 MySQL 官方建议使用自增主键作为表的主键?
因为自增主键是连续的,在插入过程中尽量减少页分裂,即使要进行页分裂,也只会分裂很少一部分;并且自增主键也能减少数据的移动,每次插入都是插入到最后,所以自增主键作为表的主键,对于表的操作来说性能是最高的。...原创 2021-09-03 13:02:17 · 445 阅读 · 0 评论 -
B树与B+树的区别,以及由此造成的数据库引擎的不同
...原创 2021-08-27 02:08:39 · 77 阅读 · 0 评论 -
查看mysql锁情况的命令详解
1.检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况mysql> show status like 'InnoDB_row_lock%';+-------------------------------+-------+| Variable_name | Value |+-------------------------------+-------+| InnoDB_row_lock_current_waits | 0 ||原创 2021-08-18 22:24:03 · 2192 阅读 · 0 评论 -
InnoDB行锁实现方式
InnoDB行锁是通过给索引上的索引项加锁来实现的,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁在实际应用中,要特别注意InnoDB行锁的这一特性,不然的话,可能导致大量的锁冲突,从而影响并发性能。下面通过一些实际例子来加以说明。(1)在不通过索引条件查询的时候,InnoDB确实使用的是表锁,而不是行锁。(2)由于MySQL的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但是如果是使用相同的索引键,是会出现锁冲突的。(3)当...原创 2021-08-18 22:14:46 · 517 阅读 · 0 评论 -
mysql中的mvcc机制
MVCC全称是【Multi-Version ConCurrency Control】即多版本控制协议。MVCC的主要是靠在每行记录上增加隐藏列和使用undo log来实现的,隐藏列主要包括,改行数据创建的版本号(递增的),删除时间,指向undo log的指针等。MVCC是读不加锁的,只有在写的时候才会加锁,从而提高的并发的效率。那么MVCC是如何保证读写隔离的呢?主要是通过快照读和当前读两个操作。快照读: MVCC为了保证并发的效率,在进行读取数据的时候是不加锁的,在执行select的时候(不带原创 2021-08-16 03:10:46 · 1208 阅读 · 0 评论