Skip to content

Latest commit

 

History

History
38 lines (25 loc) · 916 Bytes

删除大表的几种方式.md

File metadata and controls

38 lines (25 loc) · 916 Bytes

一. 找到大容量表

我们都知道,一个数据库里面有许多表,那就需要找出哪个表数据量最大,采用以下命令:

select TABLE_NAME,
case when DATA_LENGTH<1*1024*1024 then concat(ROUND(DATA_LENGTH/1024,2),'KB')
WHEN DATA_LENGTH<128*1024*1024 then concat(ROUND(DATA_LENGTH/1024/1024,2),'MB')
ELSE concat(ROUND(DATA_LENGTH/1024/1024/1024,2),'TB')
END as dataSize
from information_schema.`TABLES`
where table_schema='employee' -- 数据库名称
order by DATA_LENGTH desc

二. 快速清空大表

  1. delete

特别慢

  1. drop

由于存在事务,真正执行起来也很慢。

  1. truncate

没有事务,执行很快

  1. rename

    4.1 创建临时表table_new

    4.2 将要清空的表table快速 renametable_old

    4.3 将table_new 快速renametable

扩展资料: