SQL Transactions Saint Petersburg, 2019 презентация

Содержание

Слайд 2

Содержимое Транзакции Уровни изоляции транзакций Locking Savepoints Spring Transactional Distributed DBs

Содержимое
Транзакции
Уровни изоляции транзакций
Locking
Savepoints
Spring Transactional
Distributed DBs

Слайд 3

Что такое транзакция? Транзакция – …

Что такое транзакция?
Транзакция – …

Слайд 4

Что такое транзакция? Транзакция – группа логически объединённых последовательных операций

Что такое транзакция?
Транзакция – группа логически объединённых последовательных операций по работе

с данными, обрабатываемая или отменяемая целиком.
Типичный пример транзакции – банковский перевод
Слайд 5

ACID ACID – требования к транзакционной системе Atomicity Consistency Isolation Durability

ACID
ACID – требования к транзакционной системе
Atomicity
Consistency
Isolation
Durability

Слайд 6

Содержимое Транзакции Уровни изоляции транзакций Locking Savepoints Spring Transactional Distributed DBs

Содержимое
Транзакции
Уровни изоляции транзакций
Locking
Savepoints
Spring Transactional
Distributed DBs

Слайд 7

Проблемы параллельного выполнения транзакций Lost update Dirty read Non-repeatable read Phantom read

Проблемы параллельного выполнения транзакций

Lost update
Dirty read
Non-repeatable read
Phantom read

Слайд 8

Lost update

Lost update

Слайд 9

Dirty read

Dirty read

Слайд 10

Non-repeatable read

Non-repeatable read

Слайд 11

Phantom read

Phantom read

Слайд 12

Уровни изолированности транзакций

Уровни изолированности транзакций

Слайд 13

Содержимое Транзакции Уровни изоляции транзакций Locking Savepoints Spring Transactional Distributed DBs

Содержимое
Транзакции
Уровни изоляции транзакций
Locking
Savepoints
Spring Transactional
Distributed DBs

Слайд 14

Блокировки Optimistic locking Pessimistic locking Pessimistic write (exclusive lock) Pessimistic read (shared lock)

Блокировки

Optimistic locking
Pessimistic locking
Pessimistic write (exclusive lock)
Pessimistic read (shared lock)

Слайд 15

Optimistic locking

Optimistic locking

Слайд 16

Pessimistic locking Pessimistic write (SELECT … FOR UPDATE) Pessimistic read (SELECT … LOCK IN SHARE MODE)

Pessimistic locking
Pessimistic write (SELECT … FOR UPDATE)
Pessimistic read (SELECT … LOCK

IN SHARE MODE)
Слайд 17

Содержимое Транзакции Уровни изоляции транзакций Locking Savepoints Spring Transactional Distributed DBs

Содержимое
Транзакции
Уровни изоляции транзакций
Locking
Savepoints
Spring Transactional
Distributed DBs

Слайд 18

Savepoints

Savepoints

Слайд 19

Содержимое Транзакции Уровни изоляции транзакций Locking Savepoints Spring Transactional Distributed DBs

Содержимое
Транзакции
Уровни изоляции транзакций
Locking
Savepoints
Spring Transactional
Distributed DBs

Слайд 20

The @Transactional Annotation The annotation supports further configuration as well:

The @Transactional Annotation


The annotation supports further configuration as well:
the Propagation Type of the

transaction
the Isolation Level of the transaction
a Timeout for the operation wrapped by the transaction
a readOnly flag – a hint for the persistence provider that the transaction should be read only
the Rollback rules for the transaction
Слайд 21

Potential Pitfalls Transactions and Proxies Default rollbackFor is java.lang.RuntimeException Read-only

Potential Pitfalls

Transactions and Proxies
Default rollbackFor is java.lang.RuntimeException
Read-only Transactions
Changing the Isolation level
Transaction

logging
Слайд 22

Содержимое Транзакции Уровни изоляции транзакций Locking Savepoints Spring Transactional Distributed DBs

Содержимое
Транзакции
Уровни изоляции транзакций
Locking
Savepoints
Spring Transactional
Distributed DBs

Слайд 23

Distributed DBs Stateless applications are easy to scale Stateful apps

Distributed DBs

Stateless applications are easy to scale
Stateful apps have to share

& sync their state somehow
Many app instances are working with one DB
Two ways to scale DB:
Replications
Sharding
Слайд 24

Distributed DBs DB replication: Master Slaves

Distributed DBs

DB replication:

Master

Slaves

Слайд 25

Distributed DBs DB replication: Master Slaves Пишем только в мастер

Distributed DBs

DB replication:

Master

Slaves

Пишем только в мастер

Запись транслируем в реплики

Читаем из любой

реплики
Слайд 26

Distributed DBs DB replication: Горизонтальное, но не вертикальное масштабирование Многие

Distributed DBs

DB replication:
Горизонтальное, но не вертикальное масштабирование
Многие СУБД предоставляют функционал реплицирования

«из коробки»
Гибкость
Отказоустойчивость
Есть нюансы
Стоимость Long Query остаётся той же
Ограниченная масштабируемость
Слайд 27

Distributed DBs DB sharding: Database Dispatcher A – H I

Distributed DBs

DB sharding:

Database
Dispatcher

A – H

I – O

P – U

V – Z

Слайд 28

Distributed DBs DB sharding: Database Dispatcher A – H I

Distributed DBs

DB sharding:

Database
Dispatcher

A – H

I – O

P – U

V – Z

Apple

Grape

Pineapple

Tomato

Sugar

Vanilla

INSERT

Apple

Grape

Pineapple

Tomato

Sugar

Vanilla

Слайд 29

Distributed DBs DB sharding: Может ускорить Long Query Масштабируемость ограничена

Distributed DBs

DB sharding:
Может ускорить Long Query
Масштабируемость ограничена только логикой диспатчера
Риск потери

данных растёт с количеством шардов
Можно компенсировать комбинацией с репликами
Сложен в реализации – нет готовых решений
Часто требует вмешательство в логику работы приложения
Постоянный «налог на шардирование»
Чувствителен к выбранным эвристикам
Слайд 30

Вопросы

Вопросы

Имя файла: SQL-Transactions-Saint-Petersburg,-2019.pptx
Количество просмотров: 67
Количество скачиваний: 0