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.21, «Заявление 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.