Mysql高级篇(上)
- MySQL架构介绍(二)
- 逻辑架构
- 逻辑架构剖析
- MySQL8.0中SQL执行流程
- Linux环境下MySQL8.0中SQL执行原理
- MySQL语法顺序
- Oracle中SQL执行流程(了解)
- 数据库缓存池 buffer pool(了解)
- 存储引擎
- 常见存储引擎简述
- InnoDB 和 MyISAM 两种存储引擎的特点对比
MySQL架构介绍(二)
逻辑架构
逻辑架构剖析



MySQL8.0中SQL执行流程




Linux环境下MySQL8.0中SQL执行原理
在 MySQL 8.0 中,查询缓存功能已被完全移除,因为命中率低,相同SQL语句可能因为长度的不同就会被程序认为不同的SQL语句不再查询缓存,而且查询缓存的开销往往超过其带来的性能提升!
我们通过查看执行记录来分析:






第
6条和第7条SQL语句执行记录都一样,并没有查询缓存的过程,因为MySQL8.0已经删除查询缓存的功能了

MySQL语法顺序
| MySQL书写顺序 | 执行顺序 |
|---|---|
select 查询列表 | 7 |
from 表1 | 1 |
join 表2 | 2 |
on 连接条件 | 3 |
where 筛选条件 | 4 |
group by分组列表 | 5 |
having 分组后的筛选 | 6 |
order by排序列表 | 8 |
limit 偏移数,展示条目数 | 9 |
Oracle中SQL执行流程(了解)
在
Oracle数据库中,SQL执行的流程通常包括以下几个步骤,从解析到执行再到返回结果。这个过程可以大致分为解析阶段、执行阶段和返回阶段
示例流程:
SELECT first_name, last_name FROM employees WHERE employee_id = 100;

简化的SQL执行流程:
|
SQL解析|—> |执行计划| —> |执行数据操作| —> |返回查询结果|
这个简化流程涵盖了Oracle SQL执行的主要阶段,每个阶段可以根据具体的SQL类型(查询、修改、删除等)有不同的实现细节。
数据库缓存池 buffer pool(了解)
在数据库系统中,特别是在
关系型数据库管理系统(RDBMS)中,缓冲池(Buffer Pool) 是一个用于缓存数据页或数据块的内存区域。它的主要作用是减少数据库系统对磁盘I/O的依赖,提高数据访问的性能。不同的数据库管理系统(如Oracle、MySQL、PostgreSQL等)对缓冲池的实现和管理方式可能有所不同,但其基本概念和目的都是相似的。





存储引擎
存储引擎是数据库管理系统(DBMS)中 负责存储、检索和管理数据的底层组件。不同的存储引擎具有不同的特性,适用于不同的应用场景。以下是一些常见的存储引擎介绍:
常见存储引擎简述




InnoDB 和 MyISAM 两种存储引擎的特点对比
| 特点 | InnoDB | MyISAM |
|---|---|---|
| 事务支持 | 支持事务,提供 ACID 特性,适用于需要高数据一致性的场景。 | 不支持事务,适用于不需要事务管理的应用。 |
| 锁机制 | 行级锁定,提高并发性能,适合高并发写操作。 | 表级锁定,适合读操作为主的场景,但在高并发写操作中可能导致性能瓶颈。 |
| 外键支持 | 支持外键,能够维护表间数据的完整性。 | 不支持外键,表间关系需由应用程序逻辑维护。 |
| 崩溃恢复 | 自动崩溃恢复机制,通过日志和双写缓冲区保障数据的完整性。 | 崩溃恢复能力较弱,可能需要手动修复表格。 |
| 性能 | 写操作性能优越,适合高并发事务处理;复杂特性使其在简单只读查询中略逊。 | 读操作性能优越,特别是在不需要事务支持的场景;表级锁定会限制写操作的并发性能。 |
| 存储结构 | 采用 聚簇索引,数据行与主键存储在一起;使用 .ibd 文件存储数据和索引。 | 使用 独立的表结构文件(.MYD 和 .MYI)存储数据和索引,表结构较为简单。 |
| 应用场景 | 适用于 金融系统、电子商务平台等需要事务支持和数据一致性 的场景。 | 适用于 数据分析、日志记录等读密集型、不需要事务支持 的场景。 |
总结来说,
InnoDB适合用于高并发、需要数据一致性和事务管理的应用,而MyISAM更适合读密集型、不需要事务的应用场景。根据具体的应用需求,选择合适的存储引擎可以显著提升数据库的性能和可靠性。
























