› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
zxc1234
V2EX  ›  MySQL

菜鸟请教一个 mysql 问题

  •  
  •   zxc1234 · May 19, 2020 · 3597 views
    This topic created in 2321 days ago, the information mentioned may be changed or developed.

    1.mysql 的在写的时候,会用写锁锁住,比如行锁,锁住这行,那么这时候可以读吗? 如果可以读,那跟 java 的读写锁好像不一样呢?

    4 replies  •  2020-05-20 00:16:39 +08:00
    hangszhang
        1
    hangszhang  
       May 19, 2020
    可以简单的 select ..., mvcc 实现了一致性快照读. 但是不能 select ... for update 或者 select ... lock in share mode
    MOONLIGHTT
        2
    MOONLIGHTT  
       May 19, 2020
    写锁锁住的时候不能读,因为可能导致资源的 [不一致性] (例如在写某行的时候,假设能读取数据,则在写的不同时刻读出来的数据可能是不同的)。

    另外读锁锁住的资源仍然可读。
    alakey1989
        3
    alakey1989  
       May 19, 2020
    写锁可以快照读
    xizismile
        4
    xizismile  
       May 20, 2020 via Android
    mysql 的读分为两种,锁读(读的时候加共享锁或者互斥锁)和一致性读(不加锁的读,又叫快照读)

    一个 session 锁住一行数据之后
    如果另一个 session 使用锁读的话会阻塞,使用一致性读的话,会从多版本快照( mvcc )里面读取数据,不会阻塞

    当然上面说的只适用于可重复读和读已提交的数据库隔离级别
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2709 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:19 · PVG 08:19 · LAX 17:19 · JFK 20:19
    ♥ Do have faith in what you're doing.