powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что будет эффективнее? Теоретически.
30 сообщений из 30, показаны все 2 страниц
Что будет эффективнее? Теоретически.
    #40081293
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Интересно ваше мнение, допустим есть 200 баз, равнонагруженных, где они будет эффективнее работать, на 4х серверах или на 2х с удвоенными ресурсами.

Где процессоры будет эффективнее, в связке 4х8 или 2х16
Где будет эффективнее использоваться память 4х128 или 2х256
Диски из дискового хранилища.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081297
Размеры активной части данных в рамках каждой базы?
Какая нагрузка (DW/OLTP)?
Со всеми базами одновременно работают в пике?
Версия сиквела?
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081299
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

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

Сервера активно используют связи с линкованными серверами в запросах.

OLTP

2x2019 Ent
4x2019 St
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081302
Топлю за вариант 4*Std который будет банально дешевле + DELAYED_DURABILITY включаем чтобы снизить нагрузку на диски от OLTP нагрузки. AlwaysOn планируете?
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081310
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

Пока нет, бизнес устраивает вариант с восстановлением данных из бэкапов с простоем на это время.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081311
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

пространство буферного пула, plan cache и tempdb на один инстанс общее для всех баз.
эффективней с моей точки зрения будет 4 сервера.


Sergey Syrovatchenko,

для прома OLTP DELAYED_DURABILITY? да вы рисковый :)
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081314
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

решение должно быть в пользу суммарного количества ядер, памяти, объема и скорости дисков.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081315
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

С точки зрения администрирования так же удобно обслуживать 4 сервера вместо двух, при банальной перезагрузке недоступной становиться лишь четверть ресурсов, но так же присутствует большое количество OLEDB обращений между серверами, которое тормозит выполнение запросов.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081316
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

те в пользу 2х серверов с большими ресурсами?
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081317
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

при равных объемах ресурсов лучше два сервера. Сто баз на одном и сто на другом.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081318
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko, почитал вашу статью о Delayed Durability.
Чувствуется, что вы плотно в теме.
Вопрос - каков риск сломать базу при сбое при включенном DD?
На проде конечно ставить боязно, но вот на STAGE почему нет?
Там нет постоянных данных, а сломается, так можно быстро поднять из бекапа.
Но это все равно морока.
Или есть ещё какие-то скрытые нюансы?
Заранее благодарен.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081322
felix_ffдля прома OLTP DELAYED_DURABILITY? да вы рисковый :)
SQL2008Вопрос - каков риск сломать базу при сбое при включенном DD?
Если на проекте используются услуги датацентров и нет проблем с бесперебойниками, то не вижу проблем с включением этой опции.

SQL2008Или есть ещё какие-то скрытые нюансы?
Я их не знаю. В моем случае из коробки всегда снижало нагрузку на диски от WRITELOG ожиданий. Если кто сталкивался с проблемами при использовании DELAYED_DURABILITY, то присоединяюсь к обсуждению.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081324
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

А как перезагрузку производите? Как я понял, использование DELAYED_DURABILITY не имеет механизм обработки перезагрузок, те, даже при перезагрузке есть риск потерять часть транзакций.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081326
teCa, перед перезагрузкой штатно (самим сиквелом) вызывается sys.sp_flush_log и сервер перестает принимать новые соединения, поэтому не должно быть проблем. Я не утверждаю что проблем не будет, но сколько я читал и проверял так и не смог сделать репро когда проблема бы себя проявила.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081329
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

там нет гарантии запуска при штатной перезагрузке:

в случае тушения сервера нужно явно вызывать sys.sp_flush_log

For delayed durability, there is no difference between an unexpected shutdown and an expected shutdown/restart of SQL Server. Like catastrophic events, you should plan for data loss. In a planned shutdown/restart some transactions that have not been written to disk may first be saved to disk, but you should not plan on it. Plan as though a shutdown/restart, whether planned or unplanned, loses the data the same as a catastrophic event.


принцип использования/не использования DD сводится к ответу на простой вопрос: важно ли нам что часть данных может быть потеряна? если ответ да, то DD использовать не желательно.

но согласен эта штука полезная особенно на тестовых контурах / стейджевых стендах не требовательных к консистетности данных или способных быстро их восстановить.

полагаться на датацентры, хорошие упсы и.т.д я бы в таком вопросе не стал, как говорится "раз в жизни даже палка стреляет" :)
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081335
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,
Еще не понял, как sys.sp_flush_log ограничивает подключение к серверу?
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081342
felix_ff, не хочу спорить с тем что написано в справке. Вот прям сейчас создал БД с включенной DD + таблицу (1 поле INT). Вставляю 1 строку (чекпоинта нет смотрел через XEvent) других транзакций тоже... а значит все в LogBuffer и физически в файл лога не ушло. Следуя логике работы DD... насильно убиваю процесс сиквела. Стартую процесс. База онлайн и запись физически вставилась. Тогда получается магия какая-то. Но данные у меня не получается потерять.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081343
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko
Если на проекте используются услуги датацентров и нет проблем с бесперебойниками, то не вижу проблем с включением этой опции.

Да, все сервера на виртуальных машинах в ДЦ.
Более того, даже разовый сбой не очень критичен, так как во второй раз все прогрузится снова.
Это отчетные системы, а не операционные.
Спасибо за развернутый ответ!
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081354
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

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

Так же интересно, есть ли возможность следить за размером LogBuffer
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081444
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мнения разделились.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081521
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2008
Sergey Syrovatchenko, почитал вашу статью о Delayed Durability.
Чувствуется, что вы плотно в теме.
Вопрос - каков риск сломать базу при сбое при включенном DD?
На проде конечно ставить боязно, но вот на STAGE почему нет?
Там нет постоянных данных, а сломается, так можно быстро поднять из бекапа.
Но это все равно морока.
Или есть ещё какие-то скрытые нюансы?
Заранее благодарен.

Я использую "отложенную устойчивость" :-) в ETL задачах.
Только не форсированную, а управляемую.
Т.к. новые данные грузятся в рядомстоящие секции, а потом подменяются свитчем, то проблема потери данных при перезагрузке или сбое не стоит вообще. Все равно данные заново перезагружать.
Скорость загрузки выросла в 4 раза. Если раньше типовые 10 млн. записей грузились час, то сейчас - 15 минут.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081522
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
teCa
felix_ff,

С точки зрения администрирования так же удобно обслуживать 4 сервера вместо двух, при банальной перезагрузке недоступной становиться лишь четверть ресурсов, но так же присутствует большое количество OLEDB обращений между серверами, которое тормозит выполнение запросов.

Стандарты, хоть и дешевле, обладают "особенностями", которые сразу начинают выпирать.
Во-первых, 128 Гб ОЗУ - откровенно мало.
Это значит, что суммарный объем баз под OLTP нагрузкой у вас будет всего где-то гигабайт 500, прежде чем пользователи начнут жаловаться на задумчивость БД.
Опять же процессоров - всего 24. Ну, если в базу не летит ничего сложнее чем select * from tbl where id=1, то не критично, а если разработчики предпочитают изъясняться в стиле "Воины и Мира"?
У меня есть OLTP система, где типовые запросы - строк по 500, а запрос, формирующий "оперативную отчетность" - немного не дотягивает до 8 тыс. строк. Запрос. Один. Но не будем о грустном.
Онлайновое перестроение индексов - нужно не часто, но иногда бывает.
Ну и с управлением ресурсами и аудитом - всё сильно лучше.

Поэтому если речь идет именно о 2 энтерпрайзах против 4 стандартов - я однозначно выберу 2 энтерпрайза. Разумеется, если мне не придется оплачивать их из своего кармана.
:-)
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081533
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa
Всем привет. Интересно ваше мнение, допустим есть 200 баз, равнонагруженных, где они будет эффективнее работать, на 4х серверах или на 2х с удвоенными ресурсами.

Где процессоры будет эффективнее, в связке 4х8 или 2х16
Где будет эффективнее использоваться память 4х128 или 2х256
Диски из дискового хранилища.


Теоретически, если "все одинаково" - будет одинаково.
Практически, "все одинаково" - недостижимая фантазия.

В абстрактной реальности, отдельный сервер "аналогичной" производительности обеспечит 1-й базе большее быстродействие, чем N баз на одном сервере Nx"аналогичной" производительности.
Ибо, кроме памяти дисков и процессора есть, как минимум, еще шина и сеть.

В суровой реальности, никто не даст вам N серверов "аналогичной" производительности.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081742
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал я применить DELAYED_DURABILITY на одном из серверов. На этом сервере, как раз присутствует высокое значение ожиданий записи лога.

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

Как видно по графику, нагрузка на диск не многим изменилась.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081757
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa
Попробовал я применить DELAYED_DURABILITY на одном из серверов. На этом сервере, как раз присутствует высокое значение ожиданий записи лога.

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

Как видно по графику, нагрузка на диск не многим изменилась.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081775
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

вы немного не тот счетчик анализируете. у вас DD на очередь диска по сути влияет только косвенно: она должна нагрузку немного сдвинуть по времени, но сама нагрузка никуда не денется, ему как нужно было записать к примеру 5 МБ лога, так он и запишет эти 5 МБ, только асинхронно. (я не беру сейчас во внимание что он может дожидаться заполнения целых буферов и скидывать уже их)

вам нужно анализировать счетчики database:transactions/sec, log bytes flushed/sec, active transactions, log flushes/sec
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40081857
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DD влияет не на диски, а на скорость выполнения операций. В обычной ситуации запросы ожидают выполнения фиксации записи в журнал, в случае DD запросы доверяют серверу и не ждут фиксации.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40082027
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
DD влияет не на диски, а на скорость выполнения операций. В обычной ситуации запросы ожидают выполнения фиксации записи в журнал, в случае DD запросы доверяют серверу и не ждут фиксации.

Я бы даже слегка расширил ответ.
Верхнее значение количества транзакций, которое в состоянии обработать дисковая подсистема - определяется количеством iops, которое эта система в состоянии выдать на диске, где лежит log файл базы данных.
Т.к. ни одна транзакция не может быть зафиксирована, до тех пор, пока запись о ней не будет сделана в логе (точнее - даже несколько записей), то количество insert/update/delete в секунду - не может превышать количество iops диска логов ( /3, примерно ).
Т.е. если у вас логи лежат на одиночном 5400 ВД грин, то количество транзакций, которые вы выдавите из системы - где то 50-60 в секунду.
Но это все - без кэширования.
А запись в лог - как раз и происходит без кеширования, с флагом "не кэшировать" для системы, и командой "не кэшировать" для контроллера (он ее, впрочем, может игнорировать, и, скорее всего, в принудительном write back - проигнорирует. Но это его дело, у него на это батарейка есть на кэше).
Так вооот... В режиме "отложенной устойчивости", мы просто разрешаем системе кэшировать запись данных в лог, что позволяет ей данные, предназначенные для записи - пакетировать, и отправлять на диск в рамках одной команды. И, соответственно, снижать ОБЩЕЕ количество операций ввода-вывода, которые порождаются транзакциями. Теперь 10 (предположим) пакетов о начале транзакций, произошедших одновременно - это не 10 операций ввода вывода, а одна.
Ну и, соответственно, количество обрабатываемых транзакций в секунду - растет пропорционально.
При этом скорость обмена с диском, скорость выполнения самих команд - остается прежней. Одна фиксирована железякой, другая - нууу... структурой и командами БД. Но ожидание на фиксацию изменений в бд - сокращается.

Яркий пример - База на 1С.
Любимый прием работы одинесников - "от записи к записи". Они открывают курсор на миллион записей, и начинают по одной апдейтить. Сутки.
Включаем ДД - получаем апдейт за час. :-)))
И непредсказуемые глюки, если система уйдет в ребут.
... но это - не точно :-)))
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40082126
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster

Но это все - без кэширования.
А запись в лог - как раз и происходит без кеширования, с флагом "не кэшировать" для системы, и командой "не кэшировать" для контроллера (он ее, впрочем, может игнорировать, и, скорее всего, в принудительном write back - проигнорирует. Но это его дело, у него на это батарейка есть на кэше).

справедливости ради надо сказать, что запись в лог буферизуется

https://sqlperformance.com/2018/11/sql-performance/understanding-log-buffer-flushes

BufferingTo alleviate the negative performance impact of frequent sequential log writes to disk, SQL Server uses a log buffer in memory. Log writes are first done to the log buffer, and certain conditions cause SQL Server to flush, or harden, the log buffer to disk. The hardened unit (aka log block) can range from a minimum of a sector size (512 bytes) to a maximum of 60 KB. Following are conditions that trigger a log buffer flush (ignore the parts that appear in square brackets for now):

SQL Server gets a commit request of a [fully durable] transaction that changes data [in a database other than tempdb]
The log buffer fills up, reaching its 60 KB capacity
SQL Server needs to harden dirty data pages, e.g., during a checkpoint process, and the log records representing the changes to those pages were not yet hardened (write ahead logging, or WAL in short)
You manually request a log buffer flush by executing the procedure sys.sp_flush_log
SQL Server writes a new sequence-cache-related recovery value [in a database other than tempdb]


Delayed DurabilityStarting with SQL Server 2014, you can use a feature called delayed durability that allows you to improve the performance of workloads with many small transactions, even if submitted by different sessions, by sacrificing the normal full durability guaranty. When committing a delayed durable transaction, SQL Server acknowledges the commit as soon as the commit log record is written to the log buffer, without triggering a log buffer flush. The log buffer is flushed due to any of the other aforementioned conditions like when it fills up, but not when a delayed durable transaction commits.

Before using this feature, you need to think very carefully whether it’s appropriate for you. In terms of performance its impact is significant only in workloads with lots of small transactions . If to begin with your workload mainly involves large transactions, you will probably not see any performance advantage. More importantly, you need to realize the potential for data loss. Say the application commits a delayed durable transaction. A commit record is written to the log buffer and immediately acknowledged (control given back to the caller). If SQL Server experiences a power failure before the log buffer is flushed, after restart, the recovery process undoes all the changes that were made by the transaction, even though the application thinks that it was committed.
...
Рейтинг: 0 / 0
Что будет эффективнее? Теоретически.
    #40082130
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad

справедливости ради надо сказать, что запись в лог буферизуется


Только вот, пока буфер не будет записан на диск - транзакция не закроется.

PS. Диск тоже "буферизует". Это способ "немного быстрее записать", а не "отложенная запись".
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что будет эффективнее? Теоретически.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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