V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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 · 2018-07-24 22:19:08 +08:00 · 3239 次点击
    这是一个创建于 2075 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果一个查询没有走索引导致全表扫描,mysql 的行级锁会导致在查询时无法插入数据吗?在末尾插入数据可以吗?求解答
    7 条回复    2018-07-25 08:33:36 +08:00
    yangqi
        1
    yangqi  
       2018-07-24 22:52:41 +08:00
    需要全表扫描当然是锁整个表了,怎么可能让你插入。
    zjp
        2
    zjp  
       2018-07-24 22:53:54 +08:00 via Android
    前面都说了全表扫描,那用的就不是行级锁啊。和末尾无关…不要把数据库表当成一张二维表。
    abcbuzhiming
        3
    abcbuzhiming  
       2018-07-24 23:20:22 +08:00   ❤️ 2
    http://www.cnblogs.com/crazylqy/p/7611069.html
    这文章写的不错的:
    在 Repeatable Read 隔离级别下,如果进行全表扫描的当前读,那么会锁上表中的所有记录,同时会锁上聚簇索引内的所有 GAP,杜绝所有的并发 更新 /删除 /插入 操作。
    XOXO360
        4
    XOXO360  
       2018-07-24 23:35:30 +08:00 via Android
    这个时候主键重要性。。。
    ppyybb
        5
    ppyybb  
       2018-07-24 23:48:11 +08:00 via iPhone
    是什么存储引擎,隔离级别是 rc 还是 rr ?如果是 innodb 的话,快照读不会加锁,不影响插入。如果是当前读导致全表扫描,那么应该会锁住所有记录(全部加 next-key,同时加入一个表级意向锁,但是不会采取表锁,可以自行验证),这时候插入应该会被阻塞,因为插入带来的插入意向锁和 next-key 是冲突的。(否则就会导致幻度,这违反 rr 的定义)
    alexfarm
        6
    alexfarm  
    OP
       2018-07-25 08:19:21 +08:00 via iPhone
    @abcbuzhiming 谢谢,今天仔细阅读一下
    gabon
        7
    gabon  
       2018-07-25 08:33:36 +08:00 via iPhone
    读写分离
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2812 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:59 · PVG 22:59 · LAX 07:59 · JFK 10:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.