php 实现 mysql数据表优化与修复
<?php $link = mysql_connect("localhost", "root", "") or die("errro:" . mysql_error()); mysql_query("set names utf8"); mysql_select_db("数据库名", $link); /* // 展示数据表相关信息 $sql = "show table status"; $res = mysql_query($sql,$link); while($row = mysql_fetch_assoc($res)) { $row = Array ( [Name] => 表名称 [Engine] => 表的存储引擎 [Version] => 版本 [Row_format] => 行格式。对于MyISAM引擎,这可能是Dynamic,Fixed或Compressed。动态行的行长度可变,例如Varchar或Blob类型字段。固定行是指行长度不变,例如Char和Integer类型字段。 [Rows] => 表中的行数。对于非事务性表,这个值是精确的,对于事务性引擎,这个值通常是估算的 [Avg_row_length] => 平均每行包括的字节数 [Data_length] => 整个表的数据量(单位:字节) [Max_data_length] => 表可以容纳的最大数据量 [Index_length] => 索引占用磁盘的空间大小 [Data_free] => 对于MyISAM引擎,标识已分配,但现在未使用的空间,并且包含了已被删除行的空间。 [Auto_increment] => 下一个Auto_increment的值 [Create_time] => 表的创建时间 [Update_time] => 表的最近更新时间 [Check_time] => 使用 check table 或myisamchk工具检查表的最近时间 [Collation] => 表的默认字符集和字符排序规则 [Checksum] => 如果启用,则对整个表的内容计算时的校验和 [Create_options] => 指表创建时的其他所有选项 [Comment] => 包含了其他额外信息,对于MyISAM引擎,包含了注释徐标新,如果表使用的是innodb引擎 ,将现实表的剩余空间。如果是一个视图,注释里面包含了VIEW字样。 ) } */ $sql = "OPTIMIZE TABLE 数据表名"; $res = mysql_query($sql,$link); while($row = mysql_fetch_assoc($res)) { /** $row = Array ( [Table] => 数据库.数据表名 [Op] => optimize [Msg_type] => status [Msg_text] => Table is already up to date ) */ if ($row['Msg_type'] =='error' && strpos($row['Msg_text'], 'repair') !== false) { mysql_query('REPAIR TABLE 数据表名', $link); } }