数据库基础与MySQL详解:范式、架构与SQL执行过程
需积分: 8 148 浏览量
更新于2024-08-05
收藏 600KB PDF 举报
数据库是信息系统的核心组成部分,它用于组织、存储和管理大量数据。本文将概述数据库设计中的三大范式以及MySQL数据库的相关概念和技术。
**数据库三大范式**
1. **第一范式 (1NF)**: 是最基本的范式,要求数据库表中的每个字段都包含不可再分的基本数据单位,即原子值,消除重复和部分值。例如,学生表中的学号、姓名应直接表示,避免如(学号,姓名部分),以保持数据完整性。
2. **第二范式 (2NF)**: 建立在1NF之上,要求非主属性完全依赖于主键,但可能存在数据冗余和更新异常。如上例中的专业编号和专业名称,若直接用学号关联,会导致冗余,不符合2NF。理想情况是将专业信息独立为另一个表。
3. **第三范式 (3NF)**: 要求关系模型进一步消除非主属性间的传递依赖。如学生表中,院校地址和电话与学号无直接关系,若直接存储可能导致更新或插入异常,这就不满足3NF。应尽可能使每个属性只依赖于主键。
**MySQL架构**
MySQL是一个关系型数据库管理系统,其架构包括以下几个层次:
- **应用层**:负责处理客户端请求,建立连接,并返回数据。它与客户端交互,执行SQL语句。
- **逻辑层**:包括SQL查询接口(如SQL Server Query Processor)、解析器(解析SQL语句)、优化器(决定执行计划)、以及Cache和buffer机制,提高查询效率。
- **数据库引擎层**:MySQL支持多种存储引擎,如MyISAM和InnoDB,分别提供不同的事务性和数据存储结构。
- **物理层**:负责底层的数据存储,如文件系统,以及日志管理,用于数据恢复和事务处理。
**SQL执行过程**
当执行SQL时,流程大致如下:
1. 客户端通过连接器进行身份验证和权限检查。
2. 查询可能先尝试缓存,但在MySQL 8.0及以后版本,这一过程已被移除。
3. 如果未命中缓存,解析器解析并检查SQL语法。
4. 优化器根据查询条件选择最佳执行计划。
5. 执行计划由存储引擎(如InnoDB)执行,获取数据后返回给客户端。
**MySQL锁机制**
MySQL支持不同级别的锁,以控制并发访问:
- **共享锁 (S锁) / 读锁**: 允许多个并发用户读取同一数据,互不阻塞。
- **排他锁 (X锁) / 写锁**: 阻止其他用户读写同一数据,确保数据一致性,写操作独占。
**按粒度的锁分类**
- **表级锁**: 对整个表加锁,简化并发控制,但可能影响性能,因为多个并发操作会被阻塞。
- **行级锁**: 按行加锁,针对索引或无索引表进行,提高并发性,但增加加锁开销,可能导致死锁。
- **Gap锁(间隙锁)**: 仅锁定数据范围内的空隙,主要用于行级锁定的补充,如InnoDB的Next-Key Locks。
总结来说,理解和应用这些数据库原理和MySQL特性是构建高效、健壮数据库系统的关键,它们有助于确保数据的一致性、完整性和并发控制。
2022-06-23 上传
2022-06-22 上传
2022-06-30 上传
abao_gege
- 粉丝: 304
- 资源: 9
最新资源
- ES管理利器:ES Head工具详解
- Layui前端UI框架压缩包:轻量级的Web界面构建利器
- WPF 字体布局问题解决方法与应用案例
- 响应式网页布局教程:CSS实现全平台适配
- Windows平台Elasticsearch 8.10.2版发布
- ICEY开源小程序:定时显示极限值提醒
- MATLAB条形图绘制指南:从入门到进阶技巧全解析
- WPF实现任务管理器进程分组逻辑教程解析
- C#编程实现显卡硬件信息的获取方法
- 前端世界核心-HTML+CSS+JS团队服务网页模板开发
- 精选SQL面试题大汇总
- Nacos Server 1.2.1在Linux系统的安装包介绍
- 易语言MySQL支持库3.0#0版全新升级与使用指南
- 快乐足球响应式网页模板:前端开发全技能秘籍
- OpenEuler4.19内核发布:国产操作系统的里程碑
- Boyue Zheng的LeetCode Python解答集