15.7.3.3 Выражение CHECKSUM TABLE
CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]
CHECKSUM TABLE сообщает о контрольной сумме содержимого таблицы. Вы можете использовать это выражение для проверки того, что содержимое таблицы одинаково до и после резервного копирования, отката или другой операции, призванной вернуть данные в известное состояние.
Для этого выражения требуется привилегия SELECT для таблицы.
Это выражение не поддерживается для представлений. Если вы выполняете CHECKSUM TABLE над представлением, значение Checksum всегда является NULL, и возвращается предупреждение.
Для несуществующей таблицы, CHECKSUM
TABLE возвращает NULL и генерирует предупреждение.
Во время операции проверки целостности таблица блокируется считывающим замком на время InnoDB и MyISAM.
Соображения по производительности
По умолчанию вся таблица считывается строка за строкой, и вычисляется контрольная сумма. Для больших таблиц это может занять много времени, поэтому такую операцию следует выполнять периодически. Такой вычисление по строкам происходит при использовании EXTENDED, с InnoDB и всеми другими хранилищами, кроме MyISAM, и для таблиц MyISAM, не созданных с использованием CHECKSUM=1.
Для таблиц MyISAM, созданных с использованием CHECKSUM=1, CHECKSUM TABLE или CHECKSUM TABLE
... QUICK возвращает контрольную сумму таблицы «в реальном времени», которую можно получить очень быстро. Если таблица не соответствует всем этим условиям, метод QUICK возвращает NULL. Метод QUICK не поддерживается для таблиц InnoDB. См. Раздел 15.1.20, «Выражение CREATE TABLE» для синтаксиса CHECKSUM.
Значение контрольной суммы зависит от формата строк таблицы. Если формат строк изменяется, то изменяется и контрольная сумма. Например, формат хранения временных типов, таких как TIME, DATETIME и TIMESTAMP, изменился в MySQL 5.6 до MySQL 5.6.5, поэтому если таблица из 5.5 версии обновляется до MySQL 5.6, значение контрольной суммы может измениться.
Если контрольные суммы двух таблиц различны, то, скорее всего, таблицы отличаются чем-то. Однако, поскольку функция хэширования, используемая в CHECKSUM TABLE, не гарантирует отсутствие коллизий, существует небольшая вероятность того, что две не идентичные таблицы могут иметь одинаковую контрольную сумму.
© 2025 Oracle
Licensed under the GPLv2 License.