刚开始接触一个新的事物的时候,我觉得很有必要从其工作原理入手,弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫,掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路。接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图:
上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。
-+-----------------------------------------------------------------------------------+-
下面是关于上述部件的介绍:
1. connectors
与其他编程语言中的sql 语句进行交互,如php、java等。
2. Management Serveices & Utilities
系统管理和控制工具
3. Connection Pool (连接池)
管理缓冲用户连接,线程处理等需要缓存的需求
8.Engine (存储引擎)
存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。
-+-----------------------------------------------------------------------------------+-
SQL 语句执行过程
数据库通常不会被直接使用,而是由其他编程语言通过SQL语句调用mysql,由mysql处理并返回执行结果。那么Mysql接受到SQL语句后,又是如何处理的呢?
首先程序的请求会通过mysql的connectors与其进行交互,请求到处后,会暂时存放在连接池(connection pool)中并由处理器(Management Serveices & Utilities)管理。当该请求从等待队列进入到处理队列,管理器会将该请求丢给SQL接口(SQL Interface)。SQL接口接收到请求后,它会将请求进行hash处理并与缓存中的结果进行对比,如果完全匹配则通过缓存直接返回处理结果;否则,需要完整的走一趟流程:
(1)由SQL接口丢给后面的解释器(Parser),上面已经说到,解释器会判断SQL语句正确与否,若正确则将其转化为数据结构。
(2)解释器处理完,便来到后面的优化器(Optimizer),它会产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果。
(3)确定最优执行计划后,SQL语句此时便可以交由存储引擎(Engine)处理,存储引擎将会到后端的存储设备中取得相应的数据,并原路返回给程序。
这里有几点需要注意:
(1)如何缓存查询数据?
存储引擎处理完数据,并将其返回给程序的同时,它还会将一份数据保留在缓存中,以便更快速的处理下一次相同的请求。具体情况是,mysql会将查询的语句、执行结果等进行hash,并保留在cache中,等待下次查询。
(2)buffer与cache的区别?
从上面的图可以看到,缓存那里实际上有buffer和cache两个,那它们之间是否有什么不同呢?简单的说就是,buffer是写缓存,cache是读缓存。
(3)如何判断缓存中是否已缓存需要的数据
这里可能有一个误区,觉得处理SQL语句的时候,为了判断是否已缓存查询结果,会将整个流程走一遍,取得执行结果后再与需要的进行对比,看看是否命中,并以此说,既然不管缓存中有没有缓存到查询内容,都要整个流程走一遍,那么缓存的优势又在哪里??
实际上,并非如此,在第一次查询后,mysql便将查询语句以及查询结果进行hash处理并保留在缓存中,SQL查询到达之后,对其进行同样的hash处理后,将两个hash值进行对照,如果一样,则命中,从缓存中返回查询结果;否则,需要整个流程走一遍。
相关推荐
Mysql工作原理介绍:Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。SQL命令传递到解析器的时候会被解析器验证和解析。
2008年开始至今一直从事Oracle/MySQL相关工作,现任易极付高级DBA,Oracle Ocm。有丰富的数据库性能调优,故障诊断经验,并且对MySQL源码有一定的研究。 《深入理解MySQL主从原理32讲》专栏包含GTID部分、Event部分...
MySQL数据库是一种广泛使用的开源关系型数据库管理系统,其原理和设计方法是数据库管理员和开发者必须掌握的基础知识。本文将深入探讨MySQL的逻辑架构、并发控制、事务处理等方面。 首先,MySQL的逻辑架构分为三层...
《MySQL数据库原理及应用》是一门深入探讨关系型数据库管理系统MySQL的课程,旨在教授学生如何设计、创建和管理数据库,以及如何在实际应用场景中高效利用MySQL。教案详细涵盖了该课程的所有章节,为教学提供了全面...
这个源码安装包是针对那些希望深入理解MySQL工作原理、进行自定义配置或者在没有预编译二进制包可用的情况下进行安装的用户。以下是对MySQL 5.5源码安装的详细过程和相关知识点: 1. **源码获取**: - `mysql-...
【从根儿上理解MySQL】是一本专注于介绍MySQL工作原理和技术核心的书籍,旨在帮助有一定SQL基础的读者深入了解MySQL的内核机制。该书不是入门教程,而是为已经熟悉基本的增删改查操作的读者设计,特别是对SQL语言有...
MySQL 基本原理
《MySQL数据库原理及应用(第2版)(微课版)》是一本深入浅出介绍MySQL技术的教材,配合配套教案,旨在帮助学生和学习者全面理解和掌握数据库设计与管理的核心概念。 该教程可能涵盖以下关键知识点: 1. **数据库...
在《MySQL数据库原理及应用(第2版)(微课版)》中,我们通常会深入探讨数据库的基本概念、设计原则以及实际操作技巧。这份教学资料包含了一个Mysql数据库的备份文件,为学习者提供了实践平台,便于理解和掌握...
《MySQL数据库原理及应用》从教学实际出发,系统地介绍了MySQL数据库的有关原理和基本操作,主要内容包括数据库技术概述、MySQL概述、数据库基本操作、数据表、索引、结构化查询语言SQL、视图、触发器、存储过程和...
《MySQL数据库原理、设计与应用》课后习题及答案 黑马程序员编著 答案都是正确的,因为是老师给的资源。 如果不想下载,也可以去我的博客看,一模一样的。 ...
MySQL数据库是世界上最...这些知识点构成了MySQL数据库原理与应用的基础,对于理解和操作MySQL数据库至关重要。学习和掌握这些内容将有助于学生在期末考试中取得好成绩,并为未来在互联网行业中使用MySQL奠定坚实基础。
对于初学者来说,这是理解MySQL工作原理的关键一步。书中也涵盖了不同的存储引擎,如InnoDB和MyISAM,它们各有优缺点,适用于不同的场景。理解这些存储引擎的工作机制对于选择合适的数据存储方式至关重要。 其次,...
在Linux环境下源码安装MySQL 5.1.35,虽然步骤较多,但能够提供更高的定制性,适合于对系统有特殊需求或想要深入了解MySQL工作原理的用户。安装完成后,你可以尽情探索这个强大的数据库系统,享受它带来的高效、稳定...
特别指出的是,这些源代码可以在Microsoft Visual Studio 2008(简称VC2008)环境下进行完整编译,这对于开发者来说是一个宝贵的资源,特别是那些希望深入理解MySQL工作原理或者想要对其进行定制和扩展的人员。...
这个版本可能不包含最新的功能和安全更新,但对于学习基础操作和理解MySQL工作原理来说,仍然非常有价值。 安装过程分为以下几个步骤: 1. **下载与解压**:首先,你需要下载“mysql-essential-5.0.45-win32.msi”...
MySQL是一款广泛使用的开源关系型数据库管理系统,其源码分析对于深入理解数据库的工作原理和技术细节具有重要意义。本资源包“Mysql源码整理_news4ep_mysql源码_MYSQL_”是数据库学习者在研究MySQL源码过程中的笔记...
**MySQL数据库原理** MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它以其高效、稳定和易用性在全球范围内赢得了广大用户的喜爱。本PPT将深入探讨MySQL的基本原理、功能特性和应用实践。 1. **数据库...
对mysql cluster的原理做了比较细致的讲解,我认为该课件做的还是很好地。
MySQL是世界上最受欢迎的关系型数据库管理系统之一,其底层原理对于数据库管理员和开发人员来说至关重要,能够帮助他们优化查询性能,理解事务处理,以及更好地管理数据存储。以下是对标题和描述中涉及知识点的详细...