大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
MYSQL数据库多余的数据表清理方法:
10年积累的成都网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站后付款的网站建设流程,更有通州免费网站建设让你可以放心的选择与我们合作。
drop table命令用于删除数据表。
drop table命令格式:drop table 表名;
例如,删除表名为 MyClass 的表:
mysql drop table MyClass;
DROP TABLE用于删除一个或多个表。必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心。
系统内有一只游戏日志表,每日以百万条数据增长,过段时间需要按照日期清理数据。同事使用delete循环删除过一次,时间久不说,表中的数据是删除了,但是查看服务器发现,*.idb文件大小居高不下,使用optimize table 表名 , 优化表以后,内存大小恢复正常。前前后后花费将近4个小时的时间。效率比较低,偶然想起TRUNCATE TABLE,决定使用以下方案,结果10分钟内,清除3千多万条废弃数据。记录以下,已备下次使用。
按以上步骤,可以解决锁表问题。
一、使用phpmyadmin工具批量删除mysql数据库表
使用phpmyadmin数据库管理工具进行删除,这是一个传统的方法,在任何php虚拟主机中,你都可以操作。下面是操作过程介绍:
1、登录phpmyadmin。选择你的mysql数据库名进入——点击结构——选择您要删除的数据表——“选中项”中选择删除,执行删除表操作。如下图:
PHPMYADMIN使用技巧:如何快速批量删除Mysql数据库中的数据表 image00114 150x150
二、使用php脚本完成批量删除
无忧主机()小编从网上找了一段php代码,也可以帮我们快速实现删除。如果你对phpmyadmin工具“敏感”,可以使用下面的方式来实现快速删除mysql数据库表。 在下面的代码复制到记事本后,配置过程中你要注意几个问题:
1、 正确配置你mysql数据库信息。这个你可以直接咨询你的空间商就可以获得啦。
2、 正确设置要删除的数据库表前缀,这个非常重要,填写错误,将操作错误。请你务必确认你的数据库表前缀哦,数据库表前缀你可以在phpmyadmin中查询到。一般都是xx_开头的。 设置好后,将这段代码另存为.php文件(如51php.php)然后上传到您空间的网站根目录(public_html)。上传完毕,直接用域名/51php.php,就可以删除了。 代码如下:
?php
mysql_connect('localhost','数据库用户名','数据库密码');
mysql_select_db('数据库名称');
$rs=mysql_query('show tables');
while($arr=mysql_fetch_array($rs))
{
$TF=strpos($arr[0],'51php_');
if($TF===0){
$FT=mysql_query("drop table $arr[0]");
if($FT){
echo "$arr[0] 删除成功!br";
}
}
}
?
以上两种方法都可批量删除数据表,特别提醒一下,数据是无价的,操作数据表的时候一定要先做好备份。免得误删除数据是无法恢复的。如果您不会备份,麻烦您参考:
360度全方位讲解无忧网站数据库备份
Mysql数据库管理利器:phpmyadmin详细使用教程
1、drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ;
2、truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM 。truncate table其实有点类似于drop table 然后creat,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等。所以速度上应该是接近drop table的速度;
3、delete from table_name删除表的全部数据,对于MyISAM 会立刻释放磁盘空间 (应该是做了特别处理,也比较合理),InnoDB 不会释放磁盘空间;
4、对于delete from table_name where xxx带条件的删除, 不管是innodb还是MyISAM都不会释放磁盘空间;
5、delete操作以后使用optimize table table_name 会立刻释放磁盘空间。不管是innodb还是myisam 。所以要想达到释放磁盘空间的目的,delete以后执行optimize table 操作。
6、delete from表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。
?php
$user = "root"; //数据库用户名
$password = "test123";//数据库密码
$db_name = "phpwind";//数据库名
$link = mysql_connect("ip:3306",$user,$password);
mysql_select_db("$db_name",$link);
echo "p正在清空数据库...";
$result=mysql_query("SHOW tables",$link);
while ($currow=mysql_fetch_array($result)) {
mysql_query("drop TABLE IF EXISTS $currow[0]");
echo $currow[0]."br";
}
echo "成功/p";
?