MySQL

本文探讨了MySQL官方文档中的索引数据结构,重点介绍了B+树、二叉树与红黑树,以及它们在减少磁盘IO和优化查询性能中的作用。讨论了InnoDB的主键策略、哈希索引的使用限制,以及联合索引的工作原理。同时提到了SQL优化技巧如最左前缀法则和EXPLAIN分析。
摘要由CSDN通过智能技术生成

MYSQL官方文档。

索引数据结构:

二叉树 

索引要减少IO的次数

数据结构一个非常好用的网站:

Data Structure Visualization (usfca.edu)

二叉树可能会退化为链表。

红黑树的高度,可能会很高。

B+树的高度

在内存里面做计算要比一次IO快的多。

一个h=3的B+树,一个节点16kb   ,一个节点能放1170个索引。

bigint=8B   指针在MySQL底层源码开辟的是6B。 

B+树能在树很低的情况下,存大量的索引。

磁盘IO与内存计算差别很大。

MySAM等存储引擎都是形容数据库表级别的。

.frm框架

MYI放的是表的索引,用B+树构建的索引数据结构。B+树的叶子结点存储的信息是索引所在行的磁盘文件地址。获取这个地址后去另外一个文件MYD中快速地定位到这一行。

不同的存储引擎,存储结构不一样

.ibd文件 index  和  database

MySAM主键索引

聚集索引遍历快。

下图是回表操作:

 主键是UUID是什么意思?   ROWID

InnoDB可以不建主键,但是MySQL底层会帮你做一件事情,他会先找一列可以作为索引的数据,充当索引,然后构建B+树,但是如果没有找到的话,他会默默地做一个rowId充当索引。所以,还是建议你自检建主键。

MySQL的DB资源是非常宝贵的,让数据库去建主键是不合理的。

整形比大小比字符串比大小快。整形的大小比uuid小。

自增的MySQL就不用重新帮你排序了。

rowId好像orcle数据库会建

线上的SSD价格非常高。

哈希结构

哈希的时间复杂度是O(1)

哈希用的特别少?

哈希冲突,要遍历链表。遍历链表是比较耗费时间的。

而主要原因是不支持范围查找

HashMap的底层就已经成了用红黑树来实现的了。

联合索引 的存储结构有的SQL语句走索引,有的sql语句不走索引

EXPLAIN分析情况,优化的问题 

联合存储索引底层的存储结构:按照建索引的先后顺序的名称来建索引,B+树的索引是从左到右依次递增的。

优化慢SQL查询。

java开发要学明白的东西挺多的。

 

最左前缀法则:

MVCC

锁机制

SQL优化

底层优化原理

SQL语句很长不好优化

把一线互联网公司的架构了解了解。

JVM性能调优

Tomcat调优,各种性能调优

        

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值