php 实现 mysql数据表优化与修复
时间:2021-07-01 10:21:17
帮助过:29人阅读
$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);
}
}
php 实现 mysql数据表优化与修复
标签: