zoukankan      html  css  js  c++  java
  • inndo 表与存储逻辑_1

    ------------------------------------------2015-03-03---------------------------------------

     表 :

      innodb 中的表都是根据主键顺序组织存放的, 这种存储方式的表称为索引组织表.  每张表都有一个主键字段. 如果没有显示的定义主键, 则会按一下顺序创建主键.

        1. 判断表中是否有非空的唯一索引, 如果有, 则该字段既为主键. (当表中有多个唯一且非空的字段时, 则以定义索引的顺序排序, 取第一个字段)

        2. 如果不满足上面的条件, 则innodb自行创建一个长度为6字节大小的字段, 定义为主键.

              

    create table h (a int not null, b int not null ,c int ,unique key(b), unique key(a));
    

      

    insert into h value (1,2,3),(4,5,6);
    

        使用 _rowid 可以显示数据行的主键值, 表 h 的主键为 b 字段. 

    select a,b,c,_rowid from h;
    +---+---+------+--------+
    | a | b | c    | _rowid |
    +---+---+------+--------+
    | 1 | 2 |    3 |      2 |
    | 4 | 5 |    6 |      5 |
    +---+---+------+--------+
    

      查看表结构,可以看到. 字段b 被定义为主键

    mysql> desc h;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | a     | int(11) | NO   | UNI | NULL    |       |
    | b     | int(11) | NO   | PRI | NULL    |       |
    | c     | int(11) | YES  |     | NULL    |       |
    +-------+---------+------+-----+---------+-------+

          

       存储空间.

       innodb的数据都别逻辑地存放在一个空间中(磁盘).称之为表空间(tablespace). 表空间又由段(segment) ,区(extent) ,页(page) 组成. 就像下面这样的一个关系.

             

  • 相关阅读:
    hdu 3268 09 宁波 现场 I
    hdu 3697 10 福州 现场 H
    CodeForces Round #521 (Div.3) D. Cutting Out
    #Leetcode# 226. Invert Binary Tree
    zufe 蓝桥选拔
    #Leetcode# 100. Same Tree
    #Leetcode# 6. ZigZag Conversion
    PAT 1084 外观数列
    #Leetcode# 38. Count and Say
    #Leetcode# 22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/henglxm/p/4310508.html
Copyright © 2011-2022 走看看