关于SQL的优化有哪些

发布时间:2021-10-22 09:28:30 作者:iii
来源:亿速云 阅读:162

本篇内容介绍了“关于SQL的优化有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

大部分人说的SQL优化

阿粉之前帮公司面试过一部分人,因为之前和老大一起面试,所以也看过不少人的简历,而简历上对于数据库这块内容,很多人都写的是这个样子的。

确实,如果你对数据库没有进行过深入的了解的时候,你也不敢往上面写,只能是去写关于SQL语句优化方面的,但是很多时候,在你写完这个SQL语句之后,你是压根不会去主动的去优化的,很多时候都是停在了,不出问题,我就不改,只要功能实现了,那么,一切万事大吉。

而本文,告诉你,不要只是会SQL语句优化。

SQL语句优化我们在面试的时候,面试官看你写了SQL语句优化,有时候就会提问了,那你说说SQL语句优化都是在哪些方面的吧。

关于SQL的优化有哪些

关于SQL语句优化,内容可就比较多了。

。。。。。

类似这样的SQL语句优化还有很多很多,但是大家有没有注意到我在上面标注出来的内容,引擎?  相信大家之前肯定也都知道,但是没有做过多的研究,但是为了各位面试顺利,我们就来加紧分析这个吧。

MySQL体系以下全文,全部按照MySQL来进行分析,分析引擎,我们先从MySQL分析吧。MySQL的体系结构图如下:

关于SQL的优化有哪些

我们能从图中看出一点内容,比如说MySQL的组成部分。

不得不说,这个插件式存储引擎总结的是极其精辟的呀,MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。

但是我们要注意一个最重要的,那就是存储引擎是基于表的,而不是数据库。

MySQL存储引擎

存储引擎是MySQL区别于其他数据库的一个最重要特性,每个存储引擎都有他们自己的特点,不同的特点,会在不同的场景下使用,虽然我们在开发中很多时候都是使用的一种,但是能够根据具体的应用建立不同存储引擎表,这才是最牛逼的吧。

那么我们看看MySQL都支持哪些存储引擎把,手动在自己的MySQL中输入查询语句 show engines,就会如下图所示。

关于SQL的优化有哪些

大家看完是不是感觉还挺多,但是MySQL的9种存储引擎都是各自是各自的特点,然后根据需求的不同,我们在建表的时候可以选择一下,是不是发现了又一个带妹的好机会,那我们就开始分析一下吧。

1.FEDERATED存储引擎

在阿粉之前翻看书籍的时候就看到过这个,说这个引擎不是存放数据的引擎,而是一个指向远程MySQL数据库服务器的,那是什么意思呢,其实一句大白话:“我这里不存表结构文件和数据文件,我是在远程端存的”,这时候就有了个比较有意思的地方,如下图:

关于SQL的优化有哪些

就像图上说的,FEDERATED存储引擎分成了2部分,一部分是本地服务,另外一部分就是远程服务,那么如果在你切换到这个引擎的时候,他在执行CRUD的时候,就会把执行操作的命令发到远程服务器,然后执行完了之后,在发回本地,然后从本地服务器中返回匹配的行即可。

在这里,阿粉不去着重的讲这个,因为重点是我们最常使用的那个,大家肯定都知道,那就是InnoDB存储引擎。

2.InnoDB存储引擎

InnoDB存储引擎这个一般也是大家在面试中经常的能和面试官侃侃而谈的一个,因为它是默认的数据库存储引擎。注意,这个默认是从MySQL的5.5.8开始的

特点比较多,下面就开始分析一下都有哪些特点吧。

2.1InnoDB的体系架构

关于SQL的优化有哪些

我们从上面的图中就能看到,InnoDB存储引擎有许多的内存块,可以认为这些内存块其实就相当于是一个大的内存池,就是线程池是类似的那种,

既然图中我们看到了后台的线程,那么我们也要说说这个后台线程是个什么?

InnoDB存储引擎是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务。

而这个后台线程也是分两个部分的,一个是核心线程,一个是IO线程。

核心线程

核心线程的作用就是将缓冲池中的数据异步的刷新到磁盘上,来保证数据的一致性。

IO线程

IO线程则很简单,主要就是用来IO请求的回调处理。

净化线程

主要作用就是事务提交之后回收已经使用并分配的undo页

清理线程

他的作用是将之前版本中脏页的刷新操作都放入到单独的线程中来完成。

如果阿粉当时面试的时候能够把这些内容给面试官说上,相信工资肯定还能再多来点。

3.Memory 存储引擎

Memory 存储引擎实际上就是将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。也就是说,如果你们的数据存储在Memory  存储引擎中,如果机房不慎掉电,那完了,之前存在里面的东西都没了,就和你用了个 rm -rf效果一样,不过一个是被动的,一个是主动的。

这种用的比较少,阿粉就不再多给大家介绍了,就说说它的特点得了,毕竟一个关机,直接就没了。

4.MyISAM存储引擎

这个引擎特点非常明显,不支持事务,但是支持全文检索,要面向一些OLAP(联机分析处理)数据库应用.

5.BLACKHOLE存储引擎

这个引擎就像他的名字一样,肉包子打狗,有去无回,它的用途也比较简单

6.CSV存储引擎

CSV 存储引擎实际上操作的就是一个标准的CSV  文件,而且他的特点就是不支持索引,也就说,不支持索引,那么效率必然会很低,这个相信很多人都不会选择去使用它。

针对这些引擎,阿粉就说,既然都了解了这么多的内容了,那肯定不能在继续说我们的SQL语句优化了,当你在面试的时候,就要有针对性的了。

假如说面试的时候,面试官问你:现在有一个功能,测试那边反馈过来的信息是,这个功能的响应时间超出了预期的值,你都从哪些方面入手来处理这个问题。

这个问题看似不是很难,但是可以根据这个问题延伸出很多很多的问题。

问题一:如果你说从SQL语句优化,入手,那么势必要去检查索引,而面试官下一个问题可能就是,为什么加了索引,速度就会变快。

问题二:如果你说服务器的配置,那么面试官可能心里就想,为了一个功能上的反馈,你让我去给服务器增加配置,代价太大。

如果你对索引还没有了解到很深层面的时候,这个时候你就可以把SQL语句优化,和看数据库该表的引擎是否可以进行修改,如果可以,那么你就可以开始把这些关于SQL引擎的优势往自己的方向走了。

“关于SQL的优化有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. SQL语句优化有哪些方法?
  2. sql语句的优化方法有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql

上一篇:怎么使用SQLite3

下一篇:如何在Windows 7系统中开启梦幻桌面

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》