1、概述
我们对某技术的学习,目的很简单,一是为了学习技术的使用;二是进行思想的学习。学习技术时,先理解思想,对于技术的掌握是大有益处的,一般理解技术思想的途径,从他的架构设计和源码是最直接的。
mysql是一个开源的关系型数据库产品, 采用处理与存储分离的设计,灵活性高,这些年已成为互联网应用上常用的关系型数据库。互联网系统特点是高并发,大数据量,一般瓶颈最终还是会落到数据库,所以优化mysql是必不可少的。想对mysql理解,我们先理解它架构设计思想。
安装mysql后主要有下面几个组件:
mysql服务器:
-
也称为mysqld;
-
管理内存和碰盘上实际的数据库访问;
-
多线程的;
-
支持多客户端连接;
-
支持多种存储引擎;
-
单机上可以安装多个实例。
客户端程序:
bin目录下实用的程序
非客户端面程序:
独立于服务器的客户端程序
2、mysql逻辑结构
mysql采用分层架构,并分成了多个子系统,每个子系统都有相互独立又互相协助,共同完成数据库服务器功能。下图为mysql逻辑架构图
公共服务层:
为整个系统提供基础、公用的服务;
服务层:
分为有API,Query Parsing,Optimization,Execution,Query Cache等子系统。
API:用于接收SQL命令,如我们通过客户端直接select * from table;
Query Parsing:解释查询,对传入的SQL语句进行解释、验证,并生成SQL_ID与SQL语句关联;
Optimization:对Query Parsing传入的SQL,根据不同的存储引擎生成优化后的执行计划,并重写查询。
Execution:执行根据Query Parsing和Optimization处理过的数据。
Query Cache:基于内存的缓存,根据SQL_ID.SELECT来判断是否已经处理过相同的查询语句,如果处理过,直接从Query Cache中返回结果集,加快读速度。
存储引擎层:
Mysql中特性之一,用于进行数据处理和文件管理,采用的是处理与存储分离,可以根据应用需要进行相应灵活的选择。mysql中存储引擎有事务型和非事务型的,我们可以通过命令show engines来查看当前mysql数据库版本支持的存储引擎。
当前用的是MYSQL5.6.
InnoDB,默认的存储引擎,支持事务,采用行锁;
MyISAM:读数据很快,不支持事务,采用表锁机制;
MEMORY:基于内存的数据库,不支持事务,采用表锁.
其它的数据引擎用的很少,暂时不介绍,但图中有一种存储引擎是没有显示出来的,即NDB,我们暂时可以把它当做是InnoDB的集群版本。
来,坐来下
品位这一杯茶
让我们一起并肩成长
成长会让我们看的更远
走的更长
相关推荐
如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:...
如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。 MySQL逻辑架构,来自:高性能MySQL MySQL逻辑架构整体分为三层,最上层为客户端层,并非...
12.1 深入理解权限系统 12.1.1 user表 12.1.2 db表和host表 12.1.3 tables_priv表,columns_priv表和procs_priv表 12.1.4 访问控制:MySQL如何使用Grant表 12.1.5 更新权限:修改什么时候生效 12.2 提高MySQL...
如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。MySQL逻辑架构,来自:高性能MySQLMySQL逻辑架构整体分为三层,最上层为客户端层,并非...
12.1 深入理解权限系统 12.1.1 user表 12.1.2 db表和host表 12.1.3 tables_priv表,columns_priv表和procs_priv表 12.1.4 访问控制:MySQL如何使用Grant表 12.1.5 更新权限:修改什么时候生效 12.2 提高MySQL数据库...
如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。MySQL逻辑架构,来自:高性能MySQL MySQL逻辑架构整体分为三层,最上层为客户端层,并非...
12.1 深入理解权限系统 12.1.1 user表 12.1.2 db表和host表 12.1.3 tables_priv表,columns_priv表和procs_priv表 12.1.4 访问控制:MySQL如何使用Grant表 12.1.5 更新权限:修改什么时候生效 12.2 提高MySQL...
这一资源不仅适用于本科课程设计、毕业设计,更是Java学习者深入理解SSM框架与MySQL数据库应用实践的优秀选择。 该项目旨在通过Java技术实现一个功能完善的家校通系统,为家长、老师和学校提供便捷、高效的沟通平台...
同时,通过本系统的设计和实现,能够帮助Java初学者和学生深入了解数据库的设计和编程基础知识,学习MVC架构的实际应用。 当然,本系统功能较为简单,仅仅是一个简单的仓库商品管理系统,对于实际应用而言,还需要...
《计算机毕业设计:Java实现的宠物医院信息管理系统项目》是一项精心打造的项目资源,旨在帮助本科学生、毕业设计参与者以及Java学习者深入理解和掌握SSM框架与MySQL数据库的结合应用。 该系统以宠物医院信息管理为...
数据库技术是软件开发中的必备技能,咱们从数据库基本操作到掌握数据库设计的能力,层层深入学习数据库设计思想,一个软件项目的底层逻辑中,数据的存储结构是重中之重,因此,数据库技术也是面试中常被面试官拿来...
o深入理解MySql索引底层数据结构与算法 数据结构角度 B+树索引 o索引查找步骤 o联合索引 Hash索引 Full Text索引 为什么MySql用B+树,不用其他平衡二叉树和B树? 物理存储角度 聚集索引 非聚集索引 ...
数据库技术是软件开发中的必备技能,咱们从数据库基本操作到掌握数据库设计的能力,层层深入学习数据库设计思想,一个软件项目的底层逻辑中,数据的存储结构是重中之重,因此,数据库技术也是面试中常被面试官拿来...
数据库技术是软件开发中的必备技能,咱们从数据库基本操作到掌握数据库设计的能力,层层深入学习数据库设计思想,一个软件项目的底层逻辑中,数据的存储结构是重中之重,因此,数据库技术也是面试中常被面试官拿来...
数据库技术是软件开发中的必备技能,咱们从数据库基本操作到掌握数据库设计的能力,层层深入学习数据库设计思想,一个软件项目的底层逻辑中,数据的存储结构是重中之重,因此,数据库技术也是面试中常被面试官拿来...
数据库技术是软件开发中的必备技能,咱们从数据库基本操作到掌握数据库设计的能力,层层深入学习数据库设计思想,一个软件项目的底层逻辑中,数据的存储结构是重中之重,因此,数据库技术也是面试中常被面试官拿来...
数据库技术是软件开发中的必备技能,咱们从数据库基本操作到掌握数据库设计的能力,层层深入学习数据库设计思想,一个软件项目的底层逻辑中,数据的存储结构是重中之重,因此,数据库技术也是面试中常被面试官拿来...