Индекс базы данных.md
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing

This commit is contained in:
Struchkov Mark 2024-10-25 21:35:39 +03:00
parent eacf800157
commit 8749f8afcd
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
13 changed files with 15 additions and 15 deletions

View File

@ -64,7 +64,7 @@ UUID версии 4 (V4) — это случайный идентификато
**Недостатки:** **Недостатки:**
- **Не сортируемый**: UUID V4 нельзя отсортировать по времени или другим критериям, так как он полностью основан на случайных данных. - **Не сортируемый**: UUID V4 нельзя отсортировать по времени или другим критериям, так как он полностью основан на случайных данных.
- **Замедленная вставка в БД**: В больших базах данных, по мере увеличения количества записей, время вставки новых записей с UUID V4 может расти. Это связано с тем, что случайные значения распределяются неравномерно, что может вызывать фрагментацию [[database/Индекс в БД|индексов]], особенно при использовании кластеризованных индексов. - **Замедленная вставка в БД**: В больших базах данных, по мере увеличения количества записей, время вставки новых записей с UUID V4 может расти. Это связано с тем, что случайные значения распределяются неравномерно, что может вызывать фрагментацию [[database/Индекс базы данных|индексов]], особенно при использовании кластеризованных индексов.
- **Не содержит полезной информации**: В отличие от UUID версий 1 и 3, UUID V4 не хранит никаких дополнительных данных (например, метку времени или привязку к конкретному объекту). - **Не содержит полезной информации**: В отличие от UUID версий 1 и 3, UUID V4 не хранит никаких дополнительных данных (например, метку времени или привязку к конкретному объекту).
## UUID V5 ## UUID V5
![](../meta/files/images/Pasted%20image%2020231112134012.png) ![](../meta/files/images/Pasted%20image%2020231112134012.png)

View File

@ -19,7 +19,7 @@ OLAP (Online Analytical Processing) — это тип нагрузки, кото
Причины выделить OLAP нагрузку: Причины выделить OLAP нагрузку:
- Разный характер нагрузки, требующий долгосрочного хранения и анализа данных. - Разный характер нагрузки, требующий долгосрочного хранения и анализа данных.
- Специфические стратегии [[Индекс в БД|индексирования]] для оптимизации аналитических запросов. - Специфические стратегии [[Индекс базы данных|индексирования]] для оптимизации аналитических запросов.
- Работа с большими объемами данных и их обработка в рамках одного запроса. - Работа с большими объемами данных и их обработка в рамках одного запроса.
- Поддержка исторических данных для анализа трендов и построения отчетов. - Поддержка исторических данных для анализа трендов и построения отчетов.

View File

@ -18,7 +18,7 @@ OLTP (Online Transaction Processing) — это тип нагрузки, кот
- Прием платежей за сотовую связь. - Прием платежей за сотовую связь.
## Лучшие практики для оптимизации производительности ## Лучшие практики для оптимизации производительности
- **Использование индексов**: правильно настроенные [[Индекс в БД|индексы]] позволяют быстрее выполнять операции и уменьшить количество операций чтения. - **Использование индексов**: правильно настроенные [[Индекс базы данных|индексы]] позволяют быстрее выполнять операции и уменьшить количество операций чтения.
- [[../../../../_inbox/Шардирование БД|Шардинг]] (разделение таблиц): разделение таблиц на части снижает нагрузку и улучшает производительность. - [[../../../../_inbox/Шардирование БД|Шардинг]] (разделение таблиц): разделение таблиц на части снижает нагрузку и улучшает производительность.
- **Избегание блокировок**: минимизация блокировок таблиц и строк особенно важна при большом количестве параллельных транзакций. - **Избегание блокировок**: минимизация блокировок таблиц и строк особенно важна при большом количестве параллельных транзакций.
- Для OLTP-нагрузки не следует использовать параллельное выполнение запросов, так как это забирает ядро процессора у другого запроса, что может привести к задержкам в обработке транзакций и снижению общей производительности системы. В контексте OLTP важнее минимизировать время выполнения каждого отдельного запроса, а не распределять его между несколькими ядрами. ==Каждый запрос должен выполняться на одном ядре как можно быстрее.== - Для OLTP-нагрузки не следует использовать параллельное выполнение запросов, так как это забирает ядро процессора у другого запроса, что может привести к задержкам в обработке транзакций и снижению общей производительности системы. В контексте OLTP важнее минимизировать время выполнения каждого отдельного запроса, а не распределять его между несколькими ядрами. ==Каждый запрос должен выполняться на одном ядре как можно быстрее.==

View File

@ -38,7 +38,7 @@ linked:
Как влиять на оптимизатор? Как влиять на оптимизатор?
- Переписать запрос. - Переписать запрос.
- Использовать [[../../../../../_inbox/Индексы в MySQL|индексы]] - Использовать [[../../../../../_inbox/Индекс в MySQL|индексы]]
- user/force/ignore index. Можем явно указать когда и какие индексы использовать - user/force/ignore index. Можем явно указать когда и какие индексы использовать
- straight_join. Можем задать жесткий порядок join таблиц - straight_join. Можем задать жесткий порядок join таблиц
- @@optimizer_switch. Позволяет включать/отключать правила, которые использует оптимизатор. - @@optimizer_switch. Позволяет включать/отключать правила, которые использует оптимизатор.

View File

@ -4,7 +4,7 @@ tags:
- maturity/🌱 - maturity/🌱
date: 2024-03-31 date: 2024-03-31
--- ---
[[../../../meta/zero/00 PostgreSQL|PostgreSQL]] поддерживает несколько типов [[../Индекс в БД|индексов]], каждый из которых предназначен для определённых задач. Выбор типа индекса зависит от структуры данных и характера запросов. В этом разделе приведены основные типы индексов, их особенности и случаи, когда их использование наиболее эффективно. [[../../../meta/zero/00 PostgreSQL|PostgreSQL]] поддерживает несколько типов [[../Индекс базы данных|индексов]], каждый из которых предназначен для определённых задач. Выбор типа индекса зависит от структуры данных и характера запросов. В этом разделе приведены основные типы индексов, их особенности и случаи, когда их использование наиболее эффективно.
**Особенности:** **Особенности:**
- Для **первичного ключа** индекс создается автоматически. - Для **первичного ключа** индекс создается автоматически.
@ -25,7 +25,7 @@ date: 2024-03-31
*** ***
## Мета информация ## Мета информация
**Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]] **Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]]
**Родитель**:: [[../Индекс в БД|Индекс в БД]] **Родитель**:: [[../Индекс базы данных|Индекс базы данных]]
**Источник**:: **Источник**::
**Автор**:: **Автор**::
**Создана**:: [[2024-03-31]] **Создана**:: [[2024-03-31]]

View File

@ -34,8 +34,8 @@ PostgreSQL использует условные единицы для обоз
Если оценочное значение `rows` слишком низкое по сравнению с фактическим количеством строк, это может означать, что статистика таблицы устарела. В таком случае необходимо выполнить `ANALYZE` для обновления статистики и улучшения качества планирования запросов. Если оценочное значение `rows` слишком низкое по сравнению с фактическим количеством строк, это может означать, что статистика таблицы устарела. В таком случае необходимо выполнить `ANALYZE` для обновления статистики и улучшения качества планирования запросов.
## Виды проходов по таблице и индексу ## Виды проходов по таблице и индексу
- **Seq Scan**: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить [[../Индекс в БД|индекс]], чтобы ускорить выборку данных. - **Seq Scan**: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить [[../Индекс базы данных|индекс]], чтобы ускорить выборку данных.
- **Index Scan**: использование [[../Индекс в БД|индекса]] для просмотра таблицы. - **Index Scan**: использование [[../Индекс базы данных|индекса]] для просмотра таблицы.
- **Index Only Scan**: использование [[../Покрывающий индекс|покрывающего индекса]], когда все нужные данные находятся в индексе и не требуется дополнительного доступа к таблице. - **Index Only Scan**: использование [[../Покрывающий индекс|покрывающего индекса]], когда все нужные данные находятся в индексе и не требуется дополнительного доступа к таблице.
- **Bitmap Heap Scan**: оптимизация с использованием битовых карт для поиска. Сначала строятся битовые карты с использованием нескольких индексов, затем они комбинируются. - **Bitmap Heap Scan**: оптимизация с использованием битовых карт для поиска. Сначала строятся битовые карты с использованием нескольких индексов, затем они комбинируются.
- **Foreign Scan**: сканирование данных на удаленном сервере, используемое при [[Шардирование в PostgreSQL|шардировании]]. - **Foreign Scan**: сканирование данных на удаленном сервере, используемое при [[Шардирование в PostgreSQL|шардировании]].

View File

@ -16,7 +16,7 @@ linked:
- **Исполнение и возврат результатов**: возврат больших объемов данных (например, нескольких гигабайт) значительно замедляет запрос. - **Исполнение и возврат результатов**: возврат больших объемов данных (например, нескольких гигабайт) значительно замедляет запрос.
**Как улучшить?** **Как улучшить?**
- **Используйте индексы**: правильно настроенные [[Индекс в БД|индексы]] могут существенно ускорить выполнение. - **Используйте индексы**: правильно настроенные [[Индекс базы данных|индексы]] могут существенно ускорить выполнение.
- **Переписать запрос**: упростите запрос, разделите его на несколько меньших, если это возможно. - **Переписать запрос**: упростите запрос, разделите его на несколько меньших, если это возможно.
**Что невозможно улучшить** **Что невозможно улучшить**

View File

@ -6,7 +6,7 @@ tags:
- maturity/🌱 - maturity/🌱
date: 2024-06-09 date: 2024-06-09
--- ---
Покрывающий индекс — это [[Индекс в БД|индекс]], который включает в себя все колонки, необходимые для выполнения определенного запроса, без необходимости обращения к основной таблице данных. Покрывающий индекс — это [[Индекс базы данных|индекс]], который включает в себя все колонки, необходимые для выполнения определенного запроса, без необходимости обращения к основной таблице данных.
Обычный индекс позволяет ускорить поиск по ключевой колонке, но при этом, чтобы получить данные из других колонок, СУБД все равно обращается к основной таблице. ==Покрывающий индекс, в отличие от обычного, содержит все необходимые для запроса колонки, что исключает необходимость обращения к таблице и, следовательно, улучшает производительность.== Обычный индекс позволяет ускорить поиск по ключевой колонке, но при этом, чтобы получить данные из других колонок, СУБД все равно обращается к основной таблице. ==Покрывающий индекс, в отличие от обычного, содержит все необходимые для запроса колонки, что исключает необходимость обращения к таблице и, следовательно, улучшает производительность.==
@ -37,7 +37,7 @@ SELECT column1, column2 FROM table_name WHERE column1 = 'value';
*** ***
## Мета информация ## Мета информация
**Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]] **Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]]
**Родитель**:: [[Индекс в БД]] **Родитель**:: [[Индекс базы данных]]
**Источник**:: **Источник**::
**Автор**:: **Автор**::
**Создана**:: [[2024-06-09]] **Создана**:: [[2024-06-09]]

View File

@ -9,7 +9,7 @@ date: 2024-03-31
--- ---
Селективность колонки в базе данных — это отношение уникальных значений в столбце к общему количеству значений. ==Чем больше уникальных значений, тем выше селективность.== Селективность выражается значением от 0 до 1, где 0 означает отсутствие селективности, а 1 — идеальную селективность. Селективность колонки в базе данных — это отношение уникальных значений в столбце к общему количеству значений. ==Чем больше уникальных значений, тем выше селективность.== Селективность выражается значением от 0 до 1, где 0 означает отсутствие селективности, а 1 — идеальную селективность.
Высокая селективность делает колонку отличным кандидатом для [[Индекс в БД|индексирования]], так как это уменьшает количество строк для просмотра и ускоряет поиск. Например, колонка с уникальными идентификаторами пользователей позволяет значительно улучшить производительность запросов. Высокая селективность делает колонку отличным кандидатом для [[Индекс базы данных|индексирования]], так как это уменьшает количество строк для просмотра и ускоряет поиск. Например, колонка с уникальными идентификаторами пользователей позволяет значительно улучшить производительность запросов.
Низкая селективность означает много повторяющихся значений. Например, колонка с полом пользователя ("мужской" и "женский"). Индекс на таком столбце обычно малоэффективен, но может быть полезен при использовании с другими более селективными колонками. Это помогает уменьшить объем данных для сканирования. Низкая селективность означает много повторяющихся значений. Например, колонка с полом пользователя ("мужской" и "женский"). Индекс на таком столбце обычно малоэффективен, но может быть полезен при использовании с другими более селективными колонками. Это помогает уменьшить объем данных для сканирования.

View File

@ -54,7 +54,7 @@ SELECT * FROM orders WHERE order_date >= '2024-01-01';
*** ***
## Мета информация ## Мета информация
**Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]] **Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]]
**Родитель**:: [[Индекс в БД]] **Родитель**:: [[Индекс базы данных]]
**Источник**:: **Источник**::
**Автор**:: **Автор**::
**Создана**:: [[2024-06-16]] **Создана**:: [[2024-06-16]]

View File

@ -4,6 +4,6 @@ tags:
telegram: telegram:
work place: work place:
position: position:
date: "[[2024-03-31]]" date: 2024-03-31
aliases: [] aliases: []
--- ---

View File

@ -13,7 +13,7 @@ linked:
- [Репликация БД](../../dev/architecture/highload/Репликация%20БД.md) - [Репликация БД](../../dev/architecture/highload/Репликация%20БД.md)
- [Резервные копии БД](Резервные%20копии%20БД.md) - [Резервные копии БД](Резервные%20копии%20БД.md)
- [Транзакция БД](../../dev/database/Транзакция%20БД.md) - [Транзакция БД](../../dev/database/Транзакция%20БД.md)
- [[../../dev/database/Индекс в БД|Индекс в БД]] - [[../../dev/database/Индекс базы данных|Индекс базы данных]]
- [[../../dev/database/postgresql/Индекс в PostgreSQL|Индекс в PostgreSQL]] - [[../../dev/database/postgresql/Индекс в PostgreSQL|Индекс в PostgreSQL]]
- [[../../../../_inbox/Индекс в MySQL|Индекс в MySQL]] - [[../../../../_inbox/Индекс в MySQL|Индекс в MySQL]]