2016-07-06 10 views
-1

一般的な質問:スケジュールされたMySQLの修復の欠点?

定期的にmysql修復コマンドを実行するのは安全ですか?

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) 

などはbashスクリプト修理がmysqlの時間ごとに作成します。 は、これは実行するのcrontabスケジューラに追加された私のbashスクリプトです。

データベース自体に悪影響を及ぼしますか?

おかげで、

+0

テーブルロックを使用している場合は、http://dev.mysql.com/doc/refman/5.7/en/mysqlcheck.html(読み取りロック)...テーブルの解析も実行します。あなたのcronの事のためのオプションではありません – Drew

+1

そして... * "良い悲しみ(!)、なぜあなたはそのようなことをする必要性を感じる(または、悪いが、(! !?!?! "* –

答えて

2

クライアント1:(模倣mysqlcheckの)

lock tables category read; 
select count(*) from category; 
    ... 
    ... do stuff 
    ... 
unlock tables; 

クライアント2: だから、

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) 

(クライアント1は、前unlock tablesにリードロックを有しています)それはあなたが経験するかもしれない経験です。

2

私の前回のスレッドコメントで表現された意見を明確にするために、「あなたのデータベースを毎回修復する必要があるのはなぜか分かりません。 ) '(または、まったく...)。 " 「自分自身をそんな不愉快な状況に置いてください」と言われた場合は、ダメージがあります。よく、を見つけてください。

“の質問については、データベース自体に悪影響を及ぼしますか? ”私の答えは、 “となるはずです。‘はい。 ’ ” (しかし、単に私の体験の意見である(!)!)

することにより、大規模は、データベースのデータ構造があることが意図されている自己保持時間の非常に長い期間にわたりを。 “頻繁分析および/または最適化”がもはや“頻繁デフラグメンテーション”が(...モダン)ファイルシステムに必要であるべきであるよりも、データベースに、必要ではないはずです。アルゴリズムはが一貫に“セルフチューニング”するために、ケースワイズ基づいてシステムを内部統計カウンタを調整し、選択に設計されており過酷な介入なし“十分”パフォーマンスを生み出します。私の意見で

普及変更は、このような大量の削除や大量インサートとして、データベースの内容に加えられた後、このようmysqlcheckなどの操作のみを実行する必要があります。そして、あなたの探求の目的は、決して "修理する必要があります。

関連する問題