update 更新卡住

表分区表 和 非分区表,进行left join操作,根据分区查询数据量2000多万,更新一直卡着不提交

SELECT * FROM information_schema.CLUSTER_TIDB_TRX;看看有锁没有

没执行完吧。

减少点数据试试,有可能太大了,会超时后回滚…

有锁, START_TIME: 2023-04-03 09:47:39.223000
CURRENT_SQL_DIGEST: 6cf71fa94dd0666d7ec67ce208da45d6115dbbfd501714b40dbb061221f33454
CURRENT_SQL_DIGEST_TEXT: NULL
STATE: LockWaiting
WAITING_START_TIME: 2023-04-03 12:48:42.544918
MEM_BUFFER_KEYS: 0
MEM_BUFFER_BYTES: 0
SESSION_ID: 671

information_schema.data_lock_waits 这个表里是空的,怎么查看是哪个sql引起的

                ID: 440529442366554141
         START_TIME: 2023-04-03 09:47:39.223000
 CURRENT_SQL_DIGEST: 6cf71fa94dd0666d7ec67ce208da45d6115dbbfd501714b40dbb061221f33454

CURRENT_SQL_DIGEST_TEXT: NULL
STATE: Idle
WAITING_START_TIME: NULL
MEM_BUFFER_KEYS: 0
MEM_BUFFER_BYTES: 0
SESSION_ID: 671

状态又变成 Idle了,还是执行中

更新语句可以加limit 的

2000万不应该直接执行,kill 了也要回滚很久

抱歉,不是2000万,是200万,多写了个0,一直执行,没有锁,现在kill掉了,比较奇怪,分区表,就是按分区来批量执行的,比这个分区多的数据,都执行完了

您好

麻烦提供下集群版本和以下信息。方法如下

  1. EXPLAIN FOR CONNECTION connection_id
    connection_id 是通过 show processlist 获取的当前执行这个 SQL 的会话 id

  2. curl http://{tidb-ip}:10080/debug/zip?seconds=60 --output debug.zip
    tidb-ip 为当前执行这个 SQL 的 tidb 实例 ip,10080 为 status port 的默认值