
mysql
文章平均质量分 93
zhangzhen02
这个作者很懒,什么都没留下…
展开
-
MYSQL表联接算法深入研究
本文介绍了MYSQL中常见的多种联接算法,不同的算法有不同的适用场景。在SQL问题排查或者优化SQL语句时,可以根据不同的场景选用不同的算法,提高联接查询语句的执行效率。原创 2024-12-09 13:40:51 · 975 阅读 · 0 评论 -
2020年Java面试题
并行流底层实现和问题 底层使用forkjoinpool,默认线程数为核心数,拆分使用对半递归拆分。 问题,1.同用一个池子,线程数有限,如果有IO阻塞任务,将会导致其他任务长时间等待。 sql执行流程 连接-查询缓存-语法解析器和预处理-查询优化器-执行计划-执行SQL 连接:tcp连接,权限验证 查询缓存:根据query进行hash运算,存储结果 语法解析器和预处理:验证语法是否正确,库表字段是否存在 查询优化器:基于成本选择成本最小的语句 执行计划:生成查询的指令树 执行sql: 调用存储引擎的API进原创 2020-08-27 10:12:37 · 256 阅读 · 0 评论 -
一文深入理解mysql
一,索引 1.1 mysql 索引数据结构为什么要用B+树? 1.1.1 二叉树:这事要从二叉树说起,在搜索数据中,二叉树可是使复杂度从O(n),转化为O(log2n),性能得到很大提升。不过存在树退化成链表的问题。 1.1.2 平衡二叉树:为解决以上的问题,出现了平衡二叉树(AVL),树的左右高度差不好过1,不会退化成链表。问题是旋转耗时,性能较低。尤其是删除节点时,AVL需要维护从跟节点到该节点路径上的所有节点的平衡,旋转的量级为O(logn)。 1.1.3 红黑树:红黑树只要求大致的平衡,只保证从根节原创 2020-07-06 14:07:05 · 461 阅读 · 0 评论 -
什么是redo log,binlog,undo log?有什么用?
一,redo log 实现方式:Innodb存储引擎 数据库并不是每次操作都写到磁盘,而是先将操作写到内存,过一段时间,再将所有操作一起写入磁盘,这样可以减少IO操作。 redo log就提供这样的功能,每句sql都写到redo log 的内存里,并标记为prepare。当事务提交后,会将此条redolog置为commit状态。之后再进行写入磁盘。 这样就减少了IO操作,并保证一旦落库,即使数据库宕机,也能从redolog恢复已提交的事务。 redolog缓存是固定大小的循环缓存. 二,binlog 实现方原创 2020-07-03 17:57:18 · 972 阅读 · 0 评论 -
唯一索引和普通索引的区别,以及changeBuffer
一,changeBuffer起源 首先Innodb存储引擎,将数据库文件分为记录文件和索引文件,当数据增删改的时候,就需要需改数据文件(这个是必须的),还需要需改索引文件。 索引文件其实是次要的,因为频繁修改索引文件产生的大量随机IO就显得很没有必要。 changeBuffer应运而生。 二,changeBuffer作用 changeBuffer是Buffer Pool的一部分,用来对二级非唯一索引进行缓存。这样当操作命中缓存中的索引时,就可以将操作进行合并,在相对空闲时再进行写入磁盘操作,从而减少IO频率原创 2020-07-03 11:46:24 · 813 阅读 · 0 评论 -
Mysql explain 含义及操作实战
explain 可以用来分析该条Sql被执行的情况,是sql优化的必备技能。 有哪些字段 各个字段的含义 id 这个字段我用来确定执行的顺序。 存在多条时,按数字从大到小执行。同样的数字,由上向下执行。 select_type 这个字段用来表示该条是一个什么类型的,主查询,子查询等。 A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个。 B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位原创 2020-06-19 11:31:27 · 240 阅读 · 0 评论