mysql
文章平均质量分 89
向神明诉语、
这个作者很懒,什么都没留下…
展开
-
图解mysql——事务篇
例子:A读取余额大于50万的数据数量为10条,B插入了一条余额为60万的数据并且提交了事务,A再次读取数据数量为11条,两次读取数据的数量不一致,这种现象叫做幻读。例子:A第一次读取余额为100万,B更新余额为200万并且提交事务,此时A再次读取余额为200万,两次读取数据不一致,这种现象为不可重复读。例子:A读取余额时读取到了B把余额更新后的数据,但是B没有提交,如果发生回滚,则A读取的数据就是过期的,这种现象就是脏读。四种隔离级别可以避免一些问题。隔离程度从上到下越来越高。原创 2023-02-23 11:20:40 · 111 阅读 · 1 评论 -
图解mysql——索引篇(索引失效、count(*)和count(1)区别)
count()这个函数里面的参数时变量名的话就是不为NULL的数量,参数为1或者*时就是全部记录。原创 2023-02-22 19:53:57 · 1011 阅读 · 0 评论 -
图解mysql——索引篇3为什么 MySQL 采用 B+ 树作为索引
可以看到,二分查找法每次都把查询的范围减半,这样时间复杂度就降到了 O(logn),但是每次查找都需要不断计算中间位置二叉查找树的特点是一个节点的左子树的所有节点都小于这个节点,右子树的所有节点都大于这个节点每个节点的左子树和右子树的高度差不能超过 1。也就是说节点的左子树和右子树仍然为平衡二叉树,这样查询操作的时间复杂度就会一直维持在 O(logn)。下面是红黑树插入节点的过程,这左旋右旋的操作,就是为了自平衡。原创 2023-02-22 16:49:18 · 68 阅读 · 0 评论 -
图解mysql——索引篇2从数据页的角度看B+树
知识点:1.InnoDB的数据读写单位是【数据页】 (下图是数据页的结构)2.数据页默认大小是16KB3.数据页中的记录按照主键顺序组成单向链表页目录创建的过程如下:1.将所有的记录划分成几个组,这些记录包括最小记录和最大记录,但不包括标记为“已删除”的记录;2.每个记录组的最后一条记录就是组内最大的那条记录,并且最后一条记录的头信息中会存储该组一共有多少条记录,作为 n_owned 字段(上图中粉红色字段)3.页目录用来存储每组最后一条记录的地址偏移量,这些地址偏移量会按照先后顺序存储起来,原创 2023-02-20 19:47:03 · 109 阅读 · 0 评论 -
图解mysql——索引基础面试篇
定义:索引就是帮助存储引擎快速获取数据的一种数据结构,简单说索引是数据的目录主键索引二级索引B+ 树的非叶子节点不存放实际的记录数据,仅存放索引,因此数据量相同的情况下,相比存储即存索引又存记录的 B 树,B+树的非叶子节点可以存放更多的索引,因此 B+ 树可以比 B 树更「矮胖」,查询底层节点的磁盘 I/O次数会更少。B+ 树有大量的冗余节点(所有非叶子节点都是冗余索引),这些冗余索引让 B+ 树在插入、删除的效率都更高,比如删除根节点的时候,不会像 B 树那样会发生复杂的树的变化;B+ 树叶子节点原创 2023-02-16 20:46:56 · 122 阅读 · 0 评论 -
图解mysql——基础篇
Server层按顺序执行sql的步骤为:1.客户端请求->2.连接器(验证用户身份,给予权限) ->3.查询缓存(存在缓存则直接返回,不存在则执行后续操作)->4.分析器(对SQL进行词法分析和语法分析操作) ->5.优化器(主要对执行的sql优化选择最优的执行方案方法) ->6.执行器(执行时会先看用户是否有执行权限,有才去使用这个引擎提供的接口)->7.去引擎层获取数据返回(如果开启查询缓存则会缓存查询结果)概括总结:命令长连接与短连接总结:流程:1.连接器工作结束,mysql原创 2023-02-16 08:43:01 · 323 阅读 · 0 评论