ホームページ  >  記事  >  データベース  >  Mysqlcheckを使ったチェックと修復方法、テーブルの最適化について詳しく解説

Mysqlcheckを使ったチェックと修復方法、テーブルの最適化について詳しく解説

黄舟
黄舟オリジナル
2017-03-20 14:00:522973ブラウズ


mysqlcheck は MySQL に付属するツールで、実際には、テーブルを保守し、チェック、分析、修復、最適化することです。 mysqlcheck ツールの簡単な使用法を紹介します。公式ドキュメントはこちらです保养 表,其实就是检查,分析,修复和优化了。下面来介绍 mysqlcheck 工具的简单使用,官方文档在这里

以下的例子都是基于 MySQL 5.6 版本运行状态下(mysqlcheck是个在线工具),   不同的存储引擎对于这个命令的支持程度不同(指的是 check, repair, analyze, optimize),下面内容偏于操作,主要基于 innodb 引擎。

提示:OPTIMIZE 在大表时候可能会消耗很多时间,不清楚原理情况下请谨慎使用!!!  innodb 一般不用 OPTIMIZE,请参见 Using MySQL OPTIMIZE tables? For InnoDB? Stop

检查特定的表

注意在shell中执行,不是在mysql的交互环境下

如果应用中提示某个表坏了,使用下面的命令来检查。

$ mysqlcheck -c newmandela order -uroot -pEnter password:
newmandela.order                                   
OK

newmandela 是库名, order是表名,还需要输入用户名和密码

检查一个库中的所有表

$ mysqlcheck -c newmandela -uroot -p
Enter password:
newmandela.account                                 OK
newmandela.alarm                                   OK
newmandela.alarm_settings                          OK
newmandela.auth_group                              OK
newmandela.auth_group_permissions                  OK
newmandela.auth_permission                         OK...

检查所有库中的所有表

全部的库和表都检查一遍了。

$mysqlcheck -c --all-databases -uroot -p
Enter password:
apmonitor.acinfo                                   OK
apmonitor.apdailysts                               OK
apmonitor.apinfo                                   OK
apmonitor.apmonthsts                               OK
apmonitor.apscanlog                                OK
apmonitor.auth_group                               OK...

如果只想检查某几个库呢? 可以使用 –databases 参数

$ mysqlcheck -c --databases newmandela radius -uroot -p
Enter password:
newmandela.account                                 OK
newmandela.alarm                                   OK
newmandela.alarm_settings                          OK
newmandela.auth_group                              OK...

使用 mysqlcheck 分析表

$ mysqlcheck -a radius payment_transactionrecord  -uroot -pEnter password:
radius.payment_transactionrecord                   Table is already up to date

上面的命令 用来分析 radius 库的 payment_transactionrecord表, -a 表示 analyze

使用 mysqlcheck 优化表

# mysqlcheck -o radius payment_transactionrecord  -uroot -pEnter password:
radius.payment_transactionrecord                   OK

-o 代表 optimize ,这里是优化 radius 库的 payment_transactionrecord

使用 mysqlcheck 修复表

# mysqlcheck -r radius payment_transactionrecord  -uroot -pEnter password:
radius.payment_transactionrecord                   OK

-r 代表 repair ,这里是 修复 radius 库的 payment_transactionrecord

检查,优化,修复表组合命令

# mysqlcheck -uroot -p --auto-repair -c -o newmandelaError:  mysqlcheck doesn't support multiple contradicting commands.

上面的命令报错了,去掉 -c

# mysqlcheck -uroot -p --auto-repair -o newmandelaEnter password:
newmandela.account
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
newmandela.alarm
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
newmandela.alarm_settings
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK

每张表都出现了 Table does not support optimize, doing recreate + analyze instead, 代表什么意思呢? 它的意思不是说 innodb 引擎不支持 优化,

mysqlcheck 常用选项

  • A, –all-databases 表示所有库

  • -a, –analyze 分析表

  • -o, –optimize  优化表

  • -r, –repair 修复表错误

  • -c, –check 检查表是否出错

  • –auto-repair  自动修复损坏的表

  • -B, –databases 选择多个库

  • -1, –all-in-1 Use one query per database with tables listed in a comma separated way

  • -C, –check-only-changed  检查表最后一次检查之后的变动

  • -g, –check-upgrade Check for version dependent changes in the tables

  • -F, –fast Check tables that are not closed properly

  • –fix-db-names Fix DB names

  • –fix-table-names Fix table names

  • -f, –force Continue even when there is an error

  • -e, –extended Perform extended check on a table. This will take a long time to execute.

  • -m, –medium-check Faster than extended check option, but does most checks

  • -q, –quick

    以下の例は、MySQL 5.6 バージョンの実行状態に基づいています (mysqlcheck はオンライン ツールです)。このコマンド (チェック、修復、分析、最適化を指します) については、主に innodb エンジンに基づいた次の内容がより操作的です。
ヒント: 大きなテーブルを使用する場合、OPTIMIZE は時間がかかることがあります。原則を知らない場合は注意して使用してください。通常、OPTIMIZE は innodb では使用されません。「InnoDB の場合は MySQL OPTIMIZE テーブルを使用する」を参照してください。 ? 停止🎜

特定のテーブルを確認してください

🎜 mysql の対話環境ではなく、シェルで実行するように注意してください🎜🎜 アプリケーションがテーブルが壊れていることを示すプロンプトを表示した場合は、次のコマンドを使用して確認します。 🎜rrreee🎜newmandela はライブラリ名、order はテーブル名で、ユーザー名とパスワードも入力する必要があります🎜

1 つのライブラリ内のすべてのテーブルをチェックする

rrreee

すべてのライブラリ内のすべてのテーブルをチェックする

🎜 すべてのライブラリとテーブルがチェックされています。 🎜rrreee🎜特定のライブラリのみを確認したい場合はどうすればよいですか? –databases パラメータを使用できます🎜rrreee

mysqlcheck を使用してテーブルを分析します

rrreee🎜上記のコマンドは、payment_transactionrecord、<code>-a は分析を意味します🎜

mysqlcheck を使用してテーブルを最適化します

rrreee🎜-o は最適化を意味します。 RADIUS ライブラリ /code> テーブルを最適化する payment_transactionrecordmysqlcheck を使用してテーブルを修復しますrrreee🎜<code>-r は修復を表します。payment_transactionrecord は次のとおりです RADIUS ライブラリを修復するテーブル 🎜

check、optimize、修復テーブル組み合わせコマンド

rrreee🎜上記のコマンドはエラーを報告しました。-c を削除してください 🎜rrreee🎜すべてのテーブルテーブルは最適化をサポートしていません。代わりに再作成と分析を実行しますと表示されます。これは何を意味しますか? これは、innodb エンジンが最適化、🎜

mysqlcheck 共通オプション

  • 🎜A、–all-databases すべてのライブラリを表します🎜🎜<li>🎜<code>-a, –analyze 分析テーブル🎜🎜
  • 🎜-o, –optimize 最適化テーブル🎜🎜
  • 🎜 -r, –repair テーブル エラーを修復します🎜🎜
  • 🎜-c, –check テーブル エラーが存在するかどうかを確認します🎜🎜
  • 🎜 –auto-repair 破損したテーブルを自動的に修復します🎜🎜
  • 🎜-B, –databases 複数のライブラリを選択します🎜🎜
  • 🎜-1, –all-in- 1 カンマ区切りでリストされたテーブルを含むデータベースごとに 1 つのクエリを使用します🎜🎜
  • 🎜-C, –check-only-changed テーブルの最後のチェック以降の変更を確認します🎜🎜
  • 🎜-g, –check-upgrade テーブル内のバージョン依存の変更を確認します🎜🎜
  • 🎜-F, –fast テーブル内の変更を確認します正しく閉じられていません🎜 🎜
  • 🎜–fix-db-names DB 名を修正します🎜🎜
  • 🎜–fix-table-names テーブル名を修正します🎜🎜🎜-f, –force
  • エラーがあっても続行🎜🎜
  • 🎜-e, –extended テーブルの拡張チェックを実行します。これには時間がかかります。実行に長い時間がかかります。🎜🎜
  • 🎜-m, –medium-check 拡張チェックオプションより高速ですが、ほとんどのチェックを実行します🎜🎜
  • 🎜-q, –quick 中程度のチェック オプションよりも高速です🎜🎜🎜

以上がMysqlcheckを使ったチェックと修復方法、テーブルの最適化について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。