万事开头难

MySql的逻辑结构(抽象结构)与物理结构

一.mysql的逻辑结构

MySQL的逻辑对象:作为管理员或者开发人员操作的对象

首先我们先看一下语句:

select user,password,host from mysql.user;

我们最直观看到的就是执行这条语句后产生的结果,是一张表,这张表其实就是mysql中产生的逻辑结构,这些表是用库来存放的

对于当前表来说,user表就是存放mysql库中

 

库(database.schema),相当于linux文件系统中的目录的概念,库中可以包括多张表

表:二维表

  • 数据行
  • 列属性: 列名+列定义(约束)

 

逻辑结构总结

"""
库 ---->|
            元数据 + 数据行
             |+ 其他属性(行数,占用空间大小,权限)
             |
            列名 + 数据类型 + 其他约束(非空\唯一\主键\非负数\自增长\默认值)
           
"""

 

二. mysql物理结构

1. 对于mysql来说,mysql的最底层是数据文件(上图三个文件),也就是存储引擎打交道的对象时数据文件,下一层是操作系统,下一层是磁盘,磁道,扇区,颗粒

2. 存储引擎分为了很多种类

3.不同存储引擎区别:存储方式,安全性,性能

myisam:

-rw-rw----. 1 mysql mysql  10684 9月  24 17:51 user.frm
-rw-rw----. 1 mysql mysql    628 9月  24 18:29 user.MYD
-rw-rw----. 1 mysql mysql   2048 9月  24 18:38 user.MYI
"""
www.frm:表结构
www.ibd:表数据
"""

 

 

"""
对于mysql层来说,aaa.ibd文件就是mysql的最底层
对于操作系统来说,aaa.idb文件就是逻辑层面的概念,文件系统对于操作系统来说就是最底层
对于硬件来说,block块(文件系统)是逻辑概念,对于它自己来讲,柱面\扇区\磁盘是逻辑层,真正存储在磁道上可磁化的金属颗粒
"""

1.段.区.块

mysql是要把表记录存在ibd上,但是没有办法直接用ibd

页: mysql存储的最小单元,页的大小为16k,类似于block,

将一个ibd文件划分为多个页

如果10条记录需要两个页存储,那么追加10行,还需要2页,因为都是操作的一张表,应该让这四页顺序的,但是会中间有其他操作,现在前两个页和后两个页不是顺序的了,怎么办????

如果第一次需要两个页,mysql在分配时,会一次性多分配些,构成一个区
区:也就是连续或一个的页,就是一个区
段:就是多个区,可以理解为一张表

 

posted @ 2020-11-10 10:10  Bo7-w  阅读(487)  评论(0编辑  收藏  举报