• mysql 运维常用命令


    【配置的确认与修改】

    要测试InnoDB的锁互斥,以及死锁,有几个配置务必要提前确认:

    区间锁是否关闭

    事务自动提交(auto commit)是否关闭

    事务的隔离级别(isolation level)

    这几个参数,会影响实验结果。

    【事务的隔离级别】辅助材料:

    《事务的隔离级别,InnoDB如何实现?》

    间隙锁是否关闭

    区间锁(间隙锁,临键锁)是InnoDB特有施加在索引记录区间的锁,MySQL5.6可以手动关闭区间锁,它由innodb_locks_unsafe_for_binlog参数控制:

    设置为ON,表示关闭区间锁,此时一致性会被破坏(所以是unsafe)

    设置为OFF,表示开启区间锁

    可以这么查询该参数:

    show global variables like "innodb_locks%";

    【间隙锁,临键锁】辅助材料:

    《InnoDB,索引记录上的三种锁》

    事务自动提交

    MySQL默认把每一个单独的SQL语句作为一个事务,自动提交。

    可以这么查询事务自动提交的参数:

    show global variables like "autocommit";

    事务的隔离级别

    不同事务的隔离级别,InnoDB的锁实现是不一样。

    可以这么查询事务的隔离级别:

    show global variables like "tx_isolation";

    可以这么设置事务的隔离级别:

    set session transaction isolation level X;

    X取:

    read uncommitted

    read committed

    repeatable read

    serializable

    图片

    这三个参数,MySQL5.6的默认值如上:

    OFF,表示使用区间锁

    On,表示事务自动提交

    RR,事务隔离级别为可重复读

    要模拟并发事务,需要修改事务自动提交这个选项,每个session要改为手动提交。

    任何连上MySQL的session,都要手动执行:

    set session autocommit=0;

    以手动控制事务的提交。

    图片

    如上图,需要把session的autocommit设置为OFF。

    可以看到,修改session变量,并不影响global变量,全局其他的session仍然是ON。

    画外音:session变量默认继承global变量,也可以单独修改。

    【查看死锁日志和内存使用情况 注意 是 innodb引擎】

    show engine innodb status

  • 相关阅读:
    【PHP】php基础回顾
    【PHP】MVC架构
    【OpenGL学习】使用VBO和FBO
    【OpenGL学习】使用Shader做图像处理
    hdu 杭电 1242 Rescue 果枫
    并查集模板 果枫
    数组结构体中排序 果枫
    hdu 杭电 1728 逃离迷宫 果枫
    hdu 杭电 1241 Oil Deposits 果枫
    hdu 杭电 2216 Game III 果枫
  • 原文地址:https://www.cnblogs.com/cfas/p/16134318.html
Copyright © 2020-2023  润新知