zoukankan      html  css  js  c++  java
  • mysql自增锁_33

    自增锁也会导致死锁

    自增锁

    一个表一个自增列

    auto_increment pk

    select max(auto_inc_col)from t for update

    在事务提交前释放

    其他所在事务提交时才释放

    think about

    insert select

    create table z(a int auto_increment,b int,primary key(a))

    begin;

    insert into z values(null,1)         begin

                                                              insert into z values(null,2) 可以插入

    如果之前插入的记录被回滚掉 自增值不会回滚

    insert 。。。on duplicate key update遇到重复值会自动更新

    innodb_autoinc_lock_mode= 0 1 2

    0:传统模式 在sql语句执行完之后自增锁才释放

    1 默认参数

    simple inserts 并发:在sql语句没执行完之前就可以释放

    bulk insert 传统方式

    所有自增都以并发方式

    同一sql语句自增可能不连续

    row-based binlog

    如果把值设置为2,需要设置为row-based binlog

     

    myisadm与innodb的自增

    innodb的自增列必须被定义为一个key

    create table t(a int auto_increment,b int,key(b,a))engine=innodb; 必须被定义为key的第一个列(为什么) select max(auto_inc_col)from t for update

    自增不会持久化

    auto_increment_increment

    auto_increment_offset

     二阶段锁

    读加锁 写加锁 serilizeable

    非锁定的一致性读

    如果是sr  右边不能执行

     事务:

    a:原子性 redo

    c:一致性 undo 

    i:隔离性 lock 

    d:持久性 redo&undo

    flat transaction:begin commit

    flat gransaction with savepoints:

    chained transaction:

     

  • 相关阅读:
    python 字典转对象实现
    漏洞复现的整理
    mlx90614红外传感器
    【小程序码】登录的技术实现案例
    Spring mvc Aop
    MSHFLEXGRID常用的属性,方法事件
    InsertAuditEntryNew
    Froggy 的 CSP-2021 S1 游记
    JOI Open 偷学记录
    生产订单工序新增、修改、删除——CO_SE_PRODORD_OPR_CREATE、CO_SE_PRODORD_OPR_CHANGE、CO_SE_PRODORD_OPR_DELETE
  • 原文地址:https://www.cnblogs.com/lvjinping/p/9622615.html
Copyright © 2011-2022 走看看