用于存储临时数据的临时表,以及数据仓库中的纬度表 。Memory存储引擎默认使用哈希索引,而不是我们熟悉的B+树索引
虽然Memory存储引擎速度非常快,但在使用上还是有一定的限制 。比如,只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型 。
最重要的是,存储变长字段(varchar)时是按照定常字段(char)的方式进行的,因此会浪费内存
Archive存储引擎Archive存储引擎只支持INSERT和SELECT操作,从MySQL 5.1开始支持索引 。Archive存储引擎使用zlib算法将数据行(row)进行压缩后存储,压缩比一般可达1∶10 。正如其名字所示,Archive存储引擎非常适合存储归档数据,如日志信息 。Archive存储引擎使用行锁来实现高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能 。
Federated存储引擎Federated存储引擎表并不存放数据,它只是指向一台远程MySQL数据库服务器上的表 。这非常类似于SQL Server的链接服务器和Oracle
的透明网关,不同的是,当前Federated存储引擎只支持MySQL数据库表,不支持异构数据库表 。
Maria存储引擎Maria存储引擎是新开发的引擎,设计目标主要是用来取代原有的MyISAM存储引擎,从而成为MySQL的默认存储引擎 。
Maria存储引擎的特点是:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项,以及更好的BLOB字符类型的处理性能 。
SQL是如何执行的一条查询的SQL发送到MySQL服务器被执行,返回查询结果,这中间经历了什么?下面我们来看一下一条SQL语句从客户端发送给MySQL服务器,MySQL到底执行了哪些操作?
文章插图
如上图所示
- 客户端SQL发送到MySQL服务端,首先会去查询缓存里面查找,如果多次执行同一个SQL是会命中缓存中,此时直接通过缓存来取数据
- 若没有命中查询缓存,则将SQL发送给解析器,解析器会对SQL过行语法、语义分析,同时也会对SQL合法性进行校验
- SQL语义解析出来后,优化器会对SQL语义进行优化,比如,是走索引还是全表扫描,优化器会根据实际情况来确定一个最优的执行方案(当然,不一定是最优的,只是给出MySQL认为是最优的执行方案)
- 优化完毕后,就给到执行器进行执行SQL,取出SQL执行结果
- 最后将执行结果返回给客户端
当然,实际的过程远远比这个要复杂,这里只是列出来大致的步骤和过程,方便大家理解
推荐阅读
- Nacos数据持久化到MySQL
- MySQL 你可能忽视的选择问题
- 淘宝如何进入卖家中心 淘宝卖家中心入口在哪
- 茶中加药不治病,茶中加药不治病
- |看完这条,在职场中你会比其他人都走得远!
- 广州市|裁判,悠着点,您的红牌可能毁了一个中国球员的职业生涯
- 招聘|这个编制单位4月中旬公开招聘,年收入可达12万,专科生也能报名
- |在工作中领悟出的职场道理
- 节奏感强的中文歌曲分享推荐
- 卤蛋可以放多久