• 十七、mysql 分区之 锁问题


    1.演示一个表锁,基于myisam
        CMD 1                                                   CMD2
        create table e1 (id int ,name char(20)); 
        lock table e1 read;
        [select|insert|update|delete]..                         select * from e1; //此时,这个操作将被挂起,等待e1被解锁
        unlock table;
      
    2.表读锁:
        1.被锁定的进程跟没有被锁的都可以访问这个表
        2.但被锁的进程在未解锁之前只允许读取本表,而且不能进行增删改操作。
        2.未解锁之前,其他进行可以读取本表,也允许读取其他表,但是不能操对这个表进行更新操作
    
    3.如果sql中给表设置了别名,如果要对这个表进行枷锁,那么别名也需要被枷锁、
    
    4.共享锁:
        实例:select * from emp where id = 1 lock in share mode;
    
    4.排他锁:
        实例:select * from emp where id = 1 for update;
        1.在没有索引的情况下,innodb会进行表锁,也就是说行锁是要建立在有索引的基础下;
        2.如果有索引的情况下,如果2个进程使用的是同一个索引,也会造成锁等待的情况,否则使用的是不同索引,则不会造成死锁情况
        
    5.Next-Key锁
        1.当where条件为范围(in、or <=)等,innodb会给符合条件的索引项加锁;如果在范围内,但是不存在的数据行,innodb会给这些不存在的记录加上“Next-Key锁”
  • 相关阅读:
    android权限大全
    Java反射经典实例
    SD卡的寄存器 SD总线协议 CRC算法
    ARM CortexM3 操作模式和特权级别
    使用 Printf via SWO/SWV 输出调试信息
    embOS实时操作系统 概览
    embOS实时操作系统 多任务调度
    android wifi hotspot
    Eclipse Java 智能提示
    ARM CortexM3 概览
  • 原文地址:https://www.cnblogs.com/shibazi/p/3839594.html
Copyright © 2020-2023  润新知