mycat的知识体系一

一、MySQL的基本引入

三范式设计

1、早期数据库使用,需要节省空间,通过对表结构设计进行节省空间操作,需要利用三范式设计

三范式可以最大程度节省空间(浪费时间)

第一范式:数据库字段不可拆分

userPhone违反了第一范式,因为电话号码可以分为座机和手机两个字段

第二范式:满足第一范式前提,所有非主键字段,必须依赖全部的注解(复合主键)

上图违反了三范式的第二范式,classname和stuId无关,可以拆分成两个表

第三范式:第二范式前提下,非主键字段必须全部依赖主键字段,不能依赖其他非主键字段

上图违反了第三范式设计,因为学院name依赖的是学院Id,依赖的不是主键

需要进行拆分

 

一旦严格按照三范式设计,每个表维护全局唯一的一批内容,节省了空间

二、由MySQL引出的数据结构

mysql的索引数据结构B+Tree

二叉树

问题:如果跟节点每选好,有可能数据向一边倾斜,链式查询

平衡二叉树

叶子节点的高度偏差不能超过1

如果高度差超过1,可以通过左旋、右旋达到平衡

问题一:效率低,数据量很大时,树变得很高,磁盘io次数很多

问题二:查询不稳定,有可能一次,也有可能很多次

问题三:节点数据太少,没哟充分利用磁盘io(默认一次io传输4k数据)

B-Tree

每个节点可以保存多个关键字,每次io默认16k

相比二叉树:

树高大大减小,充分利用磁盘(每个节点放满16k)

B+Tree

与B-Tree类似

B+Tree特点:

特点1:半闭合的区间

特点2:根与支节点只保存关键字和子节点引用,不保存具体数据的位置信息

特点3:叶子节点的每个元素都有下个元素的引用,所有子节点形成链表

与B-Tree比较

优势一:全表扫描快,只需扫描叶子即可,叶子有数据的引用

优势二:排序功能强,因为叶子天然排序

优势三:一次io获取的关键字更多(由于根和支节点只保存关键字),一次读的更多,树高小

优势四:查询效率更稳定(看似b-Tree效率高,但是由于树高小,磁盘io少)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值