Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Может ли запрос от ALWAYSON реплики создать проблемы исходной БД / 11 сообщений из 11, страница 1 из 1
23.01.2020, 08:28
    #39917645
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
Господа,
кто может ответить на следующий вопрос: может ли запрос от ALWAYSON реплики создать проблемы исходной БД.

Речь может идти о том, что по реплицированной БД хотят делать тяжелые запросы, которые в течение десятков минут будут делать тяжелые сканы + джойны по большим таблицам. Возможно часы.

Вопрос оптимизации запросов отставим за рамками данного топика. Будем исходить из того, что запросы оптимизированы, но затрагивают объемы данных за период до года или несколько таблиц по от 100 тыс+ до 100+ млн строк.

Нужно понять -- при каких условиях блокировки или иные события на реплики могут создать проблемы исходной БД.

Речь идет о SQL SERVER 2017 или 2019 Enterprise.

Кто-то может точно сформулировать это?
...
Рейтинг: 0 / 0
23.01.2020, 08:39
    #39917650
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
a_voronin
может ли запрос от ALWAYSON реплики создать проблемы исходной БД.

Речь может идти о том, что по реплицированной БД хотят делать тяжелые запросы, которые в течение десятков минут будут делать тяжелые сканы + джойны по большим таблицам. Возможно часы.
Если режим асинхронный, и если не переполнится журнал (или, из за задержки применения транзакций, накат на вторичные реплики не перестанет успевать), то вроде проблем не должно быть.
...
Рейтинг: 0 / 0
23.01.2020, 08:56
    #39917658
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
a_voronin
Господа,
Нужно понять -- при каких условиях блокировки или иные события на реплики могут создать проблемы исходной БД.


Откуда могут быть блокировки на Secondary реплике, если она по определению ReadOnly?

Разве что сильная загрузка синхронной Secondary реплики может снизить общую производительность...
...
Рейтинг: 0 / 0
23.01.2020, 09:05
    #39917665
PsyMisha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
alexeyvg,

Да, тоже соглашусь с Алексеем - режим async не обязывает Master ни к чему в плане коммита транзакций, блокировки secondary к этому так же не будут иметь отношения, их кроме разделяемых нет там

Попробуйте, кстати, открыть в Microsoft advisory case, не?
...
Рейтинг: 0 / 0
23.01.2020, 09:05
    #39917666
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
alexeyvg
a_voronin
может ли запрос от ALWAYSON реплики создать проблемы исходной БД.

Речь может идти о том, что по реплицированной БД хотят делать тяжелые запросы, которые в течение десятков минут будут делать тяжелые сканы + джойны по большим таблицам. Возможно часы.
Если режим асинхронный, и если не переполнится журнал (или, из за задержки применения транзакций, накат на вторичные реплики не перестанет успевать), то вроде проблем не должно быть.


В синхронном режиме, синхронность обеспечивается синхронной записью в лог на вторичной реплике, т.е. блокировки данных на вторичной реплике напрямую не влияют на первичную.
Из возможных проблем по-мимо уже указанного переполнения лога
1. I/o нагрузка на файлы данных в некоторых случаях, может замедлить доступ к логу.
Самый очевидный, когда данные и логи лежат на одних дисках.
Менее очевидный, но более реальный - данные и логи лежат на одной СХД, и батлнеком станет канал от СХД до сервера.
В этих случаях, передача лога может упереться в запись в лог.
2. Если читаемые миллионы строк не просто агрегируются, а в "сыром виде" отправляются клиенту, то проблемным местом может стать передача логов с первичной реплики из-за нехватки канала на сетевых интерфейсах.


Если в синхронном режиме не успевает передоватся лог, то на первичной реплике все коммиты будут висеть на HADR ожиданиях (что-то типа hadr_sync_commit)
...
Рейтинг: 0 / 0
23.01.2020, 09:11
    #39917670
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
msLex
alexeyvgЕсли режим асинхронный, и если не переполнится журнал (или, из за задержки применения транзакций, накат на вторичные реплики не перестанет успевать), то вроде проблем не должно быть.

В синхронном режиме, синхронность обеспечивается синхронной записью в лог на вторичной реплике, т.е. блокировки данных на вторичной реплике напрямую не влияют на первичную.А, получается, если на вторичной реплике что то будет заблокировано, то это приведёт просто к приостановке восстановления данных на ней, но на источник не повлияет?
Понятно, спасибо за пояснения.
...
Рейтинг: 0 / 0
23.01.2020, 09:11
    #39917672
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
AndrF
Откуда могут быть блокировки на Secondary реплике, если она по определению ReadOnly?

Во-первых, при накатывании лога на любой реплике, все применяемые операции накладывают соответствующие блокировки.
Во-вторых, все читатели на readable репликах работают в til snapshot, и вполне себе накладывают блокировки стабильности схемы на объекты.
...
Рейтинг: 0 / 0
23.01.2020, 09:12
    #39917673
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
alexeyvg
msLex
пропущено...

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

Да все так.
...
Рейтинг: 0 / 0
23.01.2020, 12:44
    #39917832
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
alexeyvg
msLex
пропущено...

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


https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-readable-secondary-replicas-always-on-availability-groups?view=sql-server-ver15
Running long transactions impacts the number of versioned rows kept, both for disk-based and memory-optimized tables.
Because read operations are mapped to snapshot isolation transaction level, the cleanup of ghost records on the primary replica can be blocked by transactions on one or more secondary replicas. The ghost record cleanup task will automatically clean up the ghost records for disk-based tables on the primary replica when they are no longer needed by any secondary replica. This is similar to what is done when you run transaction(s) on the primary replica. In the extreme case on the secondary database, you will need to kill a long running read-query that is blocking the ghost cleanup. Note, the ghost clean can be blocked if the secondary replica gets disconnected or when data movement is suspended on the secondary database. This state also prevents log truncation, so if this state persists, we recommend that you remove this secondary database from the availability group.
...
Рейтинг: 0 / 0
23.01.2020, 15:41
    #39917936
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
Если на реплике будут задержки с восстановлением журнала, то лог на первичной реплике будет расти пока не лопнет. Ну, или если реплика будет недоступна.
...
Рейтинг: 0 / 0
23.01.2020, 16:23
    #39917957
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может ли запрос от ALWAYSON реплики создать проблемы исходной БД
Ловили следующую ситуацию: на вторичке запустили долгий читающий запрос. Кроме него читателей особо не было. В итоге переполнился version store в tempdb, остановился процесс применения лога на вторичке (старые версии записей писать-то он не может), на странных ожиданиях повисли все модификации данных на первичной реплике, пока не прибили читающий запрос на вторичке. Больше деталей не помню.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Может ли запрос от ALWAYSON реплики создать проблемы исходной БД / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]