vault backup: 2024-06-19 19:53:52
This commit is contained in:
parent
6b16ad232e
commit
55c84d1313
16
.obsidian/plugins/home-tab/data.json
vendored
16
.obsidian/plugins/home-tab/data.json
vendored
@ -24,24 +24,24 @@
|
|||||||
"unresolvedLinks": false,
|
"unresolvedLinks": false,
|
||||||
"recentFilesStore": [
|
"recentFilesStore": [
|
||||||
{
|
{
|
||||||
"filepath": "_inbox/2024-06-19 1718815670.md",
|
"filepath": "_inbox/Грязное чтение.md",
|
||||||
"timestamp": 1718815671002
|
"timestamp": 1718816024825
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filepath": "knowledge/dev/database/Свойства транзакции БД (ACID).md",
|
"filepath": "_inbox/Read uncommitted.md",
|
||||||
"timestamp": 1718814979937
|
"timestamp": 1718816022761
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filepath": "notes/Собеседования/Вопросы для собеседование Java.md",
|
"filepath": "knowledge/dev/database/Уровни изоляций транзакций БД.md",
|
||||||
"timestamp": 1718814799016
|
"timestamp": 1718816010418
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filepath": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md",
|
"filepath": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md",
|
||||||
"timestamp": 1718814669402
|
"timestamp": 1718815991051
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filepath": "_inbox/Транзакция БД.md",
|
"filepath": "_inbox/Транзакция БД.md",
|
||||||
"timestamp": 1718814668262
|
"timestamp": 1718815984227
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"bookmarkedFileStore": [],
|
"bookmarkedFileStore": [],
|
||||||
|
@ -1,5 +1,29 @@
|
|||||||
{
|
{
|
||||||
"recentFiles": [
|
"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",
|
"basename": "00 NoSQL",
|
||||||
"path": "wiki/zero/00 NoSQL.md"
|
"path": "wiki/zero/00 NoSQL.md"
|
||||||
@ -12,14 +36,6 @@
|
|||||||
"basename": "Вопросы для собеседование Java",
|
"basename": "Вопросы для собеседование Java",
|
||||||
"path": "notes/Собеседования/Вопросы для собеседование Java.md"
|
"path": "notes/Собеседования/Вопросы для собеседование Java.md"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"basename": "Проблемы при параллельном выполнении нескольких транзакций",
|
|
||||||
"path": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"basename": "Транзакция БД",
|
|
||||||
"path": "_inbox/Транзакция БД.md"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"basename": "Микросервисы. Паттерны разработки и рефакторинга",
|
"basename": "Микросервисы. Паттерны разработки и рефакторинга",
|
||||||
"path": "notes/Микросервисы. Паттерны разработки и рефакторинга.md"
|
"path": "notes/Микросервисы. Паттерны разработки и рефакторинга.md"
|
||||||
@ -176,10 +192,6 @@
|
|||||||
"basename": "Pasted image 20240617194938",
|
"basename": "Pasted image 20240617194938",
|
||||||
"path": "meta/files/Pasted image 20240617194938.png"
|
"path": "meta/files/Pasted image 20240617194938.png"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"basename": "Memcached",
|
|
||||||
"path": "_inbox/Memcached.md"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"basename": "Redis",
|
"basename": "Redis",
|
||||||
"path": "_inbox/Redis.md"
|
"path": "_inbox/Redis.md"
|
||||||
@ -187,18 +199,6 @@
|
|||||||
{
|
{
|
||||||
"basename": "Fingerprint файлов",
|
"basename": "Fingerprint файлов",
|
||||||
"path": "_inbox/Fingerprint файлов.md"
|
"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": [],
|
"omittedPaths": [],
|
||||||
|
@ -50,5 +50,7 @@ Memcached не является надежным хранилищем – воз
|
|||||||
Для распределения нагрузки и достижения отказоустойчивости вместо одного сервера memcached используется кластер из таких серверов. Сервера, входящие в кластер, могут быть сконфигурированы с различным объемом памяти, при этом общий объем кэша будет равен сумме объемов кэшей всех memcached, входящих в кластер. Процесс memcached может быть запущен на сервере, где слабо используется процессор и не загружена до предела сеть (например, на файловом сервере). При высокой нагрузке на процессор memcached может не успевать достаточно быстро отвечать на запросы, что приводит к деградации сервиса.
|
Для распределения нагрузки и достижения отказоустойчивости вместо одного сервера memcached используется кластер из таких серверов. Сервера, входящие в кластер, могут быть сконфигурированы с различным объемом памяти, при этом общий объем кэша будет равен сумме объемов кэшей всех memcached, входящих в кластер. Процесс memcached может быть запущен на сервере, где слабо используется процессор и не загружена до предела сеть (например, на файловом сервере). При высокой нагрузке на процессор memcached может не успевать достаточно быстро отвечать на запросы, что приводит к деградации сервиса.
|
||||||
|
|
||||||
При работе с кластером ключи распределяются по серверам, то есть каждый сервер обрабатывает часть общего массива ключей проекта. Отказоустойчивость следует из того факта, что в случае отказа одного из серверов ключи будут перераспределены по оставшимся серверам кластера. При этом, конечно же, содержимое отказавшего сервера будет потеряно (см. раздел «Потеря ключей»). Вслучае необходимости важные ключи можно хранить не на одном сервере, а дублировать на нескольких, так можно минимизировать последствия падения сервера за счет избыточности хранения.
|
При работе с кластером ключи распределяются по серверам, то есть каждый сервер обрабатывает часть общего массива ключей проекта. Отказоустойчивость следует из того факта, что в случае отказа одного из серверов ключи будут перераспределены по оставшимся серверам кластера. При этом, конечно же, содержимое отказавшего сервера будет потеряно (см. раздел «Потеря ключей»). Вслучае необходимости важные ключи можно хранить не на одном сервере, а дублировать на нескольких, так можно минимизировать последствия падения сервера за счет избыточности хранения.
|
||||||
|
## Заметки
|
||||||
|
- Может атомарно делать инкримент и декримент
|
||||||
## Дополнительные материалы
|
## Дополнительные материалы
|
||||||
- [Web, кэширование и memcached](https://highload.guide/blog/web-caching-memcached.html)
|
- [Web, кэширование и memcached](https://highload.guide/blog/web-caching-memcached.html)
|
||||||
|
10
_inbox/Read uncommitted.md
Normal file
10
_inbox/Read uncommitted.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
tags:
|
||||||
|
- зрелость/🌱
|
||||||
|
date: [[2024-06-19]]
|
||||||
|
zero-link:
|
||||||
|
parents:
|
||||||
|
linked:
|
||||||
|
---
|
||||||
|
**Read uncommitted (чтение незафиксированных данных).** Если несколько параллельных транзакций пытаются изменять одну и ту же строку таблицы, то в окончательном варианте строка будет иметь значение, определенное всем набором успешно выполненных транзакций. ^52421e
|
15
_inbox/Грязное чтение.md
Normal file
15
_inbox/Грязное чтение.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
tags:
|
||||||
|
- зрелость/🌱
|
||||||
|
date:
|
||||||
|
- - 2024-06-19
|
||||||
|
zero-link:
|
||||||
|
- "[[00 Базы Данных]]"
|
||||||
|
parents:
|
||||||
|
- "[[Проблемы при параллельном выполнении нескольких транзакций]]"
|
||||||
|
linked:
|
||||||
|
---
|
||||||
|
**«Грязное» чтение** (dirty reads) — в результатах запроса появляются промежуточные результаты параллельной транзакции, которая ещё не завершилась.
|
||||||
|
|
||||||
|
Эта проблема наблюдается при уровне изоляции `READ_UNCOMMITTED`.
|
@ -10,7 +10,7 @@ parents:
|
|||||||
- "[[Транзакция БД]]"
|
- "[[Транзакция БД]]"
|
||||||
linked:
|
linked:
|
||||||
---
|
---
|
||||||
**Read uncommitted (чтение незафиксированных данных).** Если несколько параллельных транзакций пытаются изменять одну и ту же строку таблицы, то в окончательном варианте строка будет иметь значение, определенное всем набором успешно выполненных транзакций.
|
![](Read%20uncommitted.md#^52421e)
|
||||||
|
|
||||||
**Read committed (чтение фиксированных данных).** Большинство промышленных СУБД по умолчанию используют именно этот уровень. На этом уровне обеспечивается защита от «грязного» чтения, тем не менее, в процессе работы одной транзакции другая может быть успешно завершена и сделанные ею изменения зафиксированы. В итоге первая транзакция будет работать с другим набором данных.
|
**Read committed (чтение фиксированных данных).** Большинство промышленных СУБД по умолчанию используют именно этот уровень. На этом уровне обеспечивается защита от «грязного» чтения, тем не менее, в процессе работы одной транзакции другая может быть успешно завершена и сделанные ею изменения зафиксированы. В итоге первая транзакция будет работать с другим набором данных.
|
||||||
|
|
||||||
|
@ -6,4 +6,4 @@ zero-link:
|
|||||||
parents:
|
parents:
|
||||||
linked:
|
linked:
|
||||||
---
|
---
|
||||||
- Многие
|
- Многие NoSQL не поддерживают [Транзакция БД](Транзакция%20БД.md), но обладают возможностью атомарных операций.
|
Loading…
Reference in New Issue
Block a user