![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
zhangzhen02
这个作者很懒,什么都没留下…
展开
-
2020年Java面试题
并行流底层实现和问题底层使用forkjoinpool,默认线程数为核心数,拆分使用对半递归拆分。问题,1.同用一个池子,线程数有限,如果有IO阻塞任务,将会导致其他任务长时间等待。sql执行流程连接-查询缓存-语法解析器和预处理-查询优化器-执行计划-执行SQL连接:tcp连接,权限验证查询缓存:根据query进行hash运算,存储结果语法解析器和预处理:验证语法是否正确,库表字段是否存在查询优化器:基于成本选择成本最小的语句执行计划:生成查询的指令树执行sql: 调用存储引擎的API进原创 2020-08-27 10:12:37 · 230 阅读 · 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 · 404 阅读 · 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 · 926 阅读 · 0 评论 -
唯一索引和普通索引的区别,以及changeBuffer
一,changeBuffer起源首先Innodb存储引擎,将数据库文件分为记录文件和索引文件,当数据增删改的时候,就需要需改数据文件(这个是必须的),还需要需改索引文件。索引文件其实是次要的,因为频繁修改索引文件产生的大量随机IO就显得很没有必要。changeBuffer应运而生。二,changeBuffer作用changeBuffer是Buffer Pool的一部分,用来对二级非唯一索引进行缓存。这样当操作命中缓存中的索引时,就可以将操作进行合并,在相对空闲时再进行写入磁盘操作,从而减少IO频率原创 2020-07-03 11:46:24 · 745 阅读 · 0 评论 -
Mysql explain 含义及操作实战
explain 可以用来分析该条Sql被执行的情况,是sql优化的必备技能。有哪些字段各个字段的含义id这个字段我用来确定执行的顺序。存在多条时,按数字从大到小执行。同样的数字,由上向下执行。select_type这个字段用来表示该条是一个什么类型的,主查询,子查询等。A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个。B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位原创 2020-06-19 11:31:27 · 199 阅读 · 0 评论