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:

     

  • 相关阅读:
    BZOJ2456: mode 众数卡空间
    BZOJ4128: Matrix 矩阵BSGS
    [SDOI2011]计算器 BSGS
    前台中文搜索到后台乱码
    批量删除实现js+springmvc
    基于Jquery+Ajax+Json实现分页显示
    分页条的制作
    input text中不能显示空格后的内容
    mysql存入中文乱码问题
    WEBROOT根目录 <%=request.getContextPath()%>
  • 原文地址:https://www.cnblogs.com/lvjinping/p/9622615.html
Copyright © 2011-2022 走看看