I处于可重复读级别.
为什么让我等呢?
我知道在任何级别上的所有读取(选择)都是非阻塞的。
我遗漏了什么?
第1场会议:
mysql> lock tables users write;
Query OK, 0 rows affected (0.00 sec)第2场会议:
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from users where id = 1; // wait第1场会议:
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)第2场会议:
mysql> select * from users where id = 1;
+----+-----------------+--------------------+------+---------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+------------+
| id | name | email | rol | email_verified_at | password | remember_token | created_at | updated_at | deleted_at |
+----+-----------------+--------------------+------+---------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+------------+
| 1 | Bella Lueilwitz | orlo19@example.com | NULL | 2022-08-01 17:22:29 | $2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi | MvMlaX9TQj | 2022-08-01 17:22:29 | 2022-08-01 17:22:29 | NULL |
+----+-----------------+--------------------+------+---------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+------------+
1 row in set (10.51 sec)在这个问题上恰恰相反。
发布于 2022-10-27 13:40:56
你提到了2013年发布的关于MySQL 5.0的一个问题。从那时起的答案表明,客户机可以获得一个已缓存在查询缓存中的结果。从那时起,MySQL 5.6和5.7默认禁用查询缓存,MySQL 8.0完全删除了该特性。这是件好事。
文档说:
WRITE锁:
在MySQL 5.0天中也是如此,但是查询缓存允许一些客户机绕过它。但我想即使在那时,它也不可靠,因为如果客户端运行的查询碰巧没有被缓存,我想它将恢复到文档化的行为。无论如何,这是没有意义的,因为所有当前支持的MySQL版本都应该禁用或删除查询缓存。
https://stackoverflow.com/questions/74222063
复制相似问题