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:

     

  • 相关阅读:
    最小生成树之算法记录【prime算法+Kruskal算法】【模板】
    hdoj 1869 六度分离【最短路径求两两边之间最长边】
    la3211
    codeforces round #414 div1+div2
    bzoj1823
    bzoj3112
    bzoj1061&&bzoj3256
    单纯形&&线性规划
    bzoj1494
    bzoj3105
  • 原文地址:https://www.cnblogs.com/lvjinping/p/9622615.html
Copyright © 2011-2022 走看看