zoukankan      html  css  js  c++  java
  • 02-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
    """
    user.frm: 称为表的结构信息,结构信息就是列属性的一部分
    user.MYD: 行记录,真实数据
    user.MYI: 索引
    """

    innodb:

    -rw-rw----. 1 mysql mysql     8586 9月  24 18:29 kkk.frm
    -rw-rw----. 1 mysql mysql   98304 9月  24 18:38 kkk.ibd
    """
    kkk.frm: 表结构
    kkk.ibd: 表数据
    """

     

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

    1、段、区、块

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

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

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

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

    如果第一次需要两个页,mysql在分配时,会一次性多分配些,构成一个区。

    区: 也就是连续的多个页,就是一个区

    段: 段就是多个区,可以理解为一张表

  • 相关阅读:
    python学习之控制流1
    python学习之字符串转换
    python学习之数据类型与运算符号
    python之获取微信好友列表并保存文档中
    python之微信自动发送消息
    python之微信好友统计信息
    java并发编程--AtomicInteger
    java.time学习
    chrome插件
    classpath和classpath*
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13758091.html
Copyright © 2011-2022 走看看