diff --git a/dev/database/postgresql/B-tree индекс в PostgreSQL.md b/dev/database/postgresql/B-tree индекс в PostgreSQL.md index b95ca6e0..72fbe29c 100644 --- a/dev/database/postgresql/B-tree индекс в PostgreSQL.md +++ b/dev/database/postgresql/B-tree индекс в PostgreSQL.md @@ -6,7 +6,7 @@ tags: - maturity/🌱 date: 2024-10-23 --- -![[../../../meta/files/images/Pasted image 20241104202857.png]] +![[../../../meta/files/images/Pasted image 20241105004620.png]] **Особенности:** - Основан на работе [[../../fundamental/structure/B-tree|B-tree]] дерева. diff --git a/dev/database/postgresql/Профилирование запросов в PostgreSQL.md b/dev/database/postgresql/Профилирование запросов в PostgreSQL.md index 08f03efc..d7fc9795 100644 --- a/dev/database/postgresql/Профилирование запросов в PostgreSQL.md +++ b/dev/database/postgresql/Профилирование запросов в PostgreSQL.md @@ -34,7 +34,7 @@ PostgreSQL использует условные единицы для обоз Если оценочное значение `rows` слишком низкое по сравнению с фактическим количеством строк, это может означать, что статистика таблицы устарела. В таком случае необходимо выполнить `ANALYZE` для обновления статистики и улучшения качества планирования запросов. -Также PostgreSQL умеет считать количество обращений к диску. Для этого нужно добавить опцию `buffres`: `explain (analize, buffres)`. Это не время на чтение. +Также PostgreSQL умеет считать количество обращений к диску. Для этого нужно добавить опцию `buffres`: `explain (analize, buffres)`. Это не время на чтение, а количества чтений. ## Виды проходов по таблице и индексу - **Seq Scan**: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить [[../Индекс базы данных|индекс]], чтобы ускорить выборку данных. - **Index Scan**: использование [[../Индекс базы данных|индекса]] для просмотра таблицы. diff --git a/dev/database/postgresql/Создание индекса в PostgreSQL.md b/dev/database/postgresql/Создание индекса в PostgreSQL.md index 554db110..5341b4b9 100644 --- a/dev/database/postgresql/Создание индекса в PostgreSQL.md +++ b/dev/database/postgresql/Создание индекса в PostgreSQL.md @@ -18,7 +18,7 @@ date: 2024-10-21 **Полезные советы:** - [[../Селективность колонки|Селективность колонки]]: чем выше селективность, тем эффективнее работает индекс. -- **Частичные индексы**: используйте [[../Частичный индекс]], чтобы уменьшить размер индекса и повысить эффективность. +- **Частичные индексы**: используйте [[../Частичный индекс|частичный индекс]], чтобы уменьшить размер индекса и повысить эффективность. *** ## Мета информация **Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]] diff --git a/dev/database/Покрывающий индекс.md b/dev/database/Покрывающий индекс.md index dbff1b78..6b47d3a5 100644 --- a/dev/database/Покрывающий индекс.md +++ b/dev/database/Покрывающий индекс.md @@ -10,6 +10,8 @@ date: 2024-06-09 Обычный индекс позволяет ускорить поиск по ключевой колонке, но при этом, чтобы получить данные из других колонок, СУБД все равно обращается к основной таблице. ==Покрывающий индекс, в отличие от обычного, содержит все необходимые для запроса колонки, что исключает необходимость обращения к таблице и, следовательно, улучшает производительность.== +Однако это не всегда так: иногда СУБД всё же вынуждена обратиться к таблице, поскольку индекс не хранит информацию о **видимости строк** — данных, которые управляют их доступностью в текущей транзакции. В системах с многоверсионной архитектурой (например, в PostgreSQL) строки могут быть изменены, удалены или добавлены другими транзакциями, которые ещё не завершены. Это создаёт «несогласованные» версии данных, и СУБД нужно проверить, какая версия строки видима в текущем запросе. + Пример создания покрывающего индекса в [[../../meta/zero/00 PostgreSQL|PostgreSQL]]: ```sql diff --git a/dev/fundamental/structure/B-tree.md b/dev/fundamental/structure/B-tree.md index 79ca0643..1d6346a6 100644 --- a/dev/fundamental/structure/B-tree.md +++ b/dev/fundamental/structure/B-tree.md @@ -11,7 +11,7 @@ date: 2024-01-29 **Основные особенности B-tree** - Узел содержит множество элементов, что позволяет хранить больше данных в одном месте. - Каждый узел представляет собой [[../Страница|страничку]] на диске, что снижает издержки на чтение. -- В каждом узле есть ссылки на следующий и предыдущий узлы (характерно для B+tree). +- В каждом узле есть ссылки на следующий и предыдущий узлы (характерно для B+tree). Это сильно помогает с поиском по диапазонам. - В листьях дерева могут храниться сами данные или указатели на данные, то есть ссылаются на таблицу. - Элементы в узле отсортированы, что делает поиск более эффективным и позволяет создавать деревья с небольшой высотой, тем самым уменьшая количество обращений к диску. - Значения в узлах могут быть не уникальными. diff --git a/dev/Посмотренные доклады по разработке.md b/dev/Посмотренные доклады по разработке.md index e9694da2..6519eff7 100644 --- a/dev/Посмотренные доклады по разработке.md +++ b/dev/Посмотренные доклады по разработке.md @@ -4,10 +4,10 @@ tags: - maturity/🌱 date: 2024-11-05 --- -- -- [[2024-11-05]]. [Владимир Ситников — B-tree индексы в базах данных на примере PostgreSQL - YouTube](https://www.youtube.com/watch?v=mnEU2_cwE_s) -- [[2024-11-05]]. [[../source/lecture/Доклад. Могут ли Virtual threads заменить Webflux|Доклад. Могут ли Virtual threads заменить Webflux]] -- [[2024-11-05]]. [[../source/lecture/Доклад. Индексы в PostgreSQL. Как понять, что создавать|Доклад. Индексы в PostgreSQL. Как понять, что создавать]] +- [[2024-11-05]]. (7/10) [Владимир Ситников — B-Tree индексы в базах данных на примере Spring Boot-приложений, PostgreSQL, JPA - YouTube](https://www.youtube.com/watch?v=y-Wtyvme4gE) +- [[2024-11-05]]. (8/10) [Владимир Ситников — B-tree индексы в базах данных на примере PostgreSQL - YouTube](https://www.youtube.com/watch?v=mnEU2_cwE_s) +- [[2024-11-05]]. (6/10) [[../source/lecture/Доклад. Могут ли Virtual threads заменить Webflux|Доклад. Могут ли Virtual threads заменить Webflux]] +- [[2024-11-05]]. (9/10) [[../source/lecture/Доклад. Индексы в PostgreSQL. Как понять, что создавать|Доклад. Индексы в PostgreSQL. Как понять, что создавать]] *** ## Мета информация **Область**:: [[../source/00 Источники|00 Источники]] diff --git a/meta/files/images/Pasted image 20241105004620.png b/meta/files/images/Pasted image 20241105004620.png new file mode 100644 index 00000000..a26ef9fd Binary files /dev/null and b/meta/files/images/Pasted image 20241105004620.png differ diff --git a/meta/files/images/comp/Pasted image 20241105004620.png b/meta/files/images/comp/Pasted image 20241105004620.png new file mode 100644 index 00000000..47d7d292 Binary files /dev/null and b/meta/files/images/comp/Pasted image 20241105004620.png differ diff --git a/meta/files/images/comp/Pasted image 20241105004620.png.md5 b/meta/files/images/comp/Pasted image 20241105004620.png.md5 new file mode 100644 index 00000000..80d6c326 --- /dev/null +++ b/meta/files/images/comp/Pasted image 20241105004620.png.md5 @@ -0,0 +1 @@ +607e9b62b4476e46f9e6796f69dc1f5a diff --git a/meta/files/images/webp/Pasted image 20241105004620.webp b/meta/files/images/webp/Pasted image 20241105004620.webp new file mode 100644 index 00000000..bc5be11b Binary files /dev/null and b/meta/files/images/webp/Pasted image 20241105004620.webp differ diff --git a/meta/files/images/webp/Pasted image 20241105004620.webp.md5 b/meta/files/images/webp/Pasted image 20241105004620.webp.md5 new file mode 100644 index 00000000..80d6c326 --- /dev/null +++ b/meta/files/images/webp/Pasted image 20241105004620.webp.md5 @@ -0,0 +1 @@ +607e9b62b4476e46f9e6796f69dc1f5a