diff --git a/dev/Universal Unique IDentifier.md b/dev/Universal Unique IDentifier.md index cfbee620..eae5372e 100644 --- a/dev/Universal Unique IDentifier.md +++ b/dev/Universal Unique IDentifier.md @@ -64,7 +64,7 @@ UUID версии 4 (V4) — это случайный идентификато **Недостатки:** - **Не сортируемый**: UUID V4 нельзя отсортировать по времени или другим критериям, так как он полностью основан на случайных данных. -- **Замедленная вставка в БД**: В больших базах данных, по мере увеличения количества записей, время вставки новых записей с UUID V4 может расти. Это связано с тем, что случайные значения распределяются неравномерно, что может вызывать фрагментацию [[database/Индекс в БД|индексов]], особенно при использовании кластеризованных индексов. +- **Замедленная вставка в БД**: В больших базах данных, по мере увеличения количества записей, время вставки новых записей с UUID V4 может расти. Это связано с тем, что случайные значения распределяются неравномерно, что может вызывать фрагментацию [[database/Индекс базы данных|индексов]], особенно при использовании кластеризованных индексов. - **Не содержит полезной информации**: В отличие от UUID версий 1 и 3, UUID V4 не хранит никаких дополнительных данных (например, метку времени или привязку к конкретному объекту). ## UUID V5 ![](../meta/files/images/Pasted%20image%2020231112134012.png) diff --git a/dev/database/Online Analytical Processing.md b/dev/database/Online Analytical Processing.md index 2974c118..d5ca5757 100644 --- a/dev/database/Online Analytical Processing.md +++ b/dev/database/Online Analytical Processing.md @@ -19,7 +19,7 @@ OLAP (Online Analytical Processing) — это тип нагрузки, кото Причины выделить OLAP нагрузку: - Разный характер нагрузки, требующий долгосрочного хранения и анализа данных. -- Специфические стратегии [[Индекс в БД|индексирования]] для оптимизации аналитических запросов. +- Специфические стратегии [[Индекс базы данных|индексирования]] для оптимизации аналитических запросов. - Работа с большими объемами данных и их обработка в рамках одного запроса. - Поддержка исторических данных для анализа трендов и построения отчетов. diff --git a/dev/database/Online Transaction Processing.md b/dev/database/Online Transaction Processing.md index 8d2a3826..6bce0282 100644 --- a/dev/database/Online Transaction Processing.md +++ b/dev/database/Online Transaction Processing.md @@ -18,7 +18,7 @@ OLTP (Online Transaction Processing) — это тип нагрузки, кот - Прием платежей за сотовую связь. ## Лучшие практики для оптимизации производительности -- **Использование индексов**: правильно настроенные [[Индекс в БД|индексы]] позволяют быстрее выполнять операции и уменьшить количество операций чтения. +- **Использование индексов**: правильно настроенные [[Индекс базы данных|индексы]] позволяют быстрее выполнять операции и уменьшить количество операций чтения. - [[../../../../_inbox/Шардирование БД|Шардинг]] (разделение таблиц): разделение таблиц на части снижает нагрузку и улучшает производительность. - **Избегание блокировок**: минимизация блокировок таблиц и строк особенно важна при большом количестве параллельных транзакций. - Для OLTP-нагрузки не следует использовать параллельное выполнение запросов, так как это забирает ядро процессора у другого запроса, что может привести к задержкам в обработке транзакций и снижению общей производительности системы. В контексте OLTP важнее минимизировать время выполнения каждого отдельного запроса, а не распределять его между несколькими ядрами. ==Каждый запрос должен выполняться на одном ядре как можно быстрее.== diff --git a/dev/database/mysql/Архитектура MySQL.md b/dev/database/mysql/Архитектура MySQL.md index a4cc8c1d..82626e87 100644 --- a/dev/database/mysql/Архитектура MySQL.md +++ b/dev/database/mysql/Архитектура MySQL.md @@ -38,7 +38,7 @@ linked: Как влиять на оптимизатор? - Переписать запрос. -- Использовать [[../../../../../_inbox/Индексы в MySQL|индексы]] +- Использовать [[../../../../../_inbox/Индекс в MySQL|индексы]] - user/force/ignore index. Можем явно указать когда и какие индексы использовать - straight_join. Можем задать жесткий порядок join таблиц - @@optimizer_switch. Позволяет включать/отключать правила, которые использует оптимизатор. diff --git a/dev/database/postgresql/Индекс в PostgreSQL.md b/dev/database/postgresql/Индекс в PostgreSQL.md index 38029978..27f0ec9a 100644 --- a/dev/database/postgresql/Индекс в PostgreSQL.md +++ b/dev/database/postgresql/Индекс в PostgreSQL.md @@ -4,7 +4,7 @@ tags: - maturity/🌱 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]] -**Родитель**:: [[../Индекс в БД|Индекс в БД]] +**Родитель**:: [[../Индекс базы данных|Индекс базы данных]] **Источник**:: **Автор**:: **Создана**:: [[2024-03-31]] diff --git a/dev/database/postgresql/Профилирование запросов в PostgreSQL.md b/dev/database/postgresql/Профилирование запросов в PostgreSQL.md index 8ec2c3de..7b9b8f35 100644 --- a/dev/database/postgresql/Профилирование запросов в PostgreSQL.md +++ b/dev/database/postgresql/Профилирование запросов в PostgreSQL.md @@ -34,8 +34,8 @@ PostgreSQL использует условные единицы для обоз Если оценочное значение `rows` слишком низкое по сравнению с фактическим количеством строк, это может означать, что статистика таблицы устарела. В таком случае необходимо выполнить `ANALYZE` для обновления статистики и улучшения качества планирования запросов. ## Виды проходов по таблице и индексу -- **Seq Scan**: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить [[../Индекс в БД|индекс]], чтобы ускорить выборку данных. -- **Index Scan**: использование [[../Индекс в БД|индекса]] для просмотра таблицы. +- **Seq Scan**: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить [[../Индекс базы данных|индекс]], чтобы ускорить выборку данных. +- **Index Scan**: использование [[../Индекс базы данных|индекса]] для просмотра таблицы. - **Index Only Scan**: использование [[../Покрывающий индекс|покрывающего индекса]], когда все нужные данные находятся в индексе и не требуется дополнительного доступа к таблице. - **Bitmap Heap Scan**: оптимизация с использованием битовых карт для поиска. Сначала строятся битовые карты с использованием нескольких индексов, затем они комбинируются. - **Foreign Scan**: сканирование данных на удаленном сервере, используемое при [[Шардирование в PostgreSQL|шардировании]]. diff --git a/dev/database/Индекс в БД.md b/dev/database/Индекс базы данных.md similarity index 100% rename from dev/database/Индекс в БД.md rename to dev/database/Индекс базы данных.md diff --git a/dev/database/Оптимизация SQL запросов.md b/dev/database/Оптимизация SQL запросов.md index 77889e08..7c0dccec 100644 --- a/dev/database/Оптимизация SQL запросов.md +++ b/dev/database/Оптимизация SQL запросов.md @@ -16,7 +16,7 @@ linked: - **Исполнение и возврат результатов**: возврат больших объемов данных (например, нескольких гигабайт) значительно замедляет запрос. **Как улучшить?** -- **Используйте индексы**: правильно настроенные [[Индекс в БД|индексы]] могут существенно ускорить выполнение. +- **Используйте индексы**: правильно настроенные [[Индекс базы данных|индексы]] могут существенно ускорить выполнение. - **Переписать запрос**: упростите запрос, разделите его на несколько меньших, если это возможно. **Что невозможно улучшить** diff --git a/dev/database/Покрывающий индекс.md b/dev/database/Покрывающий индекс.md index d6643871..dbff1b78 100644 --- a/dev/database/Покрывающий индекс.md +++ b/dev/database/Покрывающий индекс.md @@ -6,7 +6,7 @@ tags: - maturity/🌱 date: 2024-06-09 --- -Покрывающий индекс — это [[Индекс в БД|индекс]], который включает в себя все колонки, необходимые для выполнения определенного запроса, без необходимости обращения к основной таблице данных. +Покрывающий индекс — это [[Индекс базы данных|индекс]], который включает в себя все колонки, необходимые для выполнения определенного запроса, без необходимости обращения к основной таблице данных. Обычный индекс позволяет ускорить поиск по ключевой колонке, но при этом, чтобы получить данные из других колонок, СУБД все равно обращается к основной таблице. ==Покрывающий индекс, в отличие от обычного, содержит все необходимые для запроса колонки, что исключает необходимость обращения к таблице и, следовательно, улучшает производительность.== @@ -37,7 +37,7 @@ SELECT column1, column2 FROM table_name WHERE column1 = 'value'; *** ## Мета информация **Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]] -**Родитель**:: [[Индекс в БД]] +**Родитель**:: [[Индекс базы данных]] **Источник**:: **Автор**:: **Создана**:: [[2024-06-09]] diff --git a/dev/database/Селективность колонки.md b/dev/database/Селективность колонки.md index c01b29b5..9ba6cf79 100644 --- a/dev/database/Селективность колонки.md +++ b/dev/database/Селективность колонки.md @@ -9,7 +9,7 @@ date: 2024-03-31 --- Селективность колонки в базе данных — это отношение уникальных значений в столбце к общему количеству значений. ==Чем больше уникальных значений, тем выше селективность.== Селективность выражается значением от 0 до 1, где 0 означает отсутствие селективности, а 1 — идеальную селективность. -Высокая селективность делает колонку отличным кандидатом для [[Индекс в БД|индексирования]], так как это уменьшает количество строк для просмотра и ускоряет поиск. Например, колонка с уникальными идентификаторами пользователей позволяет значительно улучшить производительность запросов. +Высокая селективность делает колонку отличным кандидатом для [[Индекс базы данных|индексирования]], так как это уменьшает количество строк для просмотра и ускоряет поиск. Например, колонка с уникальными идентификаторами пользователей позволяет значительно улучшить производительность запросов. Низкая селективность означает много повторяющихся значений. Например, колонка с полом пользователя ("мужской" и "женский"). Индекс на таком столбце обычно малоэффективен, но может быть полезен при использовании с другими более селективными колонками. Это помогает уменьшить объем данных для сканирования. diff --git a/dev/database/Составные индексы в БД.md b/dev/database/Составные индексы в БД.md index 0be4841c..2903da93 100644 --- a/dev/database/Составные индексы в БД.md +++ b/dev/database/Составные индексы в БД.md @@ -54,7 +54,7 @@ SELECT * FROM orders WHERE order_date >= '2024-01-01'; *** ## Мета информация **Область**:: [[../../meta/zero/00 Базы Данных|00 Базы Данных]] -**Родитель**:: [[Индекс в БД]] +**Родитель**:: [[Индекс базы данных]] **Источник**:: **Автор**:: **Создана**:: [[2024-06-16]] diff --git a/meta/people/Сальников Андрей.md b/meta/people/Сальников Андрей.md index 2e7c4734..d08e677c 100644 --- a/meta/people/Сальников Андрей.md +++ b/meta/people/Сальников Андрей.md @@ -4,6 +4,6 @@ tags: telegram: work place: position: -date: "[[2024-03-31]]" +date: 2024-03-31 aliases: [] --- diff --git a/meta/zero/00 Базы Данных.md b/meta/zero/00 Базы Данных.md index 9edf2783..3434cd36 100644 --- a/meta/zero/00 Базы Данных.md +++ b/meta/zero/00 Базы Данных.md @@ -13,7 +13,7 @@ linked: - [Репликация БД](../../dev/architecture/highload/Репликация%20БД.md) - [Резервные копии БД](Резервные%20копии%20БД.md) - [Транзакция БД](../../dev/database/Транзакция%20БД.md) -- [[../../dev/database/Индекс в БД|Индекс в БД]] +- [[../../dev/database/Индекс базы данных|Индекс базы данных]] - [[../../dev/database/postgresql/Индекс в PostgreSQL|Индекс в PostgreSQL]] - [[../../../../_inbox/Индекс в MySQL|Индекс в MySQL]]