MySql干货分享

1.索引

1.B+Tree:索引底层是用的B+tree数据结构,这种结构可以大幅度提升查询性能,因为B+tree底层是由叶子节点组成的单向列表,塑造出它的稳定性,尤其是范围内的数据检索。b树遍历需要繁琐的中序遍历,b+s树就不需要,直接读取单链表就可以获取到范围内数据,由于B+tree相比较于B树,其树的的高度会相比较低,所以在遍历时会少很多遍历的时间,在时间复杂度上就已经很低。所以B+tree是目前为止性能最高的索引结构。索引之所快也就是将传统的顺序遍历改为二分查找,可以使得要遍历的次数很大程度上减少。


2.Mysql索引:B+tree索引是目前大多数Mysql默认索引方式,索引又分为聚簇索引和非聚簇索引。聚簇索引是一个记录着数据的索引节点,非聚簇索引是存着主键id,再由id去寻找真实数据。

哈希索引:哈希索引是查找速度极快的一种索引,其时间复杂度能到O(1),但是由于是hash策略实现。所以不支持排序和分组,只支持精确查找,不支持范围查找和范围查找。

全文索引:innodb不支持全文索引,MyISAM支持全文索引,记录着关键字到文献的映射。

空间数据索引:支持空间维度上的索引机制,GIS相关。

3.索引优化

1.索引的优化实质上就是尽可能的利用到索引,索引在查询过程中既不能是函数一部分也不能是表达式一部分,不然会导致索引失效的问题。

2.尽可能的使用多列索引,多列索引会让限制条件更加严格,让索引发挥更大的作用。

3.索引列的顺序有时候也会影响查询效率。

4.对于Blob,text,varchar类型的数据使用前缀索引再好不过,可以只索引前部分的数据,可以节省时间。

5.覆盖索引

4.索引的优点

1.索引会让我们查询次数降低,实质层面上也就减少了IO操作,因为IO操作相当费时;

2.帮助服务器避免分组和排序,因为索引在数据结构层面上,已经有排序和分组的特征。

3.稳定性,将随机性的IO变成顺序性的IO,B+Tree索引会将相邻的数据节点放在一起。

5.索引的适合范围

1.索引在小数据量的数据库中,发挥的作用并不大,因为创建索引也是一定程度上增加了空间复杂度,大部分建立全表扫描要比建立索引更加高效。

2.在中型数据量的数据库上可以加索引,因为这个可以大幅度提升数据的查询效率。

3.大型数据量的数据库上,不仅需要索引,也可以考虑建立分库分表技术来缓解数据库的压力。

6.查询的优化

1.对于大查询可以将大查询分割成一个个小查询,有效减少服务器的压力。

2.分解大连接查询

三.存储引擎

目前mysql两个存储引擎分别为 innodb和myisam引擎;从几个维度来对这两个存储引擎进行比对。

事务:前者支持事务,后者不支持事务

外键:前者支持外键,后者不支持外键

热备份:前者支持热备份,后者不支持热备份

安全性:前者课恢复性更高,后者崩溃可恢复性比较低。

并发:MyIsam支持表级锁,Innodb还支持行级锁。

其他:MyIsam支持空间索引和压缩表。

#MySQL#
全部评论
感谢参与牛客创作者计划!欢迎更多牛友来写干货,瓜分5000元奖励~~技术场活动链接:https://www.nowcoder.com/link/czztlqjs (参与奖马克杯每周五发放,敬请期待~)
点赞 回复 分享
发布于 2021-01-14 15:58
关于全文索引:1.2.的innodb已经支持全文索引。 参考:MySQL技术内幕
点赞 回复 分享
发布于 2021-03-29 22:41

相关推荐

扭转乾坤_:现在企业都是学华为,一直通过丢池子里,最后捞
点赞 评论 收藏
分享
10-14 21:44
门头沟学院 Java
九门空城:10000月薪+1500房补+中午20餐补+晚饭免费 上下班班车免费通勤 就问你来不来吧
投递京东等公司10个岗位
点赞 评论 收藏
分享
10 42 评论
分享
牛客网
牛客企业服务