MySQML进阶—MySQL逻辑结构(一)

逻辑结构图如下

MySQML进阶—MySQL逻辑结构(一)_第1张图片

 数据库结构分为四层,如下图

MySQML进阶—MySQL逻辑结构(一)_第2张图片

一、连接层

提供客户端和连接服务,包含本地Sock通信和大多数基于客户端/服务端工具实现的类似TCP/IP的通信,主要完成一些类似于连接处理、授权认证及相关安全方案,在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程,同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

注:分配数据库连接线程池,控制数据库的连接和关闭等资源。

科普:线程,程序执行流的最小执行单位,是行程中的实际运作单位,经常容易和进程这个概念混淆。那么,线程和进程究竟有什么区别呢?首先,进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程,而线程,是运行中的实际的任务执行者。可以说,进程中包含了多个可以同时运行的线程。
 

二、业务逻辑处理层(服务层)

主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的操作。所有跨操作引擎的功能也在这一层实现,如过程,函数等。在该层服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。如果是SELECT语句,服务器还会查询内部的缓存,如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。
注:提供SQL操作的接口,对SQL脚本按一定规则进行解析,并通过SQL优化器优化执行顺序,对于查询的语句还会进入缓存区,提升系统的性能

三、数据存储引擎层(引擎层)

存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选选取。

注:存储引擎都是可插拔的,每个存储引擎所提供的服务都有所差异,所以我们需要根据具体的业务需要,选择合适的存储引擎,常用的只有两种MyISAM和InnoDB。

四、数据存储层(存储层)

主要是将数据存储在运行于裸设备的文件系统上,并完成与存储引擎的交互。

 注:将数据存储到磁盘上,并协同存储引擎对数据进行读写操作。

MyISAM和InnoDB

对比项 MyISAM InnoDB 
主外键 不支持 支持
事务 不支持 支持
行表锁 表锁,即使操作一条数据也会锁住整个表,不适合高并发操作

行锁,操作是只锁某一行,不对其他行有影响

适合高并发的操作

缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定的影响
表空间
关注点 性能 事务
默认安装 Y Y

你可能感兴趣的:(MySQL,mysql,数据库,database)