• 14.5.5 AUTO_INCREMENT Handling in InnoDB 在InnoDB AUTO_INCREMENT处理


    14.5.5 AUTO_INCREMENT Handling in InnoDB 在InnoDB AUTO_INCREMENT处理

    14.5.5.1 Traditional InnoDB Auto-Increment Locking
    14.5.5.2 Configurable InnoDB Auto-Increment Locking

    InnoDB 提供一个优化的显著的改善可扩展性和性能 ,插入记录到表 使用AUTO_INCREMENT columns.

    为了使用AUTO_INCREMENT 机制对于InnoDB 表,一个AUTO_INCREMENT column ai_col 必须定义为索引的一部分,

    以至于可以让它可能执行一个等价的一个索引

    SELECT MAX(ai_col) 查找表包含 最大值的列 , 这是通过一些表索引的第一列来实现的。

    这个章节提供后台信息在原始的(“传统”) 实现auto-increment locking 在InnoDB,

    说明可配置的锁机制,文档参数用于配置机制,描述它的行为和复制的互动。

    14.5.5.1 Traditional InnoDB Auto-Increment Locking 传统的InnoDB Auto-Increment Locking

    auto-increment handling 在InnoDB 的原始实现是使用下面的策略来访问当使用binary log 基于语句的复制

    或者对于某些recovery 场景。

    如果你指定一个 AUTO_INCREMENT 列对于一个InnoDB 表,表的句柄在InnoDB 数据库目录包含一个特定的统计

    称为auto-increment counter 用于给列分配新的值, 这个计数是只存储在主内存,不是磁盘。

    InnoDB 使用下面的算法来初始化 auto-increment 计数用于一个表包含一个AUTO_INCREMENT 列

    叫做 ai_col:

    在server 启动或者在操作一个表后 。

    SELECT MAX(ai_col) FROM table_name FOR UPDATE;

    InnoDB 增加从语句和分配它到列和给自增列计数取值,默认的, 自增值递增是1,

    这可以通过auto_increment_increment配置

    mysql> show variables like ‘%auto_increment_increment%’;
    +————————–+——-+
    | Variable_name | Value |
    +————————–+——-+
    | auto_increment_increment | 1 |
    +————————–+——-+
    1 row in set (0.00 sec)

    如果表是空的,InnoDB 使用值1.

    如果 SHOW TABLE STATUS 语句检验 表t在auto-increment counter 被初始化后,

    InnoDB 初始化但是不增加值,存储它用于后面的插入。

    这个初始化使用一个正常的exclusive-locking read 在表上,锁持续到事务结束。

    InnoDB 遵循下面的过程来初始化auto-increment counter 对于刚创建的表

    当自动列被初始化化,如果你不显示的指定一个值用于AUTO_INCREMENT 列,

    InnoDB 增加列和分配新的值给这个列, 如果你插入一个新的记录显示指定的列,

    值是大于当前计数的值, counter 是设置为特定列的值。

    如果用户指定NULL 或者0 用于自增列在一个插入, InnoDB 对待记录如果值没有被指定 ,生产一个新的值给它。

    自增列机器是没有被定义的如果你分配一个负值,或者如果值变的大于最大值

    当访问自增列计数,InnoDB 使用一种特别的 table-level AUTO-INC lock, 保持到当前SQL语句结束,

    不是事务的结束。

    InnoDB 使用内存自增统计 只要服务器运行,当server 停止和重启后,innoDB 重新初始化计数器

    对于每个表 。

    14.5.5.2 Configurable InnoDB Auto-Increment Locking 配置InnoDB 自增列锁定

  • 相关阅读:
    32位二进制IP地址与十进制IP地址互相转换
    在安装AndroidStudio时产生的问题
    Java 数列求和
    Java throws Exception、try、catch
    Java 语句循环
    Oracle OEM
    数据泵Expdp和Impdp
    java查询高斯数据库表某个字段值
    安全测试笔记(未更新完)
    工作笔记
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351169.html
Copyright © 2020-2023  润新知