CHECKSUM TABLE
Syntax
CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]
Description
CHECKSUM TABLE
reports a table checksum. This is very
useful if you want to know if two tables are the same (for example on a master
and slave).
With QUICK
, the live table checksum is reported if it is
available, or NULL
otherwise. This is very fast. A live
checksum is enabled by specifying the CHECKSUM=1
table
option when you create the table; currently, this is supported
only for Aria and MyISAM tables.
With EXTENDED
, the entire table is read row by row and the
checksum is calculated. This can be very slow for large tables.
If neither QUICK
nor EXTENDED
is
specified, MariaDB returns a live checksum if the table storage engine supports
it and scans the table otherwise.
CHECKSUM TABLE
requires the SELECT privilege for the table.
For a nonexistent table, CHECKSUM TABLE
returns
NULL
and generates a warning.
The table row format affects the checksum value. If the row format changes, the checksum will change. This means that when a table created with a MariaDB/MySQL version is upgraded to another version, the checksum value will probably change.
Two identical tables should always match to the same checksum value; however, also for non-identical tables there is a very slight chance that they will return the same value as the hashing algorithm is not completely collision-free.
Identical Tables
Identical tables mean that the CREATE statement is identical and that the following variable, which affects the storage formats, was the same when the tables were created:
Differences Between MariaDB and MySQL
CHECKSUM TABLE
may give a different result as MariaDB doesn't
ignore NULL
s in the columns as MySQL 5.1 does (Later MySQL
versions should calculate checksums the same way as MariaDB). You can get the
'old style' checksum in MariaDB by starting mysqld with the
--old
option. Note however that that the MyISAM and Aria
storage engines in MariaDB are using the new checksum internally, so if you are
using --old
, the CHECKSUM
command will be
slower as it needs to calculate the checksum row by row. Starting from MariaDB Server 10.9, --old
is deprecated and will be removed in a future release. Set --old-mode
or OLD_MODE
to COMPAT_5_1_CHECKSUM
to get 'old style' checksum.