› 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
alexfarm
V2EX  ›  MySQL

关于 Mysql 全表扫描时的插入问题

  •  
  •   alexfarm · Jul 24, 2018 · 4281 views
    This topic created in 2984 days ago, the information mentioned may be changed or developed.
    如果一个查询没有走索引导致全表扫描,mysql 的行级锁会导致在查询时无法插入数据吗?在末尾插入数据可以吗?求解答
    7 replies  •  2018-07-25 08:33:36 +08:00
    yangqi
        1
    yangqi  
       Jul 24, 2018
    需要全表扫描当然是锁整个表了,怎么可能让你插入。
    zjp
        2
    zjp  
       Jul 24, 2018 via Android
    前面都说了全表扫描,那用的就不是行级锁啊。和末尾无关…不要把数据库表当成一张二维表。
    abcbuzhiming
        3
    abcbuzhiming  
       Jul 24, 2018   ❤️ 2
    http://www.cnblogs.com/crazylqy/p/7611069.html
    这文章写的不错的:
    在 Repeatable Read 隔离级别下,如果进行全表扫描的当前读,那么会锁上表中的所有记录,同时会锁上聚簇索引内的所有 GAP,杜绝所有的并发 更新 /删除 /插入 操作。
    XOXO360
        4
    XOXO360  
       Jul 24, 2018 via Android
    这个时候主键重要性。。。
    ppyybb
        5
    ppyybb  
       Jul 24, 2018 via iPhone
    是什么存储引擎,隔离级别是 rc 还是 rr ?如果是 innodb 的话,快照读不会加锁,不影响插入。如果是当前读导致全表扫描,那么应该会锁住所有记录(全部加 next-key,同时加入一个表级意向锁,但是不会采取表锁,可以自行验证),这时候插入应该会被阻塞,因为插入带来的插入意向锁和 next-key 是冲突的。(否则就会导致幻度,这违反 rr 的定义)
    alexfarm
        6
    alexfarm  
    OP
       Jul 25, 2018 via iPhone
    @abcbuzhiming 谢谢,今天仔细阅读一下
    gabon
        7
    gabon  
       Jul 25, 2018 via iPhone
    读写分离
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2627 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:12 · PVG 21:12 · LAX 06:12 · JFK 09:12
    ♥ Do have faith in what you're doing.