Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.7.2.3 CHECKSUM TABLE 構文

CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]

CHECKSUM TABLE は、テーブルの内容に対するチェックサムをレポートします。チェックサム操作中、そのテーブルは InnoDB および MyISAM に対する読み取りロックでロックされます。このステートメントを使用すると、その内容が、バックアップ、ロールバック、またはデータを元の既知の状態に戻すことを目的としたその他の操作の前後で同じであることを検証できます。このステートメントには、このテーブルに対する SELECT 権限が必要です。

パフォーマンスに関する考慮事項

デフォルトでは、テーブル全体が 1 行ごとに読み取られ、チェックサムが計算されます。大きなテーブルでは長い時間がかかる可能性があるため、この操作は、状況に応じてのみ実行されます。この 1 行ごとの計算は、InnoDBMyISAM 以外のその他のすべてのストレージエンジン、および CHECKSUM=1 句で作成されていない MyISAM テーブルの場合に EXTENDED 句で得られるものと同じです。

CHECKSUM=1 句で作成された MyISAM テーブルの場合、CHECKSUM TABLE または CHECKSUM TABLE ... QUICK は、非常に速く返すことができるライブテーブルチェックサムを返します。テーブルがこれらのすべての条件を満たさない場合、QUICK による方法は NULL を返します。CHECKSUM 句の構文については、セクション13.1.17「CREATE TABLE 構文」を参照してください。

存在しないテーブルに対しては、CHECKSUM TABLENULL を返し、警告を生成します。

MySQL 5.6.4 より前は、EXTENDED オプションが使用されていないかぎり、CHECKSUM TABLE はパーティション化されたテーブルに対して 0 を返しました。(Bug #11933226、Bug #60681)

チェックサム値は、テーブル行フォーマットによって異なります。行フォーマットが変更された場合は、チェックサムも変更されます。たとえば、VARCHAR のストレージフォーマットは MySQL 4.1 と 5.0 の間で変更されたため、4.1 テーブルが MySQL 5.0 にアップグレードされた場合、チェックサム値は変更される可能性があります。

重要

2 つのテーブルのチェックサムが異なる場合は、それらのテーブルが何らかの点で異なることがほぼ確実です。ただし、CHECKSUM TABLE によって使用されるハッシュ関数は衝突がないことは保証されないため、同一でない 2 つのテーブルが同じチェックサムを生成する可能性が若干あります。


User Comments
  Posted by Mark Vancura on August 16, 2013
This provides a key way to diff two tables, although I am still looking for how to capture the result and act on it in a compiled procedure.
Sign Up Login You must be logged in to post a comment.