- 作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
- 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
- 个人主页:团儿.-CSDN博客
前言:
在数字化时代,数据管理已经成为了一项至关重要的任务。
随着大数据的不断涌现,我们面临着如何有效地存储、检索和分析这些海量数据的挑战。
在这个背景下,MySQL作为一个流行的关系型数据库管理系统,扮演着不可或缺的角色。
它以其高性能、高可靠性和易用性而广受青睐,成为了众多企业和开发者的首选数据库解决方案。
对于初学者来说,理解MySQL的数据库模型和数据库结构可能是一个复杂的过程。
这不仅仅是因为数据库的概念本身就很抽象,更因为MySQL提供了多种数据类型和存储引擎,使得其内部机制变得复杂多变。
因此,本文将带领读者走进MySQL的世界,通过问题-分析-解决方案的方式,深入浅出地介绍MySQL的数据库模型和数据库结构。
1.C/S(客户端/服务端)模型
C/S模型是一种网络架构模式,其中系统被分为两个主要部分:客户端(Client)和服务端(Server)。
在这种模型中,客户端负责向用户提供界面和交互能力,而服务端则负责处理数据、逻辑运算和存储等任务。客户端和服务端之间通过网络协议(如TCP/IP)进行通信。
那么,数据库连接的基本方式及命令为:
TCP/IP方式(远程、本地):
mysql -uroot -p123.com -h 192.168.8.9 -P3306
Socket方式(仅本地):
mysql -uroot -p password 123.com
2.实例介绍
数据库实例
mysqld后台守护进程
Master Thread 主
worker Thread 工作
预分配的内存
3.mysqld程序结构
连接层:
提供连接协议:TCP/IP 、SOCKET
提供验证:用户、密码,IP,SOCKET
提供专用连接线程:接收用户SQL,返回结果
SQL层
接收上层传送的SQL语句
语法验证模块:验证语句语法,是否满足SQL_MODE
语义检查:判断SQL语句的类型
DDL :数据定义语言 create drop alter
DCL :数据控制语言 grant revoke
DML :数据操作语言 insert delete update
DQL: 数据查询语言 select
权限检查:用户对库表有没有权限
解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.
优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
代价模型:资源(CPU IO MEM)的耗损评估性能好坏
执行器:根据最优执行计划,执行SQL语句,产生执行结果
执行结果:在磁盘的xxxx位置上
提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能
提供日志记录(日志管理章节):binlog,默认是没开启的。
存储引擎层(类似于Linux中的文件系统)
负责根据SQL层执行的结果,从磁盘上拿数据。
将16进制的磁盘数据,交由SQL结构化化成表,
连接层的专用线程返回给用户。
4 .逻辑结构
库:
在数据库系统中,“库”也被称为“数据库”,是存储数据的容器,用于组织和存储数据的集合。它包含了表、索引、视图、存储过程、触发器等数据库对象。
在数据库的逻辑结构中,“库”位于最顶层,其下可以包含多个表、视图等数据库对象。这些对象通过逻辑上的关联和约束,共同构成了数据库的完整结构。
表:
是数据库中存储数据的基本单位,由行和列组成 每一行代表一个数据记录,每一列代表一个数据字段。
列:列名(字段),列属性(数据类型,约束等)
数据行(记录)
5 .物理存储结构引入
库的物理存储结构
用文件系统的目录来存储
表的物理存储结构
表:
MyISAM(ext2)
user.frm : 存储的表结构(列,列属性)
user.MYD : 存储的数据记录
user.MYI : 存储索引
InnoDB(XFS)
time_zone.frm : 存储的表结构(列,列属性)
time_zone.ibd : 存储的数据记录和索引
ibdata1 : 数据字典信息
表的段、区、页(16k)(了解)
一般情况下(非分区表)
一个表就是一个段
一个段由多个区构成
一个区,64个连续的页(16k)组成,1M大小
期待您的关注~