前言 看了很多关于索引的博客,讲的大同小异.但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引….或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问! 索引是什么? 索引是帮助MySQL高效获取数据的数据结构. 索引能干什么? 提高数据查询的效率. 索引:排好序的快速查找数据结构!索引会影响where后面的查找,和order by 后面的排序. 一.索引的分类 1.从存储结构上来划分:BTree索引(B-Tree…
最近一直没啥时间写点东西,坚持分享真的好难,也不知道该分享点啥,正好有人要问我这些东西,所以腾出点时间,写一下这个主题.同样本篇可以给读者承诺,听不懂或者没收获算我输,哈哈! 众所周知,mysql中读取方式按照是否需要传统意义的锁,分为锁定读和非锁定读两种.锁定读不用多说,那就一堆算法了,行锁,间隙锁,next-key锁,无非就是为了保证,一个事务中锁定读取一条或者多条数据时,不能读到别的事务没有提交的更改(不能脏读),不能同一个事务两次读到的数据内容不一致(应该要可重复读),不能同一个事务,两…
大家好,我是小羽. 我们在平时工作中,使用最多的数据库就是 MySQL 了,随着业务的增加,如果单单靠一台服务器的话,负载过重,就容易造成宕机. 这样我们保存在 MySQL 数据库的数据就会丢失,那么该怎么解决呢? 其实在 MySQL 本身就自带有一个主从复制的功能,可以帮助我们实现负载均衡和读写分离. 对于主服务器(Master)来说,主要负责写,从服务器(Slave)主要负责读,这样的话,就会大大减轻压力,从而提高效率. 接下来,跟着小羽一起来看看它都有哪些核心知识点呢: 简介 随着业务的增…
MySQL索引大都存储在B+树中,除此还有R树和hash索引.B+树的基础还是B树. B树由2部分组成,节点和索引.下面将构建一个B树,每个节点存2个数据,每个节点有前,中,后三个索引.插入数字的顺序为1,2,3,4,5,6. 每个节点存储2个数据,插入3时将进行分裂操作.节点一分为2,并在中间增加一个新的节点.新增节点将1,2,3中间的数字2进行存储. 数字2的前后有2个索引,左边的索引指向的节点中的数字都比2小,右边索引中指向的节点中的数字都比2大. 插入5时,节点1分为2,并将3,4,5中…
## 主键 超键 候选键 外键 (mysql数据库常见面试题) 数据库之互联网常用架构方案 数据库之互联网常用分库分表方案 分布式事务一致性解决方案 MySQL Explain详解 ## 数据库事务的四个特性及含义 (mysql数据库常见面试题) ## drop,delete与truncate的区别(mysql数据库常见面试题) ## 索引的工作原理及其种类(mysql数据库常见面试题) ## 连接的种类(mysql数据库常见面试题) ## 数据库优化的思路(mysql数据库常见面试题) ##…
1. 背景 MySQL实现事务.崩溃恢复.集群的主从复制,底层都离不开日志,所以日志是MySQL的精华所在.只有了解MySQL日志,才算是彻底搞懂MySQL. 今天一灯就带你深入浅出的学习MySQL的三大日志系统,Redo Log(重做日志).Undo Log(恢复日志).Bin Log(备份日志). 2. Redo Log(重做日志) 2.1 Redo Log的内容与作用 Redo Log 记录的是物理日志,也就是磁盘数据页的修改. 作用: 用来保证服务崩溃后,仍能把事务中变更的数据持久化到磁…
情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b,c    a,c   都可以走索引的,其他条件的查询不能走索引. 组合索引 有“最左前缀”原则.就是只从最左面的开始组合,并不是所有只要含有这三列存在的字段的查询都会用到该组合索引. 验证过程如下所示: 首先,在SQLyog中建立一个user表,如下图所示: 对中间3个字段(user_name,us…
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第22篇. 背景 使用mysql最多的就是查询,我们迫切的希望mysql能查询的更快一些,我们经常用到的查询有: 按照id查询唯一一条记录 按照某些个字段查询对应的记录 查找某个范围的所有记录(between and) 对查询出来的结果排序 mysql的索引的目的是使上面的各种查询能够更快. 预备知识 什么是索引? 上一篇中有…
索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据.索引最形象的比喻就是图书的目录了.注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找. 索引在 MySQL 数据库中分三类: B+ 树索引 Hash 索引 全文索引 我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引.要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据…
说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据.” 但是索引是怎么实现的呢?因为索引并不是关系模型的组成部分,因此不同的DBMS有不同的实现,我们针对MySQL数据库的实现进行说明.本文内容涉及MySQL中索引的语法.索引的优缺点.索引的分类.索引的实现原理.索引的使用策略.…