13.7.2.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. См. Раздел 13.1.18, «Заявление 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.