计划的mysql修复缺陷?

计划的mysql修复缺陷?,mysql,linux,Mysql,Linux,一般问题: 定期运行mysql修复命令安全吗? 这是我的bash脚本,添加到crontab调度程序以执行: while read line; do # skip database tables that are okay echo "$line"|grep -q OK$ && continue echo "WARNING: $line" done < <(mysqlcheck -u cron -p1234 -A --auto-repair) 读行时;

一般问题:

定期运行mysql修复命令安全吗? 这是我的bash脚本,添加到crontab调度程序以执行:

while read line; do

  # skip database tables that are okay
  echo "$line"|grep -q OK$ && continue

  echo "WARNING: $line"
done < <(mysqlcheck -u cron -p1234 -A --auto-repair)
读行时
;做
#跳过正常的数据库表
echo“$line”| grep-q OK$&继续
回声“警告:$line”
完成客户端1:(模仿mysqlcheck)

客户2: (当客户端1具有读取锁定时,在
解锁表之前


这就是你可能拥有的经验。

为了澄清我之前的帖子评论所表达的观点:““我一点也不清楚为什么你觉得有必要每(!!)小时(!!)一次(!!)修复(!)你的数据库”(或者,根本…)。”如果你这样做了,“发现自己处于这样一种不愉快的境地,”那你最好弄清楚原因

至于“它对数据库本身有负面影响吗?”这个问题,我的答案是“肯定是的”。(但是(!)这只是我的经验观点!)

总的来说,数据库的数据结构需要在很长的一段时间内自我维护。在数据库上,“频繁分析和/或优化”的必要性不应超过在(现代…)文件系统上“频繁去碎片化”的必要性。这些算法旨在根据具体情况有选择地调整内部统计计数器,以便“自我调整”系统,在不进行严厉干预的情况下始终如一地产生“足够好”的性能


在我看来,像
mysqlcheck
这样的操作只应该在对数据库内容进行了广泛的更改之后执行,例如大规模删除或大规模插入。而且,你的任务目标永远不应该是“修复”。

如果你想拥有表锁,那么就去做:(读取锁)。。。也会触发分析表。在超级大桌子上,这不是你的cron的选择,而且。。。“天哪(!),你为什么觉得(或者更糟的是,发现(!)有必要做这样的事?!”
lock tables category read;
select count(*) from category;
  ...
  ... do stuff
  ... 
unlock tables;
mysql> insert category(category_name,parent_id) values ('z',1);
(... Client 1 finally performs the `unlock tables`)

Query OK, 1 row affected (12 min 20.93 sec)