MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为数据库 近年来,随着MySQL的不断发展,越来越多的互联网公司也选择了MySQ作为数据库存储,其中不乏一些大厂,说明MySQL越来越受开发者的青睐 MySQL区别于其他数据库最重要的一个特点就是插件式存储引擎 存储引擎是底层物理结构的实现,每个存储引擎开发者可以按照自己的意愿来进行开发 存储引擎是基于表的,而不是数据库。也就是同一个库中的不同表可以采用不同的存储引擎 存储引擎的好处是,每个存储引擎都有各自的特点,能够根据具体的应用建立不同存储引擎表 由于MySQL数据库开源特性,产生了很多种不同的存储引擎,下面来介绍几种常用的存储引擎 InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用 其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁 从MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎 InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认为REPEATABLE级别。同时,使 用一种被称为next-key locking的策略来避免幻读(phantom)现象的产生。除此之外,InnoDB储存引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能 实际工作中,InnoDB应该是用的最多的存储引擎 MyISAM存储引擎不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用 在MySQL 5.5.8版本之前MyISAM存储引擎是默认的存储引擎(除Windows版本外),5.5.8以后默认存储引擎就换成InnoDB MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件 注意 对于MyISAM存储引擎表,MySQL数据库只缓存其索引文件,数据文件的缓存交由操作系统本身来完成,这与其他使用LRU算法缓存 数据的大部分数据库大不相同。此外,在MySQL 5.1.23版本之前,无论是在32位还是64位操作系统环境下,缓存索引的缓冲区最大只能设 置为4GB。在之后的版本中,64位系统可以支持大于4GB的索引缓冲区 NDB存储引擎是一个集群存储引擎,类似于Oracle的RAC集群,不过与Oracle RAC share everything架构不同的是,其结构是 sharenothing的集群架构,因此能提供更高的可用性 NDB的特点是数据全部放在内存中(从MySQL 5.1版本开始,可以将非索引数据放在磁盘上),因此主键查找(primary key lookups)的 速度极快,并且通过添加NDB数据存储节点(Data Node)可以线性地提高数据库性能,是高可用、高性能的集群系统 关于NDB存储引擎,有一个问题值得注意,那就是NDB存储引擎的连接操作(JOIN)是在MySQL数据库层完成的,而不是在存储引擎层完 成的。这意味着,复杂的连接操作需要巨大的网络开销,因此查询速度很慢 Memory存储引擎(之前称HEAP存储引擎)将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适合 用于存储临时数据的临时表,以及数据仓库中的纬度表。Memory存储引擎默认使用哈希索引,而不是我们熟悉的B+树索引 虽然Memory存储引擎速度非常快,但在使用上还是有一定的限制。比如,只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型。 最重要的是,存储变长字段(varchar)时是按照定常字段(char)的方式进行的,因此会浪费内存 Archive存储引擎只支持INSERT和SELECT操作,从MySQL 5.1开始支持索引。Archive存储引擎使用zlib算法将数据行(row)进行压缩后 存储,压缩比一般可达1∶10。正如其名字所示,Archive存储引擎非常适合存储归档数据,如日志信息。Archive存储引擎使用行锁来实现 高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能 Federated存储引擎表并不存放数据,它只是指向一台远程MySQL数据库服务器上的表。这非常类似于SQL Server的链接服务器和Oracle 的透明网关,不同的是,当前Federated存储引擎只支持MySQL数据库表,不支持异构数据库表。 Maria存储引擎是新开发的引擎,设计目标主要是用来取代原有的MyISAM存储引擎,从而成为MySQL的默认存储引擎 Maria存储引擎的特点是:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项,以及更好的 BLOB字符类型的处理性能 一条查询的SQL发送到MySQL服务器被执行,返回查询结果,这中间经历了什么?下面我们来看一下一条SQL语句从客户端发 送给MySQL服务器,MySQL到底执行了哪些操作? 简单归纳一下,一条SQL在MySQL中的执行过程如下: 当然,实际的过程远远比这个要复杂,这里只是列出来大致的步骤和过程,方便大家理解 如果感觉对你有些帮忙,请好,你的关注和是对我最大的鼓励!
MySQL简介
MySQL体系结构
MySQL存储引擎
InnoDB存储引擎
MyISAM存储引擎
NDB存储引擎
Memory存储引擎
Archive存储引擎
Federated存储引擎
Maria存储引擎
SQL是如何执行的
如上图所示,
SQL ==> 查询缓存 ==> 解析器 ==> 优化器 ==> 执行器
如果想跟我一起学习,坚信技术改变世界,请关注【Java天堂】公众号,我会定期自己的学习成果,第一时间推送给您
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算