TiDB 2.0 kill会话

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/vkingnew/article/details/82790338
运行环境:


在tiDB中国目前的版本家索引很费时间,对磁盘的IO影响较大,若在加索引的时候可以考虑kill掉会话。
待空闲时间在加索引。
1.准备单表1000万条记录:
sysbench
2.执行添加字段和索引的语句:
alter table benchmark1.sbtest1  add column datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
CREATE INDEX ix_modifytime ON benchmark1.sbtest1(modifytime);

3.查询会话ID:
    ID  USER    HOST           DB          COMMAND    TIME  STATE   Info                                                                             
------  ------  -------------  ----------  -------  ------  ------  ---------------------------------------------------------------------------------
150797  root    10.19.157.136  benchmark1  Query         4  2       create index ix_modifytime on benchmark1.sbtest1(modifytime)                     
156458  root    10.19.157.136              Query         0  2       select * from INFORMATION_SCHEMA.PROCESSLIST p where p.info <>''                 
                                                                     LIMIT 0, 1000      

kill tidb 150797;

4.查看进度:
JOB_ID  DB_NAME     TABLE_NAME  JOB_TYPE        SCHEMA_STATE          SCHEMA_ID  TABLE_ID  ROW_COUNT  START_TIME                         STATE    
------  ----------  ----------  --------------  --------------------  ---------  --------  ---------  ---------------------------------  ---------
  9779  benchmark1  sbtest1     add index       write reorganization       4782      9773    4438590  2018-09-20 16:50:09.461 +0800 CST  running  
  9778  benchmark1  sbtest1     drop index      none                       4782      9773          0  2018-09-20 16:49:11.861 +0800 CST  synced 


admin cancel ddl jobs 9779;


总结:
可以 kill DML 语句,首先使用 show processlist,找到对应 session 的 id,然后执行 kill tidb [session id]。
可以 kill DDL 语句,首先使用 admin show ddl jobs,查找需要 kill 的 DDL job ID,然后执行 admin cancel ddl jobs 'job_id' [, 'job_id'] 。

猜你喜欢

转载自blog.csdn.net/vkingnew/article/details/82790338