Страница /узел

Для перехода к данной форме следует нажать на кнопку узел_button на странице «Планы» во вкладке «по объектам базы (операции)».

Состав страницы:

  1. "type"

    Описание сновных операций (типов узлов), отображаемых в планах выполнения запросов СУБД PostgreSQL:

    1. Append

      Запускает множество субопераций и возвращает все возвращенные ими строки в виде общего результата. Используется в запросах, содержащих UNION или UNION ALL.

    2. Bitmap Index Scan

      В то время как Index Scan извлекает один указатель кортежа за раз из индекса и немедленно переходит к этому кортежу в таблице, Bitmap Index Scan извлекает все указатели кортежей из индекса за один раз, сортирует их, используя структуру данных «битовая карта (bitmap)» в оперативной памяти, а затем просматривает кортежи таблиц в порядке физического расположения кортежей.

    3. CTE Scan

      Схожа с Materialize. Операция запускает часть запроса и сохраняет ее вывод, чтобы он мог быть использован другой частью (или частями) запроса.

    4. Filter

      Применяет фильтр к набору строк.

    5. GroupAggregate

      Группирует предварительно отсортированный набор в соответствии с предложением GROUP BY. Эта операция не буферизует промежуточный результат.

    6. HashAggregate

      Использует временную хэш-таблицу для группировки записей. Операция HashAggregate не требует предварительно отсортированного набора данных, вместо этого она использует большие объемы памяти для материализации промежуточного результата. Вывод не упорядочен каким-либо значимым образом.

    7. HashSetOp

      Операция используется операциями INTERSECT и EXCEPT (с опциональным модификатором ALL). Она работает следующим образом: запускает субоперации Append для пары подзапросов, а затем, на основании результата и опционального модификатора ALL, решает, какие строки нужно вернуть.

    8. Hash Join

      Хеш-соединение загружает записи-кандидаты с одной стороны соединения в хеш-таблицу, которая затем проверяется для каждой строки с другой стороны соединения. Операция используется всегда, когда невозможно применить другие виды соединения: если соединяемые наборы данных достаточно велики и/или наборы данных не упорядочены по столбцам соединения.

    9. Index Scan

      Сканирование индекса выполняет обход индекса, просматривает конечные узлы, чтобы найти все соответствующие записи, и извлекает соответствующие данные из таблицы. В большинстве случаев является хорошей для производительности, так как представляет собой прямой доступ к требуемым строкам данных.

    10. InitPlan

      Операция означает подзапрос, у которого нет ссылок на основной запрос. Операция появляется в плане, когда есть часть запроса, которую можно (или нужно) вычислить прежде всего, и она не зависит ни от чего в остальной части запроса.

    11. Limit

      Прерывает выполнение операций, когда было выбрано нужное количество строк.

    12. Materialize

      Операция получает данные из нижележащей операции и размещает их в памяти (или частично в памяти), чтобы ими можно было быстрее воспользоваться, или добавляет им дополнительные свойства, которые предыдущая операция не предоставляет.

    13. Merge Join

      Соединение слиянием объединяет два отсортированных списка. Обе стороны объединения должны быть предварительно отсортированы.

    14. Nested Loops

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

    15. Seq Scan

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

    16. Sort

      Сортирует набор по столбцам, указанным в Sort Key. Операция сортировки требует больших объемов памяти для материализации промежуточного результата.

    17. SubPlan

      Операция означает подзапрос, в котором есть ссылки на основной запрос. Вызывается, чтобы посчитать данные из подзапроса, которые зависят от текущей строки.

    18. Subquery Scan

      Операция означает подзапрос, входящий в UNION.

    19. Unique

      Удаляет дублирующиеся данные. Практически не требует памяти: сравнивает значение в предыдущей строке с текущим и, если они одинаковые, отбрасывает его. Данные должны быть предварительно отсортированны.

  2. "table"

    Имя таблицы, к которой привязан индекс

  3. "index"

    Индексы позволяют ускорить выполнение запросов, позволяя быстро находить и выбирать определенные строки на основе значений в указанном столбце.

    Пример:
      -- dt :: date(=)
    CREATE INDEX CONCURRENTLY "~px$nodeagg_-edfe92cd"
      ON px$nodeagg_(dt);
    

    В данном фрагменте представлен SQL-запрос для создания индекса в СУБД, состав:

    1. CREATE INDEX CONCURRENTLY: Это команда для создания индекса в базе данных. Оператор CONCURRENTLY указывает на создание индекса с минимальным влиянием на параллельно выполняющиеся операции чтения и записи.

    2. «~px$nodeagg_-edfe92cd»: Это имя индекса. В данном случае, имя индекса представлено в кавычках и содержит символ ~ в начале. Вероятно, это имя было сгенерировано автоматически системой или по какому-то шаблону. Уникальность имени индекса в пределах схемы базы данных гарантируется.

    3. ON px$nodeagg_(dt): Здесь px$nodeagg_ указывает на имя таблицы, к которой привязан индекс, а (dt) указывает на столбец, по которому будет создан индекс. В данном случае, индекс будет создан на столбце dt таблицы px$nodeagg_, используя значение типа данных date.

  1. "кол-во"

    Количество.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

  2. "rows" (количество строк)

    Количество строк, возвращаемых узлом

    строка

    Каждая таблица в состоит из столбцов и строк. Каждая строка таблицы представляет отдельную запись и содержит значения для каждого столбца в таблице.

  3. "RRbF"

    Rows Removed by Filter (Строки удалены фильтром)

    Нажатие на заголовок сортирует вкладку по данному столбцу.

    Отображает статистическую информацию, которую можно увидеть в плане выполнения запроса (query execution plan). Это значение указывает на количество строк, которые были удалены после применения фильтра в операции сканирования или присоединения таблицы.

    Когда СУБД выполняет запрос, он применяет фильтры к данным для выбора только тех строк, которые удовлетворяют заданным условиям. «Rows Removed by Filter» отображает количество строк, которые были отфильтрованы и удалены после применения этих условий. Это значение может быть полезно для анализа производительности запроса и оптимизации его выполнения.

    Обратите внимание, что «Rows Removed by Filter» не указывает на общее количество строк, выбранных или возвращенных в результате выполнения запроса. RRbF относится только к количеству строк, которые были удалены после применения фильтра.

    Информация об RRbF может быть полезна при оптимизации запросов и улучшении производительности базы данных. Она может помочь идентифицировать места, где можно улучшить индексы или структуру таблиц для уменьшения количества строк, которые не удовлетворяют условиям запроса и удаляются фильтром.

  4. "loops"

    Суммарное для узла количество простых циклов типа pg_m_glossary-LOOP.

    Нажатие на заголовок сортирует вкладку по данному столбцу.

  5. "sum.мс"

    Суммарное время запросов в милисекундах.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

  6. "buf.mem"

    Запросы, buffers которых по данному шаблону считались читающимися из памяти.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

    Наведение на значение отображет тултип со значнием объема.

  7. "buf:dsk"

    Запросы, buffers которых по данному шаблону считались читающимися с диска.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

    Наведение на значение отображет тултип со значнием объема.

Страница /узел/rows

Для перехода к данной форме следует нажать на кнопку на значение в столбце rows на вкладках:

Состав страницы:

  1. "type"

    Описание сновных операций (типов узлов), отображаемых в планах выполнения запросов СУБД PostgreSQL:

    1. Append

      Запускает множество субопераций и возвращает все возвращенные ими строки в виде общего результата. Используется в запросах, содержащих UNION или UNION ALL.

    2. Bitmap Index Scan

      В то время как Index Scan извлекает один указатель кортежа за раз из индекса и немедленно переходит к этому кортежу в таблице, Bitmap Index Scan извлекает все указатели кортежей из индекса за один раз, сортирует их, используя структуру данных «битовая карта (bitmap)» в оперативной памяти, а затем просматривает кортежи таблиц в порядке физического расположения кортежей.

    3. CTE Scan

      Схожа с Materialize. Операция запускает часть запроса и сохраняет ее вывод, чтобы он мог быть использован другой частью (или частями) запроса.

    4. Filter

      Применяет фильтр к набору строк.

    5. GroupAggregate

      Группирует предварительно отсортированный набор в соответствии с предложением GROUP BY. Эта операция не буферизует промежуточный результат.

    6. HashAggregate

      Использует временную хэш-таблицу для группировки записей. Операция HashAggregate не требует предварительно отсортированного набора данных, вместо этого она использует большие объемы памяти для материализации промежуточного результата. Вывод не упорядочен каким-либо значимым образом.

    7. HashSetOp

      Операция используется операциями INTERSECT и EXCEPT (с опциональным модификатором ALL). Она работает следующим образом: запускает субоперации Append для пары подзапросов, а затем, на основании результата и опционального модификатора ALL, решает, какие строки нужно вернуть.

    8. Hash Join

      Хеш-соединение загружает записи-кандидаты с одной стороны соединения в хеш-таблицу, которая затем проверяется для каждой строки с другой стороны соединения. Операция используется всегда, когда невозможно применить другие виды соединения: если соединяемые наборы данных достаточно велики и/или наборы данных не упорядочены по столбцам соединения.

    9. Index Scan

      Сканирование индекса выполняет обход индекса, просматривает конечные узлы, чтобы найти все соответствующие записи, и извлекает соответствующие данные из таблицы. В большинстве случаев является хорошей для производительности, так как представляет собой прямой доступ к требуемым строкам данных.

    10. InitPlan

      Операция означает подзапрос, у которого нет ссылок на основной запрос. Операция появляется в плане, когда есть часть запроса, которую можно (или нужно) вычислить прежде всего, и она не зависит ни от чего в остальной части запроса.

    11. Limit

      Прерывает выполнение операций, когда было выбрано нужное количество строк.

    12. Materialize

      Операция получает данные из нижележащей операции и размещает их в памяти (или частично в памяти), чтобы ими можно было быстрее воспользоваться, или добавляет им дополнительные свойства, которые предыдущая операция не предоставляет.

    13. Merge Join

      Соединение слиянием объединяет два отсортированных списка. Обе стороны объединения должны быть предварительно отсортированы.

    14. Nested Loops

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

    15. Seq Scan

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

    16. Sort

      Сортирует набор по столбцам, указанным в Sort Key. Операция сортировки требует больших объемов памяти для материализации промежуточного результата.

    17. SubPlan

      Операция означает подзапрос, в котором есть ссылки на основной запрос. Вызывается, чтобы посчитать данные из подзапроса, которые зависят от текущей строки.

    18. Subquery Scan

      Операция означает подзапрос, входящий в UNION.

    19. Unique

      Удаляет дублирующиеся данные. Практически не требует памяти: сравнивает значение в предыдущей строке с текущим и, если они одинаковые, отбрасывает его. Данные должны быть предварительно отсортированны.

  2. "table"

    Имя таблицы, к которой привязан индекс

  3. "index"

    Индексы позволяют ускорить выполнение запросов, позволяя быстро находить и выбирать определенные строки на основе значений в указанном столбце.

    Пример:
      -- dt :: date(=)
    CREATE INDEX CONCURRENTLY "~px$nodeagg_-edfe92cd"
      ON px$nodeagg_(dt);
    

    В данном фрагменте представлен SQL-запрос для создания индекса в СУБД, состав:

    1. CREATE INDEX CONCURRENTLY: Это команда для создания индекса в базе данных. Оператор CONCURRENTLY указывает на создание индекса с минимальным влиянием на параллельно выполняющиеся операции чтения и записи.

    2. «~px$nodeagg_-edfe92cd»: Это имя индекса. В данном случае, имя индекса представлено в кавычках и содержит символ ~ в начале. Вероятно, это имя было сгенерировано автоматически системой или по какому-то шаблону. Уникальность имени индекса в пределах схемы базы данных гарантируется.

    3. ON px$nodeagg_(dt): Здесь px$nodeagg_ указывает на имя таблицы, к которой привязан индекс, а (dt) указывает на столбец, по которому будет создан индекс. В данном случае, индекс будет создан на столбце dt таблицы px$nodeagg_, используя значение типа данных date.

  1. "кол-во"

    Количество.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

  2. "rows" (количество строк)

    Количество строк, возвращаемых узлом

    строка

    Каждая таблица в состоит из столбцов и строк. Каждая строка таблицы представляет отдельную запись и содержит значения для каждого столбца в таблице.

  3. "RRbF"

    Rows Removed by Filter (Строки удалены фильтром)

    Нажатие на заголовок сортирует вкладку по данному столбцу.

    Отображает статистическую информацию, которую можно увидеть в плане выполнения запроса (query execution plan). Это значение указывает на количество строк, которые были удалены после применения фильтра в операции сканирования или присоединения таблицы.

    Когда СУБД выполняет запрос, он применяет фильтры к данным для выбора только тех строк, которые удовлетворяют заданным условиям. «Rows Removed by Filter» отображает количество строк, которые были отфильтрованы и удалены после применения этих условий. Это значение может быть полезно для анализа производительности запроса и оптимизации его выполнения.

    Обратите внимание, что «Rows Removed by Filter» не указывает на общее количество строк, выбранных или возвращенных в результате выполнения запроса. RRbF относится только к количеству строк, которые были удалены после применения фильтра.

    Информация об RRbF может быть полезна при оптимизации запросов и улучшении производительности базы данных. Она может помочь идентифицировать места, где можно улучшить индексы или структуру таблиц для уменьшения количества строк, которые не удовлетворяют условиям запроса и удаляются фильтром.

  4. "loops"

    Суммарное для узла количество простых циклов типа pg_m_glossary-LOOP.

    Нажатие на заголовок сортирует вкладку по данному столбцу.

  5. "sum.мс"

    Суммарное время запросов в милисекундах.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

  6. "buf.mem"

    Запросы, buffers которых по данному шаблону считались читающимися из памяти.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

    Наведение на значение отображет тултип со значнием объема.

  7. "buf:dsk"

    Запросы, buffers которых по данному шаблону считались читающимися с диска.

    Нажатие на заголовок сортирует вкладку по названию шаблона.

    Наведение на значение отображет тултип со значнием объема.