Видео бомба. Спасибо Егору. Но есть вопросы. Как определить количество мертвых страниц в индексе, в видео это прослеживается только по изменению колонки leaf_pages, но если мы не знали первичного значения 85, то значение 125 нам ни о чем не сказало бы. Для анализа использовалась функция pgstatindex()
avg_leaf_density будет меньше чем эталонные 90%, и leaf_fragmentation больше 0, что говорит о том, что в листьевых страницах индекса содержится много индексных записей помеченных, как доступные для перезаписи, что ссылались раньше на мертвые версии строк его таблицы, а каждая индексная запись состоит из копии значений полей столбцов таблицы, по кот. создан этот индекс обычный vacuum не удаляет фрагментацию, для этого надо или vacuum full блокирует полностью доступ к таблице и потом пересоздает таблицу и ее индексы, или REINDEX, кот. делает аналогичное, но только для индексов с блокировкой таблицы только на запись (а если CONCURRENTLY, то вобще без какой-либо блокировки таблицы)
Добрый день, не совсем понял, а что история изменений строк сохраняется? И что такое vacuum ? Vacuum это команда типа сжать таблицу понятно, а что перезапись не идет?
Спасибо вам за прекрасные знания
Спасибо!
Спасибо большое!
Спасибо большое.
Видео бомба. Спасибо Егору. Но есть вопросы. Как определить количество мертвых страниц в индексе, в видео это прослеживается только по изменению колонки leaf_pages, но если мы не знали первичного значения 85, то значение 125 нам ни о чем не сказало бы. Для анализа использовалась функция pgstatindex()
avg_leaf_density будет меньше чем эталонные 90%, и leaf_fragmentation больше 0, что говорит о том, что в листьевых страницах индекса содержится много индексных записей помеченных, как доступные для перезаписи, что ссылались раньше на мертвые версии строк его таблицы, а каждая индексная запись состоит из копии значений полей столбцов таблицы, по кот. создан этот индекс
обычный vacuum не удаляет фрагментацию, для этого надо или vacuum full блокирует полностью доступ к таблице и потом пересоздает таблицу и ее индексы, или REINDEX, кот. делает аналогичное, но только для индексов с блокировкой таблицы только на запись (а если CONCURRENTLY, то вобще без какой-либо блокировки таблицы)
Добрый день, не совсем понял, а что история изменений строк сохраняется? И что такое vacuum ? Vacuum это команда типа сжать таблицу понятно, а что перезапись не идет?
Насчёт массовых изменений порциями. Имеется в виду update в цикле по 10000 (условно) строк или что-то иное?
Да, именно это: обновление пакета строк, очистка, обновление следующего пакета и т. д.
Что посоветуете для хранилищ данных, там массовые изменения сплошь и рядом?
Обновлять понемногу и в промежутках выполнять очистку. Про это довольно подробно рассказано в курсе DEV2.
Спасибо!