![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 94
vinter-he
目前在一个创业型公司担任技术负责人,因为工作需要和个人爱好,接触了几种语言和些许架构知识,写的博客也多是记录和分享自己的工作和学习过程中的一些经验。以我的水平在平台上还算是个小学生,感谢在我前进路上帮过我的各位大牛,有不足之处,望大家不吝赐教。
展开
-
b-tree和b+tree以及mysql为什么使用了b+树
最近写了一些mysql的博客,但是对于索引的数据结构一致没有深入的描述过。所以就有了这一篇文章。b tree和b-tree就是一个玩意应该很多人都看到过b树和b-树,还有b+树,不了解的小伙伴还以为这是三个东西,但是其实b树和b-树就是一种事物的两种称呼而已。b树(Balanced Tree)多路平衡查找树对比于二叉树来说,可以认为他是多叉的。其图如下其特点如下:所有关键字和数据分布在整个树中。 任何关键字出现且只出现在一个节点中。 因为数据在节点上,所以搜索有可..原创 2020-08-31 18:16:40 · 12217 阅读 · 0 评论 -
聚簇索引和非聚簇索引的区别对比
释义:聚簇索引:将数据与索引放到了一起存储,索引树结构的叶子节点保存了行数据非聚簇索引:将数据与索引分开存储,索引结构的叶子节点放的是指向数据的指针(或者说是地址)在mysql中的应用innodb的索引都是聚簇索引,其数据直接存放在叶子节点上,但是主键索引(一级索引)叶子节点中存放的就是数据本身,辅助索引的叶子节点上存储的是主键。myisam使用的是非聚簇索引,其叶子节点上不存放数据,存放的是数据的实际地址。一张表一定只有一个聚簇索引,因为聚簇索引代表了文件的实际存储形式,一张表在磁盘上只会有原创 2020-08-27 16:22:48 · 14068 阅读 · 3 评论 -
innodb的索引下推
索引下推,是mysql优化多列索引查询的一种方案,叫做索引下推不如翻译为索引条件下推更合适(Index Condition Pushdown)简称ICP,因为他实际上是把where中的查询索引条件,下推给了存储引擎本文涉及到的内容有:回表索引下推索引覆盖预备知识:b+tree主键索引和非主键索引聚簇索引和非聚簇索引主键索引和非主键索引说到回表,我们先回顾一下innodb主键索引和非主键索引(辅助索引)的区别(具体的之后写一篇文章来讲解,这里只是简单带过)。他们数据存储的方式是一原创 2020-08-25 16:32:18 · 13040 阅读 · 0 评论 -
mysql的explain字段说明
在写上一篇文章的时候,用到了explain,来讲解一下explain的用法。其用途是为了查看sql语句的执行计划,比如查看SQL语句有没有使用上了索引,有没有做全表扫描等如下:表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询基本用法和输出格式语法explain < SQL>输出格式+----+-------------+-------+-------+-------------------+---------+原创 2020-08-25 11:38:03 · 12980 阅读 · 0 评论 -
关于InnoDB的读写锁类型以及加锁方式
(本文为了方便,英文关键词都都采用小写方式,相关知识点会简单介绍,争取做到可以独立阅读)文章开始我会先介绍本文需要的知识点如下:innodb的聚簇索引(聚集索引)和非聚簇索引(二级索引、非聚集索引)的知识innodb的隔离级别(isolation level)简单的sql知识(能读懂sql语句)MVCC(Multi-Version Concurrent Control)多版本并发控制数据的脏读、幻...原创 2018-01-13 09:27:46 · 16997 阅读 · 8 评论 -
innodb组合索引的最左前缀原则
我们在使用数据库的时候,为了增加访问速度,经常会给某张表增加一些索引。单列索引我之前已经写过一篇文章提过,今天我们主要讲一下怎么使用多列索引,和多列索引的最左前缀原则。关于最左前缀的误解早些年读高性能mysql这本书的时候,当年感觉书中对于最左前缀的描述相对来说晦涩一点,并且没有详细的例子来说明具体什么是最左前缀,所以在一段时间内我都以为where还要按照顺序写才能触发最左前缀,其实并不是这样。假设表结构如下CREATE TABLE `testindex` ( `id` int(10) NOT原创 2020-08-21 16:37:16 · 23670 阅读 · 6 评论 -
脏读,不可重复读,幻读区别和避免
在了解脏读,不可重复度,幻读之前,首先要明白这三种情况的出现都是和数据库并发事务有关联的,如果所有的读写都按照队列的形式进行,就不会出现问题。名词解析和解决方案脏读脏读又称无效数据读出(读出了脏数据)。一个事务读取另外一个事务还没有提交的数据叫脏读。例如:事务T1修改了某个表中的一行数据,但是还没有提交,这时候事务T2读取了被事务T1修改后的数据,之后事务T1因为某种原因回滚(Rollba...原创 2020-03-27 14:28:06 · 14127 阅读 · 0 评论 -
mysql刷题(不定时更新)
面试阶段大家基本都会问一些mysql的题,具体的高深理论以后再慢慢补充,但是刷题是不可避免的,下面直接上货创建/删除表和索引系列创建表CREATE TABLE if not exists `test_date` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` date DEFAULT NULL, `temp` int(11) N...原创 2020-03-24 17:46:44 · 12892 阅读 · 0 评论