Description:
Hello,
I create a database and fill with many tables (30000 tables), and then I execute drop database, while `drop database` is doing checking permission, it doesn't response to `kill` command, and I have to wait for a quite long long time.
Please reference to `How to repeat` for detail.
How to repeat:
[Firstly, create a database and fill with 30000 tables]
create a local file named "create_table.sql" and copy the following sql statements into the file, and save it:
drop database if exists mytest;
create database mytest;
use mytest
delimiter /
create procedure proc1()
BEGIN
DECLARE i INT;
DECLARE sql_text VARCHAR(16000);
SET i=0;
SET sql_text='';
WHILE i<30000 DO
SET sql_text=CONCAT("CREATE TABLE t_", i);
SET sql_text=CONCAT(sql_text, "( EVTBKNO char(3) NOT NULL COMMENT '银行号银行号银行号银行号银行号银行号银行号银行号银行号银行号银行号银行号银行号银行号银行号', EVTACDT int(8) NOT NULL COMMENT '当前会计日期当前日期当前会计日期当前会计日期当前会计日期当前会计日期当前会计日期当前会计日期', EVTJRNO char(14) NOT NULL COMMENT '交易日志号交易日志号交易日志号交易日志号交易日志号', EVTEINO int(2) NOT NULL COMMENT '交易内事件序号交序号交易内事件序号交易内事件序号交易内事件序号交易内事件序号', EVTTRBR char(6) NOT NULL COMMENT '交易机构号交易机构号交易机构号交易机构号交易机构号交易机构号交易机构号交易机构号交易机构号交易机构号', EVTTRUS char(20) NOT NULL COMMENT '交易用户交易用户交易用户交易用户交易用户交易用户交易用户交易用户交易用户交易用户交易用户', EVTAUUS char(20) NOT NULL COMMENT '授权用户授权权用户授权用户授权用户授权用户授权用户授权用户授权用户', EVTTRDT int(8) NOT NULL COMMENT '交易日期交易日日期交易日期交易日期交易日期交易日期交易日期交易日期交易日期交易日期', EVTRSYS char(4) NOT NULL COMMENT '发起方系统代系统代码', EVTRSJN char(36) NOT NULL COMMENT '发起方交易交易流水号发起方交易流水号发起方交易流水号', EVTTCSQ int(3) NOT NULL COMMENT '交易调用序号交易调用序号交易调用序号', EVTRSTR char(8) NOT NULL COMMENT '发起方交易交易码发起方交易码发起方交易码发起方交易码', EVTMPFG char(1) NOT NULL COMMENT '手工入账标入账标识手工入账标识手工入账标识', EVTVHTP char(1) NOT NULL COMMENT '传票类型传型传票类型传票类型传票类型传票类型传票类型', EVTIBTP char(1) NOT NULL COMMENT '内部清算类部清算类型内部清算类型内部清算类型内部清算类型', EVTVLDT int(8) NOT NULL COMMENT '起息日期起日期起息日期起息日期起息日期起息日期起息日期起息日期', EVTDRVF char(1) NOT NULL COMMENT '明细冲账冲账标识明细冲账标识明细冲账标识', EVTREVT char(1) NOT NULL COMMENT '冲账类型类型冲账类型冲账类型冲账类型冲账类型冲账类型', EVTRRAD int(8) NOT NULL COMMENT '被冲/冲账交易日期被冲/冲账交易日期', EVTRRAJ char(14) NOT NULL COMMENT '被冲/冲冲/冲账交易日志号被冲/冲账交易日志号', EVTHEFL char(120) NOT NULL COMMENT '事件头件头保留项事件头保留项', EVTPDFG char(1) NOT NULL COMMENT '产品种类类产品种类产品种类产品种类产品种类产品种类产品种类产品种类产品种类', EVTPDCD char(12) NOT NULL COMMENT '产品编品编码产品编码产品编码产品编码产品编码产品编码', EVTEVCD char(8) NOT NULL COMMENT '事件代件代码事件代码事件代码事件代码事件代码事件代码事件代码事件代码', EVTRLCA char(32) NOT NULL COMMENT '相关号/账号相关合约号/账号相关合约号/账号', EVTACCO char(20) NOT NULL COMMENT '客户协议编号客户账户/协议编号客户账户/协议编号', EVTASIB char(10) NOT NULL COMMENT '账户账户子序号/借据序号账户子序号/借据序号', EVTBLBR char(6) NOT NULL COMMENT '归属属机构归属机构归属机构归属机构', EVTCUNO char(12) NOT NULL COMMENT '客号客户号客户号客户号客户号客户号客户号客户号客户号客户号', EVTIT01 char(5) NOT NULL COMMENT '科1科目01科目01科目01科目01科目01科目01科目01科目01', EVTAS01 char(6) NOT NULL COMMENT '内1内部账顺序号01内部账顺序号01内部账顺序号01内部账顺序号01内部账顺序号01', EVTIT02 char(5) NOT NULL COMMENT '科科目02科目02科目02科目02科目02科目02科目02科目02科目02', EVTAS02 char(6) NOT NULL COMMENT '内序号02内部账顺序号02内部账顺序号02内部账顺序号02内部账顺序号02', EVTIT03 char(5) NOT NULL COMMENT '科目03科目03科目03科目03科目03科目03科目03科目03科目03', EVTAS03 char(6) NOT NULL COMMENT '内序号03内部账顺序号03内部账顺序号03内部账顺序号03内部账顺序号03内部账顺序号03内部账顺序号03', EVTIT04 char(5) NOT NULL COMMENT '科04科目04科目04科目04科目04科目04科目04科目04', EVTAS04 char(6) NOT NULL COMMENT '内04内部账顺序号04内部账顺序号04内部账顺序号04内部账顺序号04', EVTIT05 char(5) NOT NULL COMMENT '科目05科目05科目05科目05科目05科目05科目05科目05科目05科目05', EVTAS05 char(6) NOT NULL COMMENT '内号05内部账顺序号05内部账顺序号05内部账顺序号05内部账顺序号05', EVTIT06 char(5) NOT NULL COMMENT '科科目06科目06科目06科目06科目06科目06科目06科目06科目06', EVTAS06 char(6) NOT NULL COMMENT '内6内部账顺序号06内部账顺序号06内部账顺序号06', EVTIT07 char(5) NOT NULL COMMENT '科目07科目07科目07科目07科目07科目07科目07', EVTAS07 char(6) NOT NULL COMMENT '内07内部账顺序号07内部账顺序号07', EVTIT08 char(5) NOT NULL COMMENT '科科目08科目08科目08科目08科目08', EVTAS08 char(6) NOT NULL COMMENT '内号08内部账顺序号08内部账顺序号08内部账顺序号08', EVTIT09 char(5) NOT NULL COMMENT '科科目09科目09科目09科目09科目09科目09科目09科目09', EVTAS09 char(6) NOT NULL COMMENT '内9内部账顺序号09内部账顺序号09内部账顺序号09内部账顺序号09', EVTIT10 char(5) NOT NULL COMMENT '科目10科目10科目10科目10科目10科目10科目10科目10科目10', EVTAS10 char(6) NOT NULL COMMENT '内10内部账顺序号10内部账顺序号10内部账顺序号10', EVTIT11 char(5) NOT NULL COMMENT '科目11科目11科目11科目11', EVTAS11 char(6) NOT NULL COMMENT '内顺序号11内部账顺序号11内部账顺序号11', EVTIT12 char(5) NOT NULL COMMENT '科2科目12科目12科目12科目12科目12', EVTAS12 char(6) NOT NULL COMMENT '内内部账顺序号12内部账顺序号12内部账顺序号12', EVTIT13 char(5) NOT NULL COMMENT '科13科目13科目13科目13科目13科目13科目13', EVTAS13 char(6) NOT NULL COMMENT '内内部账顺序号13内部账顺序号13内部账顺序号13内部账顺序号13', EVTIT14 char(5) NOT NULL COMMENT '科目14科目14科目14科目14科目14科目14科目14科目14科目14科目14', EVTAS14 char(6) NOT NULL COMMENT '内顺序号14内部账顺序号14内部账顺序号14内部账顺序号14', EVTIT15 char(5) NOT NULL COMMENT '科科目15科目15科目15科目15科目15科目15科目15', EVTAS15 char(6) NOT NULL COMMENT '内5内部账顺序号15内部账顺序号15内部账顺序号15', EVTIT16 char(5) NOT NULL COMMENT '科16科目16科目16科目16科目16科目16科目16科目16', EVTAS16 char(6) NOT NULL COMMENT '内账顺序号16内部账顺序号16', EVTIT17 char(5) NOT NULL COMMENT '科17科目17科目17科目17科目17科目17', EVTAS17 char(6) NOT NULL COMMENT '内7内部账顺序号17内部账顺序号17内部账顺序号17', EVTIT18 char(5) NOT NULL COMMENT '科目18科目18科目18科目18科目18科目18科目18科目18科目18', EVTBR01 char(6) NOT NULL COMMENT '机机构01机构01机构01机构01', EVTCYNO char(3) NOT NULL COMMENT '货货币数字代码/币种货币数字代码/币种', EVTCYFG char(1) NOT NULL COMMENT '钞汇标识钞汇标识钞汇标识', EVTAM01 decimal(19,2) NOT NULL COMMENT '01金额01金额01金额01金额01金额01金额01', EVTAM02 decimal(19,2) NOT NULL COMMENT '金额02金额2金额02金额02金额02金额02金额02金额02金额02金额02金额02', EVTAM03 decimal(19,2) NOT NULL COMMENT '金额03金额额03金额03金额03金额03金额03金额03', EVTAM04 decimal(19,2) NOT NULL COMMENT '金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04金额04', EVTAM09 decimal(19,2) NOT NULL COMMENT '金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09金额09', EVTAM10 decimal(19,2) NOT NULL COMMENT '金额10金额金额10', EVTENRF char(1) NOT NULL COMMENT '事件非冲账标识事识事件非冲账标识事件非冲账标识事件非冲账标识事件非冲账标识事件非冲账标识', EVTPATI char(6) NOT NULL COMMENT '摘要代码摘要代码要代码摘要代码摘要代码摘要代码摘要代码摘要代码摘要代码摘要代码摘要代码摘要代码摘 要代码摘要代码摘要代码', EVTSBST char(102) NOT NULL COMMENT '摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要摘要', EVTCTFG char(1) NOT NULL COMMENT '现abdeddeddddedd转标识现转标识现转标识现转标识现转标识现转标识现转标识现转标识', EVTCICD char(4) NOT NULL COMMENT '现项目代码现金项目代码现金项目代码现金项目代码现金项目代码现金项目代码现金项目代码现金项目代码现金项目代码现金项目代码', EVTAGBF char(1) NOT NULL COMMENT '代识代理人业务信息标识代理人业务信息标识代理人业务信息标识代理人业务信息标识代理人业务信息标识代理人业务信息标识代理人业务信息标识', EVTBSCD char(5) NOT NULL COMMENT '行业代码行业代码行业代码行业代码行业代码行业代码行业代码行业代码行业代码行业代码行业代码行业代码行业代码', EVTELNO char(15) NOT NULL COMMENT '挂编号挂销账编号挂销账编号挂销账编号挂销账编号挂销账编号挂销账编号挂销账编号挂销账编号挂销账编号挂销账编号', EVTSUSQ int(6) NOT NULL COMMENT '挂号挂账序号挂账序号挂账序号挂账序号挂账序号挂账序号挂账序号挂账序号挂账序号挂账序号挂账序号', EVTELSQ int(6) NOT NULL COMMENT '销账序号销账序号', EVTCFCD char(5) NOT NULL COMMENT '凭证代码凭证代码凭证代码凭证', EVTHDNO char(12) NOT NULL COMMENT '冠字号冠字号冠字号冠字号冠字号冠字冠字号冠字号冠字号冠字号冠字号', EVTCFNO decimal(20,0) NOT NULL COMMENT '凭证号码凭码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭证号码凭>证号码', EVTCPNN char(20) NOT NULL COMMENT '名组件名组件名组件名组件名', EVTDEFL char(30) NOT NULL COMMENT '项事件明细保留项事件明细保留项事件明细保留项事件明细保留项事件明细保留项事件明细保留项', EVTMF01 char(16) NOT NULL COMMENT '1段值1段值1段值1段值1段值1段值1段值1段值1段值1段值1段值1段值1段值1', EVTTSTM timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '时间戳', PRIMARY KEY (EVTBKNO,EVTACDT,EVTJRNO,EVTEINO) , GDB_BID INT NOT NULL DEFAULT -1, INDEX(`GDB_BID`), GTID BIGINT UNSIGNED NOT NULL DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;");
SET @sql_text=sql_text;
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET i=i+1;
END WHILE;
END /
DELIMITER ;
call proc1();
[Then, execute drop command]
drop database mytest;
[Then, I execute Ctrl+C ]
mysql> drop database mytest;
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
I found that the query is still running, even I have executed Ctrl+C , and it was interrupted after about 3 minutes:
mysql> show processlist;
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
| 8 | event_scheduler | localhost | NULL | Daemon | 103340 | Waiting on empty queue | NULL |
| 55 | root | localhost | NULL | Query | 0 | init | show processlist |
| 66 | root | localhost | NULL | Query | 8 | checking permissions | drop database mytest |
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
3 rows in set (0.00 sec)
mysql> show processlist;
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
| 8 | event_scheduler | localhost | NULL | Daemon | 103348 | Waiting on empty queue | NULL |
| 55 | root | localhost | NULL | Query | 0 | init | show processlist |
| 66 | root | localhost | NULL | Query | 16 | checking permissions | drop database mytest |
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
3 rows in set (0.00 sec)
.....
mysql> show processlist;
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
| 8 | event_scheduler | localhost | NULL | Daemon | 103499 | Waiting on empty queue | NULL |
| 55 | root | localhost | NULL | Query | 0 | init | show processlist |
| 66 | root | localhost | NULL | Query | 167 | checking permissions | drop database mytest |
+----+-----------------+-----------+------+---------+--------+------------------------+----------------------+
3 rows in set (0.00 sec)
mysql> show processlist;
+----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| 8 | event_scheduler | localhost | NULL | Daemon | 103504 | Waiting on empty queue | NULL |
| 55 | root | localhost | NULL | Query | 0 | init | show processlist |
| 66 | root | localhost | NULL | Sleep | 172 | | NULL |
+----+-----------------+-----------+------+---------+--------+------------------------+------------------+
3 rows in set (0.00 sec)
mysql> drop database mytest;
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
^C^C -- query aborted
ERROR 1317 (70100): Query execution was interrupted
I think it's a pretty long time, and we may didn't expected that the `checking permissions` stage may takes so long time when there is many tables in a database. And if there are more tables in a database, this stage will takes too too long time (Now it takes 3 minutes for 30000 tables in a database), it will be a bad deal.