【问题标题】:Mysql concurrency: what happens if a locked table is accessed?Mysql并发:如果访问锁定的表会发生什么?
【发布时间】:2012-03-20 11:27:52
【问题描述】:

这个问题很简单,但我找不到准确的答案: 在 myisam 数据库中,如果一个 php 文件锁定了一个表(使用原子操作,比如 INSERT)而另一个 php 文件尝试访问同一个表(读取或写入)会发生什么?

现在,虽然很明显第二个会话将无法访问该表,但究竟发生了什么?它会返回某种错误吗?它是否在队列中等待直到能够访问它?

【问题讨论】:

    标签: mysql concurrency myisam


    【解决方案1】:

    第二个连接将等待锁释放。

    使用 MyISAM 任何写入(插入/更新/删除)都会锁定表,

    但是对于 INNODB 表类型,原子操作只会锁定受影响的行

    【讨论】:

    • 完美。第二次连接是否存在某种超时?
    • 在 mysql 配置或您正在使用的应用程序中定义的任何连接超时(例如 php.ini mysql 超时为 60 秒)。连接会一直等到这个时间,然后断开(显然)
    • 嗯 .. 使用 InnoDB 您也可以锁定整个表。但它是用于制作该表的快照。
    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 2014-01-16
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多