Оптимизация SQL в бэкенде
(продолжение предыдущего поста)
→ Оптимизация SQL обеспечивает эффективную работу запросов в бэкенде, снижает задержки и повышает общую производительность системы.
→ Плохо оптимизированный SQL приводит к медленному отклику, высокой загрузке процессора и узким местам в приложениях с высокой нагрузкой.
✓ 1. Изучение планов выполнения запросов
→ Используйте команды EXPLAIN или EXPLAIN ANALYZE, чтобы понять, как база данных выполняет запрос.
→ Помогает выявить полное сканирование таблиц, неэффективные соединения, отсутствующие индексы или ненужную сортировку.
✓ 2. Индексирование для ускорения поиска
→ Создавайте индексы для столбцов, которые часто используются в запросах (например, поля поиска, внешние ключи).
→ Используйте составные индексы при фильтрации по нескольким столбцам.
→ Избегайте избыточного индексирования: каждый индекс замедляет операции вставки, обновления и удаления.
✓ 3. Избегайте использования SELECT *
→ Выбирайте только необходимые столбцы с помощью конструкции SELECT столбец1, столбец2.
→ Это сокращает объём передаваемых данных и повышает скорость выполнения запроса.
✓ 4. Оптимизация соединений (JOIN)
→ Используйте подходящие типы соединений (INNER, LEFT, RIGHT) в зависимости от задачи.
→ Убедитесь, что столбцы, используемые в соединениях, проиндексированы.
→ Избегайте объединения слишком многих таблиц в одном запросе — при необходимости разбивайте сложную логику.
✓ 5. Эффективное использование условий WHERE
→ Применяйте фильтрацию как можно раньше, используя избирательные условия.
→ По возможности используйте индексированные столбцы в фильтрах WHERE.
→ Избегайте использования функций в WHERE (например, LOWER(name)), так как они препятствуют использованию индексов.
✓ 6. Ограничение количества возвращаемых строк
→ Используйте LIMIT или OFFSET для пагинации вместо возврата огромных наборов данных.
→ Это повышает производительность фронтенда, которому не требуется вся информация сразу.
✓ 7. Избегание проблемы N+1 запросов
→ Возникает при получении связанных данных в циклах.
→ Вместо этого используйте соединения (JOIN) или эффективные пакетные запросы.
✓ 8. Использование кэширования
→ Кэшируйте часто выполняемые запросы на чтение с помощью Redis или Memcached.
→ Это снижает нагрузку на базу данных и значительно повышает скорость работы.
✓ 9. Нормализация там, где нужно, денормализация — когда это оправдано
→ Нормализация уменьшает избыточность и повышает согласованность данных.
→ Денормализация ускоряет операции чтения при высокой нагрузке, если производительность — приоритет.
✓ 10. Оптимизация операций вставки и обновления
→ Используйте пакетные вставки вместо поочерёдной вставки строк.
→ Избегайте ненужных обновлений: проверяйте, изменились ли значения, прежде чем выполнять обновление.
✓ 11. Разделение больших таблиц
→ Разделяйте большие таблицы по дате или региону для ускорения запросов.
→ Полезно для логов, аналитики или данных временных рядов.
(продолжение предыдущего поста)
→ Оптимизация SQL обеспечивает эффективную работу запросов в бэкенде, снижает задержки и повышает общую производительность системы.
→ Плохо оптимизированный SQL приводит к медленному отклику, высокой загрузке процессора и узким местам в приложениях с высокой нагрузкой.
✓ 1. Изучение планов выполнения запросов
→ Используйте команды EXPLAIN или EXPLAIN ANALYZE, чтобы понять, как база данных выполняет запрос.
→ Помогает выявить полное сканирование таблиц, неэффективные соединения, отсутствующие индексы или ненужную сортировку.
✓ 2. Индексирование для ускорения поиска
→ Создавайте индексы для столбцов, которые часто используются в запросах (например, поля поиска, внешние ключи).
→ Используйте составные индексы при фильтрации по нескольким столбцам.
→ Избегайте избыточного индексирования: каждый индекс замедляет операции вставки, обновления и удаления.
✓ 3. Избегайте использования SELECT *
→ Выбирайте только необходимые столбцы с помощью конструкции SELECT столбец1, столбец2.
→ Это сокращает объём передаваемых данных и повышает скорость выполнения запроса.
✓ 4. Оптимизация соединений (JOIN)
→ Используйте подходящие типы соединений (INNER, LEFT, RIGHT) в зависимости от задачи.
→ Убедитесь, что столбцы, используемые в соединениях, проиндексированы.
→ Избегайте объединения слишком многих таблиц в одном запросе — при необходимости разбивайте сложную логику.
✓ 5. Эффективное использование условий WHERE
→ Применяйте фильтрацию как можно раньше, используя избирательные условия.
→ По возможности используйте индексированные столбцы в фильтрах WHERE.
→ Избегайте использования функций в WHERE (например, LOWER(name)), так как они препятствуют использованию индексов.
✓ 6. Ограничение количества возвращаемых строк
→ Используйте LIMIT или OFFSET для пагинации вместо возврата огромных наборов данных.
→ Это повышает производительность фронтенда, которому не требуется вся информация сразу.
✓ 7. Избегание проблемы N+1 запросов
→ Возникает при получении связанных данных в циклах.
→ Вместо этого используйте соединения (JOIN) или эффективные пакетные запросы.
✓ 8. Использование кэширования
→ Кэшируйте часто выполняемые запросы на чтение с помощью Redis или Memcached.
→ Это снижает нагрузку на базу данных и значительно повышает скорость работы.
✓ 9. Нормализация там, где нужно, денормализация — когда это оправдано
→ Нормализация уменьшает избыточность и повышает согласованность данных.
→ Денормализация ускоряет операции чтения при высокой нагрузке, если производительность — приоритет.
✓ 10. Оптимизация операций вставки и обновления
→ Используйте пакетные вставки вместо поочерёдной вставки строк.
→ Избегайте ненужных обновлений: проверяйте, изменились ли значения, прежде чем выполнять обновление.
✓ 11. Разделение больших таблиц
→ Разделяйте большие таблицы по дате или региону для ускорения запросов.
→ Полезно для логов, аналитики или данных временных рядов.
Telegram
METANIT.COM
Оптимизация SQL в бэкенде
(продолжение в следующем посте)
(продолжение в следующем посте)
👍11🍓4❤2👏2
Microsoft наконец признала, что почти все основные функции Windows 11 сломаны
Microsoft официально признала серьёзные проблемы в Windows 11, заявив, что почти все ключевые основные функции системы не работают из-за ошибок в компонентах XAML и обновлениях пакетов. Это подтверждение появилось в статье поддержки (KB5072911) после сбоев, начавшихся с обновления Patch Tuesday от июля 2025 года (KB5062553). Проблемы затрагивают оболочку системы (Shell) и влияют на версии Windows 11 24H2 и более новую 25H2, которые используют один и тот же код.
Сломанные функции:
Проблемы связаны с компонентами XAML и обновлениями пакетов MicrosoftWindows.Client.CBS_cw5n1h2txyewy, Microsoft.UI.Xaml.CBS_8wekyb3d8bbwe и MicrosoftWindows.Client.Core_cw5n1h2txyewy. Затронутые элементы оболочки включают меню "Пуск", панель задач, проводник и настройки Windows. Конкретные симптомы:
- Сбои explorer.exe;
- Сбои shelhost.exe;
- Проблемы с StartMenuExperienceHost;
- Настройки системы не запускаются молча;
- Сбои приложений при инициализации XAML-видов;
- Проводник работает, но панель задач не отображается;
- Неудачная инициализация других XAML-островов;
- Сбои ImmersiveShell.
Эти ошибки возникают при первом входе пользователя после накопительного обновления или в непостоянных установках ОС, таких как виртуальная инфраструктура настольных систем (VDI).
Microsoft поясняет: "После установки на ПК ежемесячного накопительного обновления Windows 11 версии 24H2, выпущенного в июле 2025 года или позже (KB5062553), различные приложения, такие как StartMenuExperienceHost, Поиск, Системные настройки, панель задач или Проводник, могут испытывать трудности".
При этом пользователи сталкиваются с серьёзными нарушениями в базовых функциях Windows: невозможностью доступа к меню "Пуск", панели задач, проводнику или настройкам. Это особенно заметно при входе после обновлений, в сценариях VDI, где пакеты нужно переустанавливать при каждом входе. Проблемы длятся уже четыре месяца с июля 2025 года, вызывая сбои, тихие отказы и неполную инициализацию интерфейса, что сильно затрудняет повседневную работу.
В Microsoft завявилии, что работают над исправлением, но пока предлагают обходные пути. Один из них — перезапуск службы Shell Infrastructure host (SIHost.exe) с помощью команд PowerShell для регистрации затронутых пакетов:
-
-
-
Второй вариант — скрипт PowerShell для входа (в формате batch-файла), который блокирует запуск проводника до установки пакетов и выполняет аналогичные команды регистрации.
https://www.neowin.net/news/microsoft-finally-admits-almost-all-major-windows-11-core-features-are-broken/
Microsoft официально признала серьёзные проблемы в Windows 11, заявив, что почти все ключевые основные функции системы не работают из-за ошибок в компонентах XAML и обновлениях пакетов. Это подтверждение появилось в статье поддержки (KB5072911) после сбоев, начавшихся с обновления Patch Tuesday от июля 2025 года (KB5062553). Проблемы затрагивают оболочку системы (Shell) и влияют на версии Windows 11 24H2 и более новую 25H2, которые используют один и тот же код.
Сломанные функции:
Проблемы связаны с компонентами XAML и обновлениями пакетов MicrosoftWindows.Client.CBS_cw5n1h2txyewy, Microsoft.UI.Xaml.CBS_8wekyb3d8bbwe и MicrosoftWindows.Client.Core_cw5n1h2txyewy. Затронутые элементы оболочки включают меню "Пуск", панель задач, проводник и настройки Windows. Конкретные симптомы:
- Сбои explorer.exe;
- Сбои shelhost.exe;
- Проблемы с StartMenuExperienceHost;
- Настройки системы не запускаются молча;
- Сбои приложений при инициализации XAML-видов;
- Проводник работает, но панель задач не отображается;
- Неудачная инициализация других XAML-островов;
- Сбои ImmersiveShell.
Эти ошибки возникают при первом входе пользователя после накопительного обновления или в непостоянных установках ОС, таких как виртуальная инфраструктура настольных систем (VDI).
Microsoft поясняет: "После установки на ПК ежемесячного накопительного обновления Windows 11 версии 24H2, выпущенного в июле 2025 года или позже (KB5062553), различные приложения, такие как StartMenuExperienceHost, Поиск, Системные настройки, панель задач или Проводник, могут испытывать трудности".
При этом пользователи сталкиваются с серьёзными нарушениями в базовых функциях Windows: невозможностью доступа к меню "Пуск", панели задач, проводнику или настройкам. Это особенно заметно при входе после обновлений, в сценариях VDI, где пакеты нужно переустанавливать при каждом входе. Проблемы длятся уже четыре месяца с июля 2025 года, вызывая сбои, тихие отказы и неполную инициализацию интерфейса, что сильно затрудняет повседневную работу.
В Microsoft завявилии, что работают над исправлением, но пока предлагают обходные пути. Один из них — перезапуск службы Shell Infrastructure host (SIHost.exe) с помощью команд PowerShell для регистрации затронутых пакетов:
-
Add-AppxPackage -Register -Path 'C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\appxmanifest.xml' -DisableDevelopmentMode;-
Add-AppxPackage -Register -Path 'C:\Windows\SystemApps\Microsoft.UI.Xaml.CBS_8wekyb3d8bbwe\appxmanifest.xml' -DisableDevelopmentMode;-
Add-AppxPackage -Register -Path 'C:\Windows\SystemApps\MicrosoftWindows.Client.Core_cw5n1h2txyewy\appxmanifest.xml' -DisableDevelopmentMode.Второй вариант — скрипт PowerShell для входа (в формате batch-файла), который блокирует запуск проводника до установки пакетов и выполняет аналогичные команды регистрации.
https://www.neowin.net/news/microsoft-finally-admits-almost-all-major-windows-11-core-features-are-broken/
Neowin
Microsoft finally admits almost all major Windows 11 core features are broken [Update]
Microsoft has confirmed that Windows 11 Shell and every associated core feature and element are actually broken, and have been like this for many months.
🤡35😁17❤🔥2🤯2🤬2❤1💔1
8 наиболее распространённых типов кибератак
(описание предыдущего поста)
1. Phishing Attack (Фишинговая атака)
* Суть: обманные письма, сообщения или сайты для получения конфиденциальной информации.
* Механизм: злоумышленник отправляет фишинговую ссылку → пользователь открывает её → хакер собирает учётные данные → использует их.
2. Ransomware (Программа-вымогатель)
* Суть: ПО, шифрующее файлы с требованием выкупа за их разблокировку.
* Механизм: заражение через инфицированный носитель → пользователь заражается → данные блокируются → требование выкупа.
3. Denial-of-Service (DoS) (Отказ в обслуживании)
* Суть: перегрузка системы или сети для нарушения их работы.
* Механизм: хакер использует бот для отправки ложного трафика на сервер → целевая система перегружается.
4. Man-in-the-Middle (MitM) (Человек посередине)
* Суть: перехват и изменение коммуникации между двумя сторонами без их ведома.
* Механизм: злоумышленник перехватывает оригинальное соединение между пользователем и веб-приложением.
5. SQL Injection (Внедрение SQL-кода)
* Суть: эксплуатация уязвимостей в запросах к базе данных для получения несанкционированного доступа.
* Механизм: хакер внедряет вредоносный SQL-запрос → сервер возвращает данные всех пользователей атакующему.
6. Cross-Site Scripting (XSS) (Межсайтовый скриптинг)
* Суть: внедрение вредоносных скриптов на веб-сайты, просматриваемые другими пользователями.
* Механизм: злоумышленник внедряет скрипт в базу данных → сервер отправляет заражённый код пользователям.
7. Zero-Day Exploits (Эксплойты нулевого дня)
* Суть: атаки, использующие неизвестные уязвимости до того, как разработчики успеют их устранить.
* Механизм: существует уязвимость → хакер её обнаруживает → запускает атаку → разработчики обнаруживают атаку, но не имеют времени на устранение.
8. DNS Spoofing (Подмена DNS)
* Суть: перенаправление DNS-запросов на вредоносные сайты для несанкционированного доступа.
* Механизм: злоумышленник внедряет поддельную DNS-запись → пользователь запрашивает реальный сайт → запрос перенаправляется на поддельный сайт.
(описание предыдущего поста)
1. Phishing Attack (Фишинговая атака)
* Суть: обманные письма, сообщения или сайты для получения конфиденциальной информации.
* Механизм: злоумышленник отправляет фишинговую ссылку → пользователь открывает её → хакер собирает учётные данные → использует их.
2. Ransomware (Программа-вымогатель)
* Суть: ПО, шифрующее файлы с требованием выкупа за их разблокировку.
* Механизм: заражение через инфицированный носитель → пользователь заражается → данные блокируются → требование выкупа.
3. Denial-of-Service (DoS) (Отказ в обслуживании)
* Суть: перегрузка системы или сети для нарушения их работы.
* Механизм: хакер использует бот для отправки ложного трафика на сервер → целевая система перегружается.
4. Man-in-the-Middle (MitM) (Человек посередине)
* Суть: перехват и изменение коммуникации между двумя сторонами без их ведома.
* Механизм: злоумышленник перехватывает оригинальное соединение между пользователем и веб-приложением.
5. SQL Injection (Внедрение SQL-кода)
* Суть: эксплуатация уязвимостей в запросах к базе данных для получения несанкционированного доступа.
* Механизм: хакер внедряет вредоносный SQL-запрос → сервер возвращает данные всех пользователей атакующему.
6. Cross-Site Scripting (XSS) (Межсайтовый скриптинг)
* Суть: внедрение вредоносных скриптов на веб-сайты, просматриваемые другими пользователями.
* Механизм: злоумышленник внедряет скрипт в базу данных → сервер отправляет заражённый код пользователям.
7. Zero-Day Exploits (Эксплойты нулевого дня)
* Суть: атаки, использующие неизвестные уязвимости до того, как разработчики успеют их устранить.
* Механизм: существует уязвимость → хакер её обнаруживает → запускает атаку → разработчики обнаруживают атаку, но не имеют времени на устранение.
8. DNS Spoofing (Подмена DNS)
* Суть: перенаправление DNS-запросов на вредоносные сайты для несанкционированного доступа.
* Механизм: злоумышленник внедряет поддельную DNS-запись → пользователь запрашивает реальный сайт → запрос перенаправляется на поддельный сайт.
Telegram
METANIT.COM
8 наиболее распространённых типов кибератак
(описание в следующем посте)
(описание в следующем посте)
❤🔥11❤2🔥2
3 типа шардирования базы данных:
* На основе диапазонов (range‑based)
* На основе хеширования (hash‑based)
* На основе арендаторов (tenant‑based)
Шардирование на основе диапазонов разделяет данные исходя из диапазонов значений ключа.
Шардирование на основе хеширования применяет хеш‑функцию к ключу шардирования, чтобы определить, в каком шарде хранятся данные.
Шардирование на основе арендаторов предоставляет каждому арендатору собственную базу данных.
* На основе диапазонов (range‑based)
* На основе хеширования (hash‑based)
* На основе арендаторов (tenant‑based)
Шардирование на основе диапазонов разделяет данные исходя из диапазонов значений ключа.
Шардирование на основе хеширования применяет хеш‑функцию к ключу шардирования, чтобы определить, в каком шарде хранятся данные.
Шардирование на основе арендаторов предоставляет каждому арендатору собственную базу данных.
🥴5❤3👏3🔥2
❤24🔥2👏1
❤5🔥2👏1💩1
Как работает сборщик мусора (Garbage Collector) в Java #java
(продолжение предыдущего поста)
Java использует систему автоматического управления памятью, которая называется сборщиком мусора (Garbage Collector, GC). Она освобождает память, занятую объектами, которые больше не нужны. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложений.
Во время выполнения программы:
→ Виртуальная машина Java (JVM) постоянно отслеживает ссылки на объекты, чтобы определить, какие из них всё ещё доступны из активных потоков и исполняемого кода.
→ Объекты, к которым больше нет доступа, помечаются как подходящие для сборки мусора.
→ Сборщик мусора использует такие алгоритмы, как «Маркировка и очистка» (Mark‑and‑Sweep), «Копирование» (Copying) и «Поколение» (Generational Collection), чтобы выявить неиспользованные объекты и освободить занятую ими память.
→ Молодое поколение (Young Generation) часто обрабатывается с помощью быстрых и эффективных циклов малой сборки мусора (minor GC).
→ Объекты, пережившие несколько циклов, перемещаются в старое поколение (Old Generation), где с долгоживущими объектами работают циклы основной сборки мусора (major GC).
→ После очистки сборщик мусора уплотняет память, чтобы уменьшить фрагментацию и повысить производительность при выделении памяти.
→ Весь процесс выполняется автоматически, позволяя разработчикам на Java сосредоточиться на написании кода без ручного освобождения памяти.
Результат: Java обеспечивает стабильное и эффективное использование памяти, автоматически обнаруживая неиспользованные объекты и освобождая занятое ими пространство посредством оптимизированных циклов сборки мусора.
(продолжение предыдущего поста)
Java использует систему автоматического управления памятью, которая называется сборщиком мусора (Garbage Collector, GC). Она освобождает память, занятую объектами, которые больше не нужны. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложений.
Во время выполнения программы:
→ Виртуальная машина Java (JVM) постоянно отслеживает ссылки на объекты, чтобы определить, какие из них всё ещё доступны из активных потоков и исполняемого кода.
→ Объекты, к которым больше нет доступа, помечаются как подходящие для сборки мусора.
→ Сборщик мусора использует такие алгоритмы, как «Маркировка и очистка» (Mark‑and‑Sweep), «Копирование» (Copying) и «Поколение» (Generational Collection), чтобы выявить неиспользованные объекты и освободить занятую ими память.
→ Молодое поколение (Young Generation) часто обрабатывается с помощью быстрых и эффективных циклов малой сборки мусора (minor GC).
→ Объекты, пережившие несколько циклов, перемещаются в старое поколение (Old Generation), где с долгоживущими объектами работают циклы основной сборки мусора (major GC).
→ После очистки сборщик мусора уплотняет память, чтобы уменьшить фрагментацию и повысить производительность при выделении памяти.
→ Весь процесс выполняется автоматически, позволяя разработчикам на Java сосредоточиться на написании кода без ручного освобождения памяти.
Результат: Java обеспечивает стабильное и эффективное использование памяти, автоматически обнаруживая неиспользованные объекты и освобождая занятое ими пространство посредством оптимизированных циклов сборки мусора.
Telegram
METANIT.COM
Как работает сборщик мусора (Garbage Collector) в Java #java
(продолжение в следующем посте)
(продолжение в следующем посте)
❤11🔥2🥰1
RAG - это генерация с дополнением посредством поиска (Retrieval Augmented Generation)
Вот как это работает на практике:
Knowledge Sources (Источники знаний) → PDF‑файлы, документы, базы данных
Embeddings (Векторные представления) → ваши данные разбиваются на фрагменты и преобразуются в векторы
Vector Database (Векторная база данных) → хранит всё для быстрого поиска
Retrieval (Поиск) → находит наиболее релевантный контекст (топ‑k результатов)
Augmentation (Дополнение) → запрос + контекст = более эффективный промпт
Generation (Генерация) → выдаёт точные ответы, основанные на контексте
Вот как это работает на практике:
Knowledge Sources (Источники знаний) → PDF‑файлы, документы, базы данных
Embeddings (Векторные представления) → ваши данные разбиваются на фрагменты и преобразуются в векторы
Vector Database (Векторная база данных) → хранит всё для быстрого поиска
Retrieval (Поиск) → находит наиболее релевантный контекст (топ‑k результатов)
Augmentation (Дополнение) → запрос + контекст = более эффективный промпт
Generation (Генерация) → выдаёт точные ответы, основанные на контексте
❤4👍2👏1
Что такое ACID
(продолжение предыдущего поста)
ACID - набор свойств, которые обеспечивают надежность и целостность данных при обработке транзакций в системах управления базами данных (СУБД). ACID расшифровывается как Atomicity (атомарность), Consistency (согласованность), Isolation (изолированность), Durability (долговечность)
1. Atomicity (Атомарность) — «Всё или ничего» (верхний левый угол):
* Гарантирует, что транзакция либо выполняется полностью, либо не выполняется вовсе.
* Если транзакция не может быть завершена, СУБД откатывает все изменения (возвращает базу данных к предыдущему состоянию).
* На схеме показан пример транзакции с операциями
2. Consistency (Согласованность) — «Сохранение инвариантов базы данных» (верхний правый угол):
* Обеспечивает, что каждая транзакция переводит базу данных из одного согласованного состояния в другое.
* Транзакции не нарушают правила целостности данных.
* На схеме показано, как база данных переходит из consistent state A (согласованное состояние A) в consistent state B (согласованное состояние B) через выполнение транзакций.
3. Isolation (Изолированность) — «Параллельные транзакции изолированы друг от друга» (нижний левый угол):
* Гарантирует, что каждая транзакция выполняется независимо от других, без видимости промежуточных изменений.
* Это предотвращает конфликты между транзакциями.
* На схеме изображены две транзакции (Transaction A и Transaction B), которые выполняются изолированно, не влияя друг на друга.
4. Durability (Долговечность) — «Данные сохраняются после фиксации транзакции даже при сбое системы» (нижний правый угол):
* Гарантирует, что изменения, внесённые транзакцией, сохраняются и становятся постоянными.
* Даже если система выйдет из строя после фиксации транзакции, данные останутся доступными.
* На схеме показан процесс:
1. Фиксация транзакции (commit).
2. Репликация данных на копии базы (replica a, replica b), что обеспечивает сохранность информации.
#database #sql
(продолжение предыдущего поста)
ACID - набор свойств, которые обеспечивают надежность и целостность данных при обработке транзакций в системах управления базами данных (СУБД). ACID расшифровывается как Atomicity (атомарность), Consistency (согласованность), Isolation (изолированность), Durability (долговечность)
1. Atomicity (Атомарность) — «Всё или ничего» (верхний левый угол):
* Гарантирует, что транзакция либо выполняется полностью, либо не выполняется вовсе.
* Если транзакция не может быть завершена, СУБД откатывает все изменения (возвращает базу данных к предыдущему состоянию).
* На схеме показан пример транзакции с операциями
write 1, write 2, write 3, write 4, которые либо все фиксируются (commit all), либо отменяются (or nothing).2. Consistency (Согласованность) — «Сохранение инвариантов базы данных» (верхний правый угол):
* Обеспечивает, что каждая транзакция переводит базу данных из одного согласованного состояния в другое.
* Транзакции не нарушают правила целостности данных.
* На схеме показано, как база данных переходит из consistent state A (согласованное состояние A) в consistent state B (согласованное состояние B) через выполнение транзакций.
3. Isolation (Изолированность) — «Параллельные транзакции изолированы друг от друга» (нижний левый угол):
* Гарантирует, что каждая транзакция выполняется независимо от других, без видимости промежуточных изменений.
* Это предотвращает конфликты между транзакциями.
* На схеме изображены две транзакции (Transaction A и Transaction B), которые выполняются изолированно, не влияя друг на друга.
4. Durability (Долговечность) — «Данные сохраняются после фиксации транзакции даже при сбое системы» (нижний правый угол):
* Гарантирует, что изменения, внесённые транзакцией, сохраняются и становятся постоянными.
* Даже если система выйдет из строя после фиксации транзакции, данные останутся доступными.
* На схеме показан процесс:
1. Фиксация транзакции (commit).
2. Репликация данных на копии базы (replica a, replica b), что обеспечивает сохранность информации.
#database #sql
Telegram
METANIT.COM
Что такое ACID
(продолжение в следующем посте)
(продолжение в следующем посте)
❤6🔥4❤🔥3
Формулы переносов по оси X и Y (Трансляции/переносы или Translations):
- g(x) = f(x) + a — сдвиг графика функции f(x) вверх вдоль оси Oy на величину a.
- g(x) = f(x) – a — сдвиг графика функции f(x) вниз вдоль оси Oy на величину a.
- g(x) = f(x – a) — сдвиг графика функции f(x) вправо вдоль оси Ox на величину a.
- g(x) = f(x + a) — сдвиг графика функции f(x) влево вдоль оси Ox на величину a.
- g(x) = f(x) + a — сдвиг графика функции f(x) вверх вдоль оси Oy на величину a.
- g(x) = f(x) – a — сдвиг графика функции f(x) вниз вдоль оси Oy на величину a.
- g(x) = f(x – a) — сдвиг графика функции f(x) вправо вдоль оси Ox на величину a.
- g(x) = f(x + a) — сдвиг графика функции f(x) влево вдоль оси Ox на величину a.
🥱12🔥11👍5🤓4🖕1