zoukankan      html  css  js  c++  java
  • mysql事务测试及delete和update是使用行级锁,还是表级锁

    mysql5.5版本以上默认的引擎是InnoDB,5.5以下,默认引擎是MYISAM,根本还是要根据引擎的不同去考虑。

    InnoDB和MyISam区别:

    区别项Innodbmyisam
    事务 支持 不支持
    锁粒度 行锁,适合高并发 表锁,不适合高并发
    是否默认 默认 非默认
    支持外键 支持外键 不支持
    适合场景 读写均衡,写大于读场景,需要事务 读多写少场景,不需要事务
    全文索引 不支持,可以通过插件实现, 更多使用ElasticSearch 支持全文索引

    有如下表:

    表中的数据有:

    开启事务(begin),执行更新语句,将'user_name'全部更新为'woxbwo',但不提交(commit)事务:

    在事务内查询:

    事物外查询,新开一个窗口查询:

    可以发现,事务外查到的数据author没有发生改变

    提交事务:

    顺便测试MySQL插入是表级锁还是行级锁

    开启事务,插入数据,但不提交事务

    查看事务内数据

    查看事务外数据

    在另外一个窗口,再次插入一条数据,并查看数据;

    再查看事务内数据:

    提交事务,并查看。

    上述测试过程可以看出,mysql使用innodb引擎时,插入数据(insert)没有锁

    测试delete和update过程

    查看数据:

    开启事务,删除id=1的行 但不提交数据:

    在另外一个窗口也删除id=1的行,会发生生么样的情况呢?

    会发现处于等待状态

    那么在这种情况下,我们是否能够删除其他的行呢,我们再开一个窗口删除id=2的行,试试

    照样能删除,说明删除没使用表级锁。

    我们提交事务发现:

    综上所属:delete是使用行级锁的,update也是实现行级锁的。同理可测;

     

  • 相关阅读:
    背水一战 Windows 10 (61)
    背水一战 Windows 10 (60)
    背水一战 Windows 10 (59)
    背水一战 Windows 10 (58)
    背水一战 Windows 10 (57)
    背水一战 Windows 10 (56)
    背水一战 Windows 10 (55)
    背水一战 Windows 10 (54)
    背水一战 Windows 10 (53)
    背水一战 Windows 10 (52)
  • 原文地址:https://www.cnblogs.com/woxbwo/p/11538237.html
Copyright © 2011-2022 走看看