From 55c84d13132df88fa9e009b19ce0555c32591020 Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Wed, 19 Jun 2024 19:53:52 +0300 Subject: [PATCH] vault backup: 2024-06-19 19:53:52 --- .obsidian/plugins/home-tab/data.json | 16 +++---- .../plugins/recent-files-obsidian/data.json | 48 +++++++++---------- _inbox/Memcached.md | 2 + _inbox/Read uncommitted.md | 10 ++++ _inbox/Грязное чтение.md | 15 ++++++ .../database/Уровни изоляций транзакций БД.md | 2 +- wiki/zero/00 NoSQL.md | 2 +- 7 files changed, 61 insertions(+), 34 deletions(-) create mode 100644 _inbox/Read uncommitted.md create mode 100644 _inbox/Грязное чтение.md diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index 54a45b0f..18431004 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -24,24 +24,24 @@ "unresolvedLinks": false, "recentFilesStore": [ { - "filepath": "_inbox/2024-06-19 1718815670.md", - "timestamp": 1718815671002 + "filepath": "_inbox/Грязное чтение.md", + "timestamp": 1718816024825 }, { - "filepath": "knowledge/dev/database/Свойства транзакции БД (ACID).md", - "timestamp": 1718814979937 + "filepath": "_inbox/Read uncommitted.md", + "timestamp": 1718816022761 }, { - "filepath": "notes/Собеседования/Вопросы для собеседование Java.md", - "timestamp": 1718814799016 + "filepath": "knowledge/dev/database/Уровни изоляций транзакций БД.md", + "timestamp": 1718816010418 }, { "filepath": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md", - "timestamp": 1718814669402 + "timestamp": 1718815991051 }, { "filepath": "_inbox/Транзакция БД.md", - "timestamp": 1718814668262 + "timestamp": 1718815984227 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 97f58efb..9795e12a 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,5 +1,29 @@ { "recentFiles": [ + { + "basename": "Грязное чтение", + "path": "_inbox/Грязное чтение.md" + }, + { + "basename": "Read uncommitted", + "path": "_inbox/Read uncommitted.md" + }, + { + "basename": "Уровни изоляций транзакций БД", + "path": "knowledge/dev/database/Уровни изоляций транзакций БД.md" + }, + { + "basename": "Проблемы при параллельном выполнении нескольких транзакций", + "path": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md" + }, + { + "basename": "Транзакция БД", + "path": "_inbox/Транзакция БД.md" + }, + { + "basename": "Memcached", + "path": "_inbox/Memcached.md" + }, { "basename": "00 NoSQL", "path": "wiki/zero/00 NoSQL.md" @@ -12,14 +36,6 @@ "basename": "Вопросы для собеседование Java", "path": "notes/Собеседования/Вопросы для собеседование Java.md" }, - { - "basename": "Проблемы при параллельном выполнении нескольких транзакций", - "path": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md" - }, - { - "basename": "Транзакция БД", - "path": "_inbox/Транзакция БД.md" - }, { "basename": "Микросервисы. Паттерны разработки и рефакторинга", "path": "notes/Микросервисы. Паттерны разработки и рефакторинга.md" @@ -176,10 +192,6 @@ "basename": "Pasted image 20240617194938", "path": "meta/files/Pasted image 20240617194938.png" }, - { - "basename": "Memcached", - "path": "_inbox/Memcached.md" - }, { "basename": "Redis", "path": "_inbox/Redis.md" @@ -187,18 +199,6 @@ { "basename": "Fingerprint файлов", "path": "_inbox/Fingerprint файлов.md" - }, - { - "basename": "Generational Collection", - "path": "knowledge/dev/java/gc/Generational Collection.md" - }, - { - "basename": "Стресс", - "path": "knowledge/human/Стресс.md" - }, - { - "basename": "Репликация в MySQL", - "path": "_inbox/Репликация в MySQL.md" } ], "omittedPaths": [], diff --git a/_inbox/Memcached.md b/_inbox/Memcached.md index bae96e81..0704248e 100644 --- a/_inbox/Memcached.md +++ b/_inbox/Memcached.md @@ -50,5 +50,7 @@ Memcached не является надежным хранилищем – воз Для распределения нагрузки и достижения отказоустойчивости вместо одного сервера memcached используется кластер из таких серверов. Сервера, входящие в кластер, могут быть сконфигурированы с различным объемом памяти, при этом общий объем кэша будет равен сумме объемов кэшей всех memcached, входящих в кластер. Процесс memcached может быть запущен на сервере, где слабо используется процессор и не загружена до предела сеть (например, на файловом сервере). При высокой нагрузке на процессор memcached может не успевать достаточно быстро отвечать на запросы, что приводит к деградации сервиса. При работе с кластером ключи распределяются по серверам, то есть каждый сервер обрабатывает часть общего массива ключей проекта. Отказоустойчивость следует из того факта, что в случае отказа одного из серверов ключи будут перераспределены по оставшимся серверам кластера. При этом, конечно же, содержимое отказавшего сервера будет потеряно (см. раздел «Потеря ключей»). Вслучае необходимости важные ключи можно хранить не на одном сервере, а дублировать на нескольких, так можно минимизировать последствия падения сервера за счет избыточности хранения. +## Заметки +- Может атомарно делать инкримент и декримент ## Дополнительные материалы - [Web, кэширование и memcached](https://highload.guide/blog/web-caching-memcached.html) diff --git a/_inbox/Read uncommitted.md b/_inbox/Read uncommitted.md new file mode 100644 index 00000000..ba9fcf02 --- /dev/null +++ b/_inbox/Read uncommitted.md @@ -0,0 +1,10 @@ +--- +aliases: +tags: + - зрелость/🌱 +date: [[2024-06-19]] +zero-link: +parents: +linked: +--- +**Read uncommitted (чтение незафиксированных данных).** Если несколько параллельных транзакций пытаются изменять одну и ту же строку таблицы, то в окончательном варианте строка будет иметь значение, определенное всем набором успешно выполненных транзакций. ^52421e \ No newline at end of file diff --git a/_inbox/Грязное чтение.md b/_inbox/Грязное чтение.md new file mode 100644 index 00000000..cde1681c --- /dev/null +++ b/_inbox/Грязное чтение.md @@ -0,0 +1,15 @@ +--- +aliases: +tags: + - зрелость/🌱 +date: + - - 2024-06-19 +zero-link: + - "[[00 Базы Данных]]" +parents: + - "[[Проблемы при параллельном выполнении нескольких транзакций]]" +linked: +--- +**«Грязное» чтение** (dirty reads) — в результатах запроса появляются промежуточные результаты параллельной транзакции, которая ещё не завершилась. + +Эта проблема наблюдается при уровне изоляции `READ_UNCOMMITTED`. \ No newline at end of file diff --git a/knowledge/dev/database/Уровни изоляций транзакций БД.md b/knowledge/dev/database/Уровни изоляций транзакций БД.md index 184f4b4c..9204dd3a 100644 --- a/knowledge/dev/database/Уровни изоляций транзакций БД.md +++ b/knowledge/dev/database/Уровни изоляций транзакций БД.md @@ -10,7 +10,7 @@ parents: - "[[Транзакция БД]]" linked: --- -**Read uncommitted (чтение незафиксированных данных).** Если несколько параллельных транзакций пытаются изменять одну и ту же строку таблицы, то в окончательном варианте строка будет иметь значение, определенное всем набором успешно выполненных транзакций. +![](Read%20uncommitted.md#^52421e) **Read committed (чтение фиксированных данных).** Большинство промышленных СУБД по умолчанию используют именно этот уровень. На этом уровне обеспечивается защита от «грязного» чтения, тем не менее, в процессе работы одной транзакции другая может быть успешно завершена и сделанные ею изменения зафиксированы. В итоге первая транзакция будет работать с другим набором данных. diff --git a/wiki/zero/00 NoSQL.md b/wiki/zero/00 NoSQL.md index 88b45b2f..9ceb459b 100644 --- a/wiki/zero/00 NoSQL.md +++ b/wiki/zero/00 NoSQL.md @@ -6,4 +6,4 @@ zero-link: parents: linked: --- -- Многие \ No newline at end of file +- Многие NoSQL не поддерживают [Транзакция БД](Транзакция%20БД.md), но обладают возможностью атомарных операций. \ No newline at end of file