Spec-Zone .ru
спецификации, руководства, описания, API

21.7. Обзоры Оператора Схемы производительности

С MySQL 5.6.5 Схема Производительности поддерживает информацию об обзоре оператора. Переваривание преобразовывает SQL-оператор в нормализованную форму и вычисляет значение хэш-функции для результата. Нормализация разрешает операторы, которые подобны, чтобы быть сгруппированными и суммироваться, чтобы представить информацию о типах операторов, которые выполняет сервер и как часто они происходят. Этот раздел описывает, как нормализация оператора происходит и как это может быть полезно.

Оператор, переваривающий, включает эти компоненты Схемы Производительности:

Нормализация оператора преобразовывает текст оператора к более стандартизированному строковому представлению, которое сохраняет структуру общего утверждения, удаляя информацию, не важную для структуры. Сохраняются объектные идентификаторы, такие как имена базы данных и имена таблиц. Значения и комментарии удаляются, и пробел корректируется. Схема Производительности не сохраняет информацию, такую как имена, пароли, даты, и т.д.

Рассмотрите эти операторы:

SELECT * FROM orders WHERE customer_id=10 AND quantity>20SELECT * FROM orders WHERE customer_id = 20 AND quantity > 100

Чтобы нормализовать эти операторы, Схема Производительности заменяет значения данных ? и корректирует пробел. Оба оператора приводят к той же самой нормализованной форме и таким образом считаются "тем же самым":

SELECT * FROM orders WHERE customer_id = ? AND quantity > ?

Нормализованный оператор содержит меньше информации, но является все еще представительным для исходного оператора. У других подобных операторов, у которых есть различные сравнительные значения, есть та же самая нормализованная форма.

Теперь рассмотрите эти операторы:

SELECT * FROM customers WHERE customer_id = 1000SELECT * FROM orders WHERE customer_id = 1000

В этом случае операторы не являются "тем же самым." Объектные идентификаторы отличаются, таким образом, операторы приводят к различным нормализованным формам:

SELECT * FROM customers WHERE customer_id = ?SELECT * FROM orders WHERE customer_id = ?

У нормализованных операторов есть фиксированная длина. Максимальная длина a DIGEST_TEXT значение составляет 1024 байта. Нет никакой опции, чтобы изменить этот максимум. Если нормализация производит оператор, который превышает эту длину, текстовые концы с "...". Длинные операторы, которые отличаются только по части, которая происходит после "...", как полагают, являются тем же самым. Рассмотрите эти операторы:

SELECT * FROM mytable WHERE cola = 10 AND colb = 20SELECT * FROM mytable WHERE cola = 10 AND colc = 20

Если сокращение, оказалось, было правильным после AND, у обоих операторов была бы эта нормализованная форма:

SELECT * FROM mytable WHERE cola = ? AND ...

В этом случае различие во втором имени столбца теряется, и оба оператора считают тем же самым.

Для каждого нормализованного оператора Схема Производительности вычисляет значение обзора хеша и хранилища, которые оценивают и оператор в DIGEST и DIGEST_TEXT столбцы таблиц события оператора (events_statements_current, events_statements_history, и events_statements_history_long). Кроме того, информация для операторов с тем же самым SCHEMA_NAME и DIGEST значения агрегированы в events_statements_summary_by_digest сводная таблица. Схема Производительности использует значения хэш-функции MD5, потому что они быстры, чтобы вычислить и иметь благоприятное статистическое распределение, которое минимизирует коллизии.

events_statements_summary_by_digest у сводной таблицы есть фиксированный размер, так, когда это становится полным, операторы, которые имеют SCHEMA_NAME и DIGEST значения, не соответствующие существующие значения в таблице, группируются в специальной строке с SCHEMA_NAME и DIGEST набор к NULL. Это разрешает всем операторам считаться. Однако, если специальная строка учитывает существенный процент выполняемых операторов, это могло бы быть требуемым, чтобы увеличить размер сводной таблицы. Чтобы сделать это, установите performance_schema_digests_size системная переменная к большему значению при запуске сервера. Если нет performance_schema_digests_size значение дается, сервер оценивает, что значение использует при запуске. (Прежде, чем MySQL 5.6.9, будет нет SCHEMA_NAME столбец и специальная строка имеют DIGEST набор к NULL.)

Сводная таблица обзора оператора обеспечивает профиль операторов, выполняемых сервером. Это показывает, какие виды операторов приложение выполняет и как часто. Разработчик приложений может использовать эту информацию вместе с другой информацией в таблице, чтобы оценить показатели производительности приложения. Например, столбцы таблицы, которые показывают времена ожидания, блокируют времена, или индексируют использование, может выделить типы запросов, которые неэффективны. Это дает понимание разработчика, каким частям приложения необходимо уделять внимание.