假设我有个库叫historydata,里面有张表叫stockdayinfo,假设我有200万条数据
1. 打开cmd,一定是cmd,不要powershell,win10小伙伴注意!!
2. 切换到你数据库数据存储盘符,然后cd 跳转到你数据表所在的Data目录,你要是没改过,就在C:\ProgramData\MySQL\MySQL Server 8.0\Data 下面,我改过了,所以是D:\data\Data\historydata
3. 输入命令建立硬链接
fsutil hardlink create 新文件名 现有文件名
我的例子就是:
fsutil hardlink create stockdayinfo.id.hdlk stockdayinfo.ibd
注意:上面新文件名是xxx.id.hdlk
4. 回到mysql 删除表
drop table stockdayinfo
注意:网上说的几百万条数据秒删都是放屁!要么数据库建立在了固态硬盘上。反正我机械硬盘,200万左右的数据,这种方式删除时间要等2分钟
5. 手动删除前面的stockdayinfo.id.hdlk文件
其他知识点:
1. 如何快速查询一个大表有多少数据?
还是以我上面的stockdayinfo表为例,输入以下命令
show table status like 'stockdayinfo' \G
注意:最后的那个\G一定要加上!!一定要加上!!!!
网上的select count(*) from XXX对200万+的大表数据来说就是一坨翔!!!查到天荒地老都查不到!!!
2. 如何在cmd上使用mysql
打开cmd,输入以下命令切换到mysql所在目录
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
然后输入
mysql -hIP地址 -u用户名 -p密码
以我自己为例
mysql -hlocalhost -uroot -pxxxx
就进入了
其他命令可以参考:https://www.cnblogs.com/qmfsun/p/4837934.html
最后就是吐槽环节!!
憋屈啊!!!!!网上搜mysql硬链接快速删大表的,写得都是linux的!用windows的我真是欲哭无泪,还看到有人说没见过mysql放windows上的真是气不打一出来!不要问我为什么mysql 放在了windows上!老子就这项目就得在windows上进行!!!这算是IT界的系统鄙视链吗???
反正看了好多linux的文章,原理就是硬链接,然后查了一下windows怎么创建硬链接的…………我想说!!很多博主写博文的时候你们代码到底自己试过没有啊?????windows中fsutil是硬链接,mklink是软连接,是不是就是不知道啊???高了半天发现被误导的我真是暴风哭泣!!!!
最后感谢以下两位博主的贡献,前人栽树,后人乘凉~~
1. windows硬链接创建
http://bg.artuion.com/windows/125.html
2. 利用硬链接原理秒删MySQL大文件
https://blog.csdn.net/dba_waterbin/article/details/9472731
言简意赅!!清晰明了!!