Предлагает ли Amazon Aurora сериализуемую изоляцию для транзакций только для чтения, работающих на подчиненных узлах? - PullRequest
0 голосов
/ 26 октября 2018

Из того, что я понял из чтения документации по Amazon aurora, даже если главный узел Aurora синхронно записывает журнал WAL в 4 из 6 узлов хранения.Если нет смены главного устройства, ведомое устройство Aurora синхронизируется только с помощью асинхронной доставки журналов непосредственно с главного узла.

Если это так, я предполагаю, что клиент может написать и зафиксироватьзначение на главный узел, а затем немедленно отправьте запрос только для чтения одному из ведомых устройств и наблюдайте старое значение вместо только что записанного последнего значения.

это будет означать, что он может поддерживать только режим изоляции моментального снимка нараб.

это кажется очень большим ограничением!И я хотел убедиться, что это правильно.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Задержка реплик для Aurora очень мала по сравнению с репликами чтения, отличными от Aurora, но все еще является ненулевым значением, которое можно отслеживать с помощью метрик CloudWatch AuroraBinlogReplicaLag и AuroraReplicaLag - более подробно задокументировано в https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Monitoring.html. В зависимости от вашего вопроса, Aurora не записывает все 6 копий хранилища синхронно - только 4. Четырёхдневный блог о том, как работает эта система хранения, можно найти по адресу https://aws.amazon.com/blogs/database/amazon-aurora-under-the-hood-quorum-and-correlated-failure,, и я рекомендуювсем это прочитать.Вы также можете прочитать больше о Aurora Replication на https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Replication.html., но Стив Бузонас прав: если вам нужно чтение с чтением после записи SERIALIZABLE, вам нужно читать с конечной точки экземпляра устройства записи: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.Endpoints.html

0 голосов
/ 26 октября 2018

Сериализуемая изоляция - сложная проблема для кластеров.Я не знаю ни одного, кто действительно поддерживает это.И если бы был один, который сделал, я не знаю, был бы я готов принять последствия производительности, которые будут сопровождать это.поддерживается.

mysql> SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+
| @@GLOBAL.tx_isolation | @@tx_isolation  |
+-----------------------+-----------------+
| REPEATABLE-READ       | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+
| @@GLOBAL.tx_isolation | @@tx_isolation  |
+-----------------------+-----------------+
| REPEATABLE-READ       | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)

Из-за возможного соответствия из-за задержки репликации;если важно, чтобы вы получали данные в режиме реального времени, вы должны читать по мастеру.

...