This commit is contained in:
parent
bfae9ba8c7
commit
8b4fb13112
@ -6,7 +6,7 @@ tags:
|
|||||||
- maturity/🌱
|
- maturity/🌱
|
||||||
date: 2024-10-23
|
date: 2024-10-23
|
||||||
---
|
---
|
||||||
![[../../../meta/files/images/Pasted image 20241104202857.png]]
|
![[../../../meta/files/images/Pasted image 20241105004620.png]]
|
||||||
|
|
||||||
**Особенности:**
|
**Особенности:**
|
||||||
- Основан на работе [[../../fundamental/structure/B-tree|B-tree]] дерева.
|
- Основан на работе [[../../fundamental/structure/B-tree|B-tree]] дерева.
|
||||||
|
@ -34,7 +34,7 @@ PostgreSQL использует условные единицы для обоз
|
|||||||
|
|
||||||
Если оценочное значение `rows` слишком низкое по сравнению с фактическим количеством строк, это может означать, что статистика таблицы устарела. В таком случае необходимо выполнить `ANALYZE` для обновления статистики и улучшения качества планирования запросов.
|
Если оценочное значение `rows` слишком низкое по сравнению с фактическим количеством строк, это может означать, что статистика таблицы устарела. В таком случае необходимо выполнить `ANALYZE` для обновления статистики и улучшения качества планирования запросов.
|
||||||
|
|
||||||
Также PostgreSQL умеет считать количество обращений к диску. Для этого нужно добавить опцию `buffres`: `explain (analize, buffres)`. Это не время на чтение.
|
Также PostgreSQL умеет считать количество обращений к диску. Для этого нужно добавить опцию `buffres`: `explain (analize, buffres)`. Это не время на чтение, а количества чтений.
|
||||||
## Виды проходов по таблице и индексу
|
## Виды проходов по таблице и индексу
|
||||||
- **Seq Scan**: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить [[../Индекс базы данных|индекс]], чтобы ускорить выборку данных.
|
- **Seq Scan**: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить [[../Индекс базы данных|индекс]], чтобы ускорить выборку данных.
|
||||||
- **Index Scan**: использование [[../Индекс базы данных|индекса]] для просмотра таблицы.
|
- **Index Scan**: использование [[../Индекс базы данных|индекса]] для просмотра таблицы.
|
||||||
|
@ -18,7 +18,7 @@ date: 2024-10-21
|
|||||||
|
|
||||||
**Полезные советы:**
|
**Полезные советы:**
|
||||||
- [[../Селективность колонки|Селективность колонки]]: чем выше селективность, тем эффективнее работает индекс.
|
- [[../Селективность колонки|Селективность колонки]]: чем выше селективность, тем эффективнее работает индекс.
|
||||||
- **Частичные индексы**: используйте [[../Частичный индекс]], чтобы уменьшить размер индекса и повысить эффективность.
|
- **Частичные индексы**: используйте [[../Частичный индекс|частичный индекс]], чтобы уменьшить размер индекса и повысить эффективность.
|
||||||
***
|
***
|
||||||
## Мета информация
|
## Мета информация
|
||||||
**Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]]
|
**Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]]
|
||||||
|
@ -10,6 +10,8 @@ date: 2024-06-09
|
|||||||
|
|
||||||
Обычный индекс позволяет ускорить поиск по ключевой колонке, но при этом, чтобы получить данные из других колонок, СУБД все равно обращается к основной таблице. ==Покрывающий индекс, в отличие от обычного, содержит все необходимые для запроса колонки, что исключает необходимость обращения к таблице и, следовательно, улучшает производительность.==
|
Обычный индекс позволяет ускорить поиск по ключевой колонке, но при этом, чтобы получить данные из других колонок, СУБД все равно обращается к основной таблице. ==Покрывающий индекс, в отличие от обычного, содержит все необходимые для запроса колонки, что исключает необходимость обращения к таблице и, следовательно, улучшает производительность.==
|
||||||
|
|
||||||
|
Однако это не всегда так: иногда СУБД всё же вынуждена обратиться к таблице, поскольку индекс не хранит информацию о **видимости строк** — данных, которые управляют их доступностью в текущей транзакции. В системах с многоверсионной архитектурой (например, в PostgreSQL) строки могут быть изменены, удалены или добавлены другими транзакциями, которые ещё не завершены. Это создаёт «несогласованные» версии данных, и СУБД нужно проверить, какая версия строки видима в текущем запросе.
|
||||||
|
|
||||||
Пример создания покрывающего индекса в [[../../meta/zero/00 PostgreSQL|PostgreSQL]]:
|
Пример создания покрывающего индекса в [[../../meta/zero/00 PostgreSQL|PostgreSQL]]:
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
|
@ -11,7 +11,7 @@ date: 2024-01-29
|
|||||||
**Основные особенности B-tree**
|
**Основные особенности B-tree**
|
||||||
- Узел содержит множество элементов, что позволяет хранить больше данных в одном месте.
|
- Узел содержит множество элементов, что позволяет хранить больше данных в одном месте.
|
||||||
- Каждый узел представляет собой [[../Страница|страничку]] на диске, что снижает издержки на чтение.
|
- Каждый узел представляет собой [[../Страница|страничку]] на диске, что снижает издержки на чтение.
|
||||||
- В каждом узле есть ссылки на следующий и предыдущий узлы (характерно для B+tree).
|
- В каждом узле есть ссылки на следующий и предыдущий узлы (характерно для B+tree). Это сильно помогает с поиском по диапазонам.
|
||||||
- В листьях дерева могут храниться сами данные или указатели на данные, то есть ссылаются на таблицу.
|
- В листьях дерева могут храниться сами данные или указатели на данные, то есть ссылаются на таблицу.
|
||||||
- Элементы в узле отсортированы, что делает поиск более эффективным и позволяет создавать деревья с небольшой высотой, тем самым уменьшая количество обращений к диску.
|
- Элементы в узле отсортированы, что делает поиск более эффективным и позволяет создавать деревья с небольшой высотой, тем самым уменьшая количество обращений к диску.
|
||||||
- Значения в узлах могут быть не уникальными.
|
- Значения в узлах могут быть не уникальными.
|
||||||
|
@ -4,10 +4,10 @@ tags:
|
|||||||
- maturity/🌱
|
- maturity/🌱
|
||||||
date: 2024-11-05
|
date: 2024-11-05
|
||||||
---
|
---
|
||||||
-
|
- [[2024-11-05]]. (7/10) [Владимир Ситников — B-Tree индексы в базах данных на примере Spring Boot-приложений, PostgreSQL, JPA - YouTube](https://www.youtube.com/watch?v=y-Wtyvme4gE)
|
||||||
- [[2024-11-05]]. [Владимир Ситников — B-tree индексы в базах данных на примере PostgreSQL - YouTube](https://www.youtube.com/watch?v=mnEU2_cwE_s)
|
- [[2024-11-05]]. (8/10) [Владимир Ситников — 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]]. (6/10) [[../source/lecture/Доклад. Могут ли Virtual threads заменить Webflux|Доклад. Могут ли Virtual threads заменить Webflux]]
|
||||||
- [[2024-11-05]]. [[../source/lecture/Доклад. Индексы в PostgreSQL. Как понять, что создавать|Доклад. Индексы в PostgreSQL. Как понять, что создавать]]
|
- [[2024-11-05]]. (9/10) [[../source/lecture/Доклад. Индексы в PostgreSQL. Как понять, что создавать|Доклад. Индексы в PostgreSQL. Как понять, что создавать]]
|
||||||
***
|
***
|
||||||
## Мета информация
|
## Мета информация
|
||||||
**Область**:: [[../source/00 Источники|00 Источники]]
|
**Область**:: [[../source/00 Источники|00 Источники]]
|
||||||
|
BIN
meta/files/images/Pasted image 20241105004620.png
Normal file
BIN
meta/files/images/Pasted image 20241105004620.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 779 KiB |
BIN
meta/files/images/comp/Pasted image 20241105004620.png
Normal file
BIN
meta/files/images/comp/Pasted image 20241105004620.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 249 KiB |
@ -0,0 +1 @@
|
|||||||
|
607e9b62b4476e46f9e6796f69dc1f5a
|
BIN
meta/files/images/webp/Pasted image 20241105004620.webp
Normal file
BIN
meta/files/images/webp/Pasted image 20241105004620.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
@ -0,0 +1 @@
|
|||||||
|
607e9b62b4476e46f9e6796f69dc1f5a
|
Loading…
Reference in New Issue
Block a user