`

mysql innodb 主键

阅读更多

  • http://blog.johnjosephbachir.org/2006/10/22/everything-you-need-to-know-about-designing-mysql-innodb-primary-keys/
  • The primary key determines the order in which the data is physically stored in the main data file, aka “the clustered index”. Another way of saying this: the main data file is a B-tree index that directly contains all of a table’s columns, and the key on this B-tree is the primary key. This can result in one less I/O operation (compared to MyISAM) on many queries.
  • The primary key is what is used to associate all of a table’s indexes with the main data file. So the primary key is replicated in every row of every index.
如果不显示的指定主键的话,mysql会默认指定一个隐式的主键,而且是6字节的,
主键应该是有序的
主键应该越小越好,Because the primary key is replicated in every entry of every index, 

分享到:
评论

相关推荐

    Mysql innodb 存储引擎全揭秘

    Innodb 通过多版本并发控制(MVCC)来获得高并发...对于表中的数据innodb 采用聚集的方式,每张表的存储都是按主键的顺序存放,如果没有显式在表定义时指定主键,innodb 会为每一行生成一个6字节的rowid,并以此为主键。

    innodb-java-reader:一个库和命令行工具,可以直接在Java中访问MySQL InnoDB数据文件

    MySQL InnoDB Java阅读器 innodb-java-reader是一个Java实现,用于直接访问MySQL InnoDB存储引擎文件。 使用库或命令行工具,它提供了只读功能,例如检查页面,通过主键,辅助键查找记录以及通过LSN或填充率生成页面...

    为什么说InnoDB必须要有主键并且推荐使用自增整型主键呢?

    1.InnoDB存储引擎的数据结构必须需要一个主键才可以组织起来,如果用户使用InnoDB存储引擎建立表的时候,没有指定主键,则Mysql会自动的帮你找到一个合适的唯一索引作为主键,若找不到符合条件唯一索引条件的字段时...

    深入讲解MySQL Innodb索引的原理

    引言 回想四年前,我在学习mysql的索引这块的时候,老师在讲索引的时候,是像下面这么说的 索引就像一本书的目录。而当用户通过索引查找数据时,就好比用户通过目录查询某章节的某个...InnoDB是 MySQL最常用的存储引擎

    有关MySQL InnoDB在索引中自动添加主键的问题

    但如果用户的索引字段中没有完全包含主键字段,InnoDB会把剩下的主键字段加到索引末尾。  (二)例子  例子一: CREATE TABLE t (  a char(32) not null primary key,  b char(32) not null,  KEY ...

    MySQL 主键与索引的联系与区别分析

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓...

    MySQL索引之主键索引

    在MySQL中,InnoDB数据表的主键设计我们通常遵循几个原则: 1、采用一个没有业务用途的自增属性列作为主键; 2、主键字段值总是不更新,只有新增或者删除两种操作; 3、不选择会动态更新的类型,比如当前时间戳等。 ...

    MySQL笔记-InnoDB物理及逻辑存储结构

    在InnoDB引擎中,创建表没有主键,InnoDB会把not null中unique作为主键,若这样的列也没有,那么InnoDB会生成6个字节的不可见的rowid。 在InnoDB中如果是独立表空间,创建一个表会生成2个文件,一个是.frm文件,一...

    MySQL的主键与唯一索引约束

    总结,对于主键与唯一索引约束: • 执行insert和update时,会触发约束检查 • InnoDB违反约束时,会回滚对应SQL • MyISAM违反约束时,会中断对应的SQL,可能造成不符合预期的结果集 • 可以使用 insert … on ...

    MySQL自增主键删除后重复问题

     设置一张MySQL表,表里有一个自增主键ID,往表里插入数据,假如插入数据之后表后一行的ID是100,我先删除这条ID为100的记录,然后重新启动服务器,按理说如果再往这个表里插入新的记录,新纪录的ID将为101,对吧...

    详解MySQL InnoDB的索引扩展

    索引扩展,InnoDB通过将主键列附加到每个辅助索引中来自动扩展该索引。创建如下表结构: mysql> CREATE TABLE t1 ( -> i1 INT NOT NULL DEFAULT 0, -> i2 INT NOT NULL DEFAULT 0, -> d DATE DEFAULT NULL, -> ...

    MySQL中主键索引与聚焦索引之概念的学习教程

    在MySQL中,InnoDB数据表的主键设计我们通常遵循几个原则: 采用一个没有业务用途的自增属性列作为主键; 主键字段值总是不更新,只有新增或者删除两种操作; 不选择会动态更新的类型,比如当前时间戳等。 这么做的...

    使用prometheus统计MySQL自增主键的剩余可用百分比

    最近生产环境一套数据库因为疯狂写日志数据,造成主键值溢出的情况出现,因此有必要将这个指标监控起来。 mysqld_exporter自带的这个功能,下面是我使用的启动参数: nohup ./mysqld_exporter –config.my-cnf=”./...

    mysql innodb的重要组件汇总

     它主要用来缓存数据与索引(准确的讲由于innodb中的表是由聚集索引组织的,所以数据只不是过主键这个索引的叶子结点)。  二、change buffer:  1 如果更新语句要更新二级索引的记录,但是记录所在的页面这个里面...

    MySQL异常恢复之无主键情况下innodb数据恢复的方法

    本文讲述了MySQL异常恢复之无主键情况下innodb数据恢复的方法。分享给大家供大家参考,具体如下: 在mysql的innodb引擎的数据库异常恢复中,一般都要求有主键或者唯一index,其实这个不是必须的,当没有index信息之时,...

    MySQL InnoDB MRR优化指南

    1、在二级索引查找后,根据得到的主键到聚簇索引找出需要的数据。 2、二级索引查找得到的主键的顺序是不确定的,因为二级索引的顺序与聚簇索引的顺序不一定一致; 3、如果没有 MRR,那么在聚簇索引查找时就可能...

    MySQL InnoDB row_id边界溢出验证的方法步骤

    InnoDB表若没有定义主键,会使用系统的一个默认递增row_id (dict_sys->row_id)作为主键。每次插入一行加1,到达最大值循环复用。 需要注意的是,虽然dict_sys->row_id 被定义为一个unsigned long long, 但由于这个...

    数据库面试必备!mysql 面试 55题

    1、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录, 再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ? (1)如果表的类型是 MyISAM,那么是 18 因为 ...

    mysql面试题-mysql面试题

    1、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ? (1) 如果表的类型是 MyISAM,那么是 18 因为 ...

    高频的50个 MySQL 面试题含详细讲解

    因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大ID 也不会丢失 (2)如果表的类型是 InnoDB,那么是 15 InnoDB 表只是把自增主键的最大 ID 记录到内存中,所以重启数据库或者是...

Global site tag (gtag.js) - Google Analytics