MySQL体系结构
MySQL体系结构:分为连接模型、服务器构成、逻辑结构、物理结构、实例、存储底层结构(段|区|快);
#1、连接模型
客户端和服务端CS模型,有以下两种连接方式:TCP/IP 、Socket
#2、逻辑结构(逻辑对象)
mysql的逻辑对象:作为管理员或者开发人员操作的对象
库(database,schema) Linux中的目录
库名,库属性 目录名,属性
表(table) linux中的文件
表名字,列(列名字,列属性),表属性,表数据 文件名,属性,数据行
库:
库连可以包含多张表
表:
二维表
列结构:列名字+列定义(约束)
数据行
元数据和真实数据行:
元数据:列+其他的一些属性(行数+占用空间大小+权限)
列:列名+数据类型+其他约束(非空、唯一、逐渐、非负数、自增长、默认值
#3、物理结构
补充说明:
## mysql的存储引擎是如何把数据存在磁盘上的?
mysql数据最底层的是操作系统上的一个文件
1、对于mysql来讲,最底层(物理层)是数据文件,也是存储引擎层打交道的对象是数据文件
2、存储引擎分为很多种类
和Linux文件系统类型一样,分为很多种类;
对于不同的存储引擎,它的存储机制不一样
3、不同存储引擎区别:
存储方式:导致了安全性、性能的不同
******************************************************************************
举例:
## No1: myisam 存储引擎存储方式(系统默认引擎)
cd /application/mysql/data/mysql/
-rw-rw---- 1 mysql mysql 10684 Nov 5 23:21 user.frm 一部分表结构信息
-rw-rw---- 1 mysql mysql 436 Nov 5 23:21 user.MYD 行记录,真实信息
-rw-rw---- 1 mysql mysql 2048 Nov 5 23:21 user.MYI 索引信息
注:myisam是使用三个文件存一张表
补充说明:二进制文件内容怎么查看: strings 文件名
## No2: innodb 存储引擎存储方式(推荐使用引擎)
进入mysql的test数据库,创建一个oldboy表
mysql
use test;
create table oldboy(id int);
退出数据库,进入下面目录
cd /application/mysql/data/test/
-rw-rw---- 1 mysql mysql 8556 Nov 6 20:56 oldboy.frm
-rw-rw---- 1 mysql mysql 98304 Nov 6 20:56 oldboy.ibd
注:innodb是两个文件存一张表
******************************************************************************
#4、实例
MySQL数据库挂了系统 = 实例 + 数据
实例 = mysqld后台守护进程 + master thread(主线程) + write thread(工作线程)
#5、
页:(page ==16k) mysql存储最小分配单元
区:一个或多个连续的也构成(解决页分配不连续的问题)
段:多个区构成,我们可以把一张表(非分区表)认为是一个段