------------------------------------------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() | NO | UNI | NULL | |
| b | int() | NO | PRI | NULL | |
| c | int() | YES | | NULL | |
+-------+---------+------+-----+---------+-------+

      

   存储空间.

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

        

inndo 表与存储逻辑_1的更多相关文章

  1. 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)

    三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...

  2. Mysql+innodb数据存储逻辑

    Mysql+innodb数据存储逻辑. 表空间由段,区,页组成 ibdata1:共享表空间.即所有的数据都存放在这个表空间内.如果用户启用了innodb_file_per_table,则每张表内的数据 ...

  3. MySQL开发篇(4)表类型(存储引擎)的选择

    一.查看支持的存储引擎以及设置修改存储引擎 1.查看默认存储引擎:show variables like '%storage_engine%'; 2.查看当前数据库支持的存储引擎:show ENGIN ...

  4. SQL Server 堆表行存储大小(Record Size)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 堆表行记录存储格式(Heap) 案例分析(Case) 参考文献(References) 二.背 ...

  5. 数据库(表)的逻辑备份与恢复<四>

    数据库(表)的逻辑备份与恢复  介绍 逻辑备份是指使用工具 export 将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用 工具 import 利用备份的文件把数 ...

  6. mysql修改表的存储引擎(myisam<=>innodb)

    查看当前数据库的所支持的数据库引擎以及默认数据库引擎 mysql> show engines; +--------------------+---------+----------------- ...

  7. oracle 修改表空间存储路径

    [root@yoon ~]# more /etc/oracle-releaseOracle Linux Server release 5.7 Oracle Database 11g Enterpris ...

  8. MySQL更改数据库表的存储引擎

    MySQL更改数据库表的存储引擎 1.查看表的原存储引擎 show create table user; 'user', 'CREATE TABLE `user` (\n `id` int(11) N ...

  9. 「SQL归纳」树形结构表的存储与查询功能的实现——通过路径方法(非递归)

    一.树形结构例子分析: 以360问答页面为例:http://wenda.so.com/c/ 我们通过观察URL,可以明确该页面的数据以树形结构存储,下面三块模块分别为: ①根节点 ②根节点的第一层子节 ...

随机推荐

  1. mysql综合性练习

    题目描述 设定有一个数据库,里面有4张表: 学生表(student) 课程表(course) 成绩表(score) 教师信息表(teacher) 表结构如下: 表一_学生表(student) 属性名 ...

  2. python爬虫(2)——urllib、get和post请求、异常处理、浏览器伪装

    urllib基础 urlretrieve() urlretrieve(网址,本地文件存储地址) 直接下载网页到本地 import urllib.request #urlretrieve(网址,本地文件 ...

  3. springmvc+strut2比较

    常见web框架中Struts2和SpringMVC独占鳌头,SpringMVC和Struts有什么不同? 我们可以从各个方面进行对比: 一:框架的思想设计上 SpringMVC控制器是基于方法上拦截, ...

  4. c# 第23节 外部方法

    本节内容: 1:外部方法是什么 2:外部方法的实现 1:外部方法是什么 2:外部方法的实现 样式: 实现方式:很少 用自己多加练习把

  5. tensorflow的MNIST教程

    (ps:根据自己的理解,提炼了一下官方文档的内容,错误的地方希望大佬们多多指正.....) 0x01:数据集的获取和表示 数据集的获取,可以通过代码自动下载.这里的数据就是各种手写数字图片和图片对应的 ...

  6. Codeforces Round 589 (Div. 2) 题解

    Is that a kind of fetishism? No, he is objectively a god. 见识了一把 Mcdic 究竟出题有多神. (虽然感觉还是吹过头了) 开了场 Virt ...

  7. 与某军工背景软件企业分享Azure DevOps Server的经验

    DevOps 是英文单词Development和Operations的组合词,是一种用于促进软件开发.运维实施和质量保障部门之间协同工作的过程和方法. 结合软件开发管理规范,应用自动化的构建.测试和发 ...

  8. Mybatis中的association用法

    这篇文章我们将来学习一些 association 用法 表结构 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` (  `id` int(1 ...

  9. 【前端知识体系-JS相关】对移动端和Hybrid开发的理解?

    1.hybrid是什么,为何使用hybrid呢? 概念: hybrid就是前端和客户端的混合开发 需要前端开发人员和客户端开发人员配合完成 某些环节也可能会涉及到server端 大前端:网页.APP. ...

  10. java 金额数字转换大写算法

    根据人民币大写金额规范,转换有几点要注意的: 阿拉伯数字中间有"0"时,中文大写金额中间可以只写一个"零"字.如¥1,409.50,应写成人民币壹仟肆佰零玖圆伍 ...