Mysql高级篇(上)
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
更适合读密集型、不需要事务的应用场景。根据具体的应用需求,选择合适的存储引擎可以显著提升数据库的性能和可靠性。