ТАБЛИЦА АНАЛИЗА
Синтаксис
ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [,tbl_name ...]
[PERSISTENT FOR
{ ALL
| COLUMNS ([col_name [,col_name ...]]) INDEXES ([index_name [,index_name ...]])
}
]
Описание
ANALYZE TABLE анализирует и сохраняет распределение ключей для таблицы (статистики индексов). Данная команда работает с таблицами MyISAM, Aria и InnoDB. Во время анализа InnoDB позволит чтение/запись, а MyISAM/Aria — чтение/вставки. Для таблиц MyISAM данная команда эквивалентна использованию myisamchk --analyze.
Для получения дополнительной информации о том, как работает анализ в InnoDB, см. Ограничения InnoDB.
MariaDB использует сохранённое распределение ключей, чтобы определить порядок объединения таблиц при выполнении объединения по чему-либо, кроме константы. Кроме того, распределения ключей могут использоваться при определении индексов, которые нужно использовать для определённой таблицы в запросе.
Данная команда требует прав SELECT и INSERT для таблицы.
По умолчанию, команды ANALYZE TABLE записываются в бинарный журнал и будут реплицированы. Ключевое слово NO_WRITE_TO_BINLOG (LOCAL — псевдоним) гарантирует, что команда не будет записана в бинарный журнал.
Начиная с MariaDB 10.3.19, команды ANALYZE TABLE не регистрируются в бинарном журнале, если read_only установлено. См. также Реплики только для чтения.
ANALYZE TABLE также поддерживается для разнесённых таблиц. Вы можете использовать ALTER TABLE ... ANALYZE PARTITION для анализа одной или нескольких партиций.
Двигатель хранения Aria поддерживает отчёт о ходе выполнения для команды ANALYZE TABLE.
Статистические данные независимо от движка
ANALYZE TABLE поддерживает статистические данные, независимые от движка. См. Статистические данные таблицы, независимые от движка: сбор статистики с помощью команды ANALYZE TABLE для получения более подробной информации.
Полезные переменные
Для подсчёта дубликатов, ANALYZE TABLE использует буфер размером sort_buffer_size байт на столбец. Вы можете немного увеличить скорость ANALYZE TABLE путём увеличения этой переменной.
Примеры
-- update all engine-independent statistics for all columns and indexes ANALYZE TABLE tbl PERSISTENT FOR ALL; -- update specific columns and indexes: ANALYZE TABLE tbl PERSISTENT FOR COLUMNS (col1,col2,...) INDEXES (idx1,idx2,...); -- empty lists are allowed: ANALYZE TABLE tbl PERSISTENT FOR COLUMNS (col1,col2,...) INDEXES (); ANALYZE TABLE tbl PERSISTENT FOR COLUMNS () INDEXES (idx1,idx2,...); -- the following will only update mysql.table_stats fields: ANALYZE TABLE tbl PERSISTENT FOR COLUMNS () INDEXES (); -- when use_stat_tables is set to 'COMPLEMENTARY' or 'PREFERABLY', -- a simple ANALYZE TABLE collects engine-independent statistics for all columns and indexes. SET SESSION use_stat_tables='COMPLEMENTARY'; ANALYZE TABLE tbl;
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/analyze-table/