• 自增锁


    自增锁,在提交前释放,并发插入高

    s,x等锁,在COMMIT扣释放,并发插入需要等待

    不能回滚到前面的值

    insert -like:

            simple-insert:插入前就能确定插入行数语句
    
            bulk insert :插入前不确定插入行数的语句 replace ... select
    
            mixed-mode inserts:insert into t1(c1,c2) values(1,"a"),(null,"b"),(4,"c"),(null,"d")
    
                                                insert ...  on duplicate key update:自身扩展  (任何KEY 重复,就执行 )

     innodb_autoinc_lock_mode:

    0:传统方式 ,
    
    simple insert:传统方式
    
    bulk insert :传统方式
    
    对于 INSERT ... SELECT ...   些时其他事务不能插,分配的ID是连续得 ,其他事务不能插入
    
    SQL执行完才释放自增锁
    
     
    
    1.
    
    simple insert 并发
    
    bulk insert   传统方式
    
     
    
    2.
    
    所有自增都以并发方式
    
    同一SQL语句自增可能不连接
    
    row-based binlog

    工作模式1: 

    工作原理:
    
    BULK INSERT:
    
    ACQUIRE AI
    
    INSERT ..SELECT :如果执行时间长,自增锁持有时间就长,不确定插入的记录数,只能等插入完 才自增,其他事务等待插入
    
    AI=AI+N
    
    RELEASE AI
    
     
    
    SIMPLE INSERT : 无SQL 语句执行等待
    
    ACQURE AI
    
    AI=AI+N
    
    RELESE AI

    工作模式为 2时的工作原理:

    FOR I=AI;I++//对BULK INSERT  也能并发插入,对单线插入变差,无益,对多线程插入是益的,自增值可能不连续的
    
    {
    
    ACQUIRE AI LOCK
    
    INSERT ONE REC
    
    AI=Ai+1
    
    RELEAS AI LOCK
    
    }

    自增列的创建:

    对于联合索引,自增列必须放在第一个列
    
    create table jjj ( a int auto_increment,b int ,key( a,b));      // KEY(b,a)

    自增锁:

       AUTO_INCREMENT PK 不能持久化,速度快

       当重起MYSQL 服务器重新计算值:

               SELECT  MAX(AUTO_INC_COL) FROM XX 基于索引查找,而不是全表扫

    自增锁相关参数:

      auto_increment_increment:步长值

      auto_increment_offset:初始值

    每个节点产生全局唯一自增值设置

       auto_increment_offset =1                          auto_increment_offset=2

       auto_increment_increment=10                     auto_increment_increment=10

           

           

  • 相关阅读:
    css -- 元素消失的方法
    设备-地理定位
    css -- 高度相等的列 -- 3列高度相等
    css -- 映像 ,分页(上一页下一页)
    css -- 导航条
    现代JavaScript
    移动网页 -- 结构与属性
    移动网页 -- CSS布局
    JS常规的验证代码
    分享
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5698087.html
Copyright © 2020-2023  润新知