1.mysql原子性和持久性怎么保证 2.innodb和myisam区别3.索引分类4.innodb的底层数据结构5.为什么底层使用B+树不用B树

1.mysql原子性和持久性怎么保证

 2.innodb和myisam区别 

3.索引分类 

4.innodb的底层数据结构 

5.为什么底层使用B+树不用B树

索引:

https://www.bilibili.com/video/BV1u7411v7wK?from=search&seid=2075506451452551219

1、索引是什么?索引应该存储的是什么样的数据?

文件 偏移量 定位数据 ,索引存在于内存or磁盘? ->磁盘  放在内存中被使用

知识前提:用户空间 内核空间 

程序的访问有聚集的倾向

局部性原理 :时间、空间局部性

磁盘预读:读取1bit 以页为单位

IO性能:影响因素 1、量; 2、次数

磁盘与内存  网络:带宽 网卡(硬件因素)

优化IO 减少量,减少次数

·索引是帮助MYSQL高效获取数据的数据结构

·索引存储在文件系统中

·索引的文件存储形式与存储引擎有关  

·索引文件的机构

    ·hash  适合memory

    ·二叉树

    ·B树

    ·B+树

存储引擎:表示不同的表数据文件在磁盘中以不同的组织形式存在

    innodb  数据和索引文件放在一个文件中,支持事务,支持表锁,行锁,有外键    

    myisam  不同文件中,不支持事务,只支持表锁,没有外键

    memory

数据结构:

·hash表

索引格式:

01234

数组 :取模存元素,key冲突 在对应下标下面拼接 以链表存储     减少hash冲突问题

扰动函数:存储 0-15 需要4个二进制位   

1 1 1 0 |0 1 0 1

1 0 1 0 |0 1 0 1

后面四位一直 于是 判断前面四位  减少hash冲突

·hash 缺点 

    耗费内存空间

    不适合范围查询

树:背景:遍历节点 比较 很慢 二叉树分支少 排序插入,有利于二分查找  从而演变中 BST 二叉搜索树

BST:左小 右大 

    类似于链表,(极端情况下) 很局限,不平衡

AVL树:二叉平衡树

    要求 最短子树,与最长子树 高度差 不能超过一;

插入时 会进行左右旋转操作,

特点 : 查询性能高(以插入性能为代价)

红黑树:特殊的二叉平衡树

    最长子树 不超过最短子树2倍(子树指的是节点的个数)

插入和查询性能都比较好

    随着元素越来越多 树也就越来越高  IO次数也就高

为什么变深  因为 分支少

B树

degree 阶  每个节点对应放置的元素

树也会变深  造成查询性能变低


缺点:1、每个节点都有key,同时也包含data,而每个页存储空间是有限的,如果data比较大的话会导致每个节点存储的key数量变小

          2、当存储的数据量很大的时候 会导致深度较大,增大查询时磁盘的IO次数,进而影响性能

B+树

与B树区别:

把索引和数据放在不同的磁盘块

存储的数据量比较大,树不深

为什么说B+树比B浅

归根结底还是因为B树得非叶子节点中也含有数据块,导致能够包含得key值 变少 那么就会变深。


页分裂 维护成本比较高(不自增的情况下)

mysql - 存储引擎 innoDB 叶子节点 存放的就是 整行数据(数据文件和索引文件放在一起)

mysql - 存储引擎 myisam 叶子节点 存放的是 数据地址

索引的分类

    ·主键索引:主键是一种唯一索引,但它必须指定为primary key,每个表只能有一个主键。

    ·唯一索引:索引列的所有值都只能出现一次,即必须唯一,值可以为空

    ·普通索引:基本的索引类型,值可以为空,没有唯一性的限制

    ·全文索引:全文索引的索引类型为FULLTEXT。全文索引可以在varchar,char,text类型的列上创建

    ·组合索引:多列值组成一个索引,专门用于组合搜索。

关键字 :回表、最左匹配原则、索引覆盖、索引下推

回表

普通索引的B+树的叶子节点中 存储的不是整行数据而是 当前数据的主键

意味着 遍历两课B+树 

第一次 根据普通索引的那一列 ,B+ 查找主键值

第二次 根据主键值 去主键的B+树 查找整行数据

这就是 回表。 没有主键去找唯一键  没有唯一键 去找rowId。(用户不可见,oracle 直接看到rowId)

索引覆盖举个例子

 select * from t1 where name  = 'ma';   (1)

 select id from t1 where name  = 'ma'   (2)

id是主键

所以(1) 第一次遍历B+树查找到id 值 ,又根据id值 遍历B+树查找整行数据

       (2) 遍历B+树查找id值 返回。

最左匹配

组合索引,当查询的sql语句中的条件都是其中某些列的时候,可以根据这些列来创建组合

age,gender

select  * from t1 where age = ? and gender =?

select  * from t1 where  gender =? and age = ? 

select  * from t1 where  gender =? 

select  * from t1 where  age = ? 

mysql 优化器 会帮助mysql 调整匹配顺序

索引下推 

5.7 之前 先根据age字段从存储引擎层 将数据拉去回server层,然后在server层进行gender的筛选

5.8   再从存储引擎层拉取数据的时候,就直接根据age,gender一起进行筛选

谓词下推

select t1.name ,t2.name from t1, join t2 on t1.id = t2.id;

1、t1 和 t2根据id字段进行关联 然后从关联的所有字段中取出两个name

2、把当前sql语句中用到的所有字段都取出来,然后再根据id进行关联。  IO少

MVCC  

//www.greatytc.com/p/8845ddca3b23

事务隔离级别

read uncommiter

read commited

default 级别:repeatable Read 

serilizable 串行的

for update 行锁; mysql隐式的 列

事务的丢失更新:

https://blog.csdn.net/sun8112133/article/details/89853755

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349