tidb锁

[127.0.0.1] [my1] 14:48:02 >select * from t1;
±—±-------±-----+
| id | gender | age |
±—±-------±-----+
| 1 | f | 10 |
| 2 | kk | 60 |
| 3 | f | 9 |
| 4 | m | 10 |
| 5 | m | 11 |
| 6 | m | 9 |
±—±-------±-----+
6 rows in set (0.00 sec)

[127.0.0.1] [my1] 14:46:05 >show index from t1;
±------±-----------±---------±-------------±------------±----------±------------±---------±-------±-----±-----------±--------±--------------±--------±-----------±----------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression | Clustered |
±------±-----------±---------±-------------±------------±----------±------------±---------±-------±-----±-----------±--------±--------------±--------±-----------±----------+
| t1 | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | | YES | NULL | YES |
±------±-----------±---------±-------------±------------±----------±------------±---------±-------±-----±-----------±--------±--------------±--------±-----------±----------+

[127.0.0.1] [my1] 14:46:10 >begin;
update t1 set age=60 where gender=‘kk’;

tidb的锁如何查看?gender列没有索引,为什么不锁表

SELECT * FROM INFORMATION_SCHEMA.data_lock_waits;
查一下看看

空的。

你只执行这一条肯定空的,你再开个窗口,在执行一下UPDATE dong SET age=80 WHERE gender=‘kk’;这个sql

tidb是行级锁,每个行key格式前缀:t(table_id)_r(rowid),rowd是int主键或者隐藏的_rowid, 锁信息是写入Lockcf里的 ,格式是${key}=>${start_ts,primary_key,…etc} ,需要锁哪行就写哪行相关信息

阻塞了,waits查看还是空的。tidb正常的dml不会有表锁吗?

啊?正常行锁这个表里能查到的,dml肯定有锁啊,不然不乱套了。。。

嗯,这个前两天看视频学习了下

现在还阻塞呢,但是查看是空的


我这随便测试能看见啊,锁等待会超时的,如果报错

就查不到了

1 个赞

有锁超时参数设置吧,我的卡了很久也没超时

你这个是在一个窗口跑的?

不是,一个窗口不会阻塞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。