powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / AlwaysOn, нода для чтения и ребилд индекса
36 сообщений из 36, показаны все 2 страниц
AlwaysOn, нода для чтения и ребилд индекса
    #40009068
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.

Несколько раз сталкивались с проблемой: кластер AlwaysOn, две ноды с синхронным коммитом. На основной запускается джоб обслуживания индексов, параметр Online = on включен. Обычно выполняется нормально, но иногда на вторичной ноде в это время запускают долгие отчёты (20+ минут) с параметром грязного чтения (но это не спасает). И если нужные индексы совпадают, то в этот долгий селект упирается сессия background от sa, которой нужно провести синхронизацию, при этом эта системная сессия накладывает блокировку пока ждёт, в неё упираются следующие пользовательские запросы и вскоре вторичная нода вся в блокировках. Быстро помогает либо тормознуть джоб на основной ноде, либо грохнуть долгий запрос на чтение на вторичной.

Кроме варианта поднять третью ноду с асинхронной репликой для долгих отчётов кто-то решал схожую проблему?
При этом желательно чтобы и планы обслуживания индексов проходили и возможность запуска долгих отчётов сохранялась в целом.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009219
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

авторследующие пользовательские запросы ожидают блокировку чего и какого типа?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009244
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

У ожидающих lastwaittype - LCK_M_SCH_S, а waitresource - таблица по которой шла работа с индексом.

Пока добавил костыльное решение - проверка на вторичной ноде каждую минуту в дни\часы работы обслуживания индекса и если больше 5 блокировок держится несколько минут, то стопать джоб индекса на первичной. На примерной тестовой симуляции нормально отработало, а в реальной посмотрим, такое не часто происходит. Но никого лишнего хоть не отключит.

Приличное количество решений для проблемы с планами обслуживания, но если блокировки на том же сервере. Для варианта - на основной ноде всё ок, никаких блокировок, а вторичная встала - готовых решений и идей не нашёл.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009257
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

жалоб вроде бы у нас не было, это, возможно, типовая ситуация. Запросы чтения накладывают блокировки стабильности схемы.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009258
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные на SSD, не нужно делать ребилд индекса. Тогда и с зеркалом проблема отпадёт...
Дефрагментация на SSD нужна только если много фантомных записей и фоновый процесс их не успевает вчищать.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009264
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регулярное перестроение индексов требуется для индексов с заполнением мене 100%, если это заполнение не с потолка взято, разумеется.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009270
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну 2 раза в неделю вечером я часто не назову. Сейчас на SSD.
Видел предложение, что типа теперь не нужно делать обслуживание индексов, но они удивляет.
Есть селекты по РК таблицы, которые начинают работать медленнее, когда у индекса заполняемость страниц падает до 40%, а фрагментация 50%+
К тому же раньше вроде SQL Server переставал использовать сильно фрагментированные индексы, не знаю как сейчас с этим.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009283
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточнение по запросу с индеком, в последний раз проблема была с reorganize, а не rebuild
Код: sql
1.
2.
3.
4.
5.
ALTER INDEX [PK_таблицы] ON [БД].[dbo].[Таблица] REORGANIZE  
WITH  
   ( 
      LOB_COMPACTION =  
   ON 


Используется процедура от Hallengren, вот % для запуска reorganize или rebuild я пожалуй подниму, базовые 10% для reorganize сейчас действительно не нужны.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009288
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регулярный ребилд на SSD тупо убийство дисков, чистый вред и никакой пользы! А теперь вопрос - почему?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009289
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко
Регулярный ребилд на SSD тупо убийство дисков, чистый вред и никакой пользы! А теперь вопрос - почему?

Тоже мне секрет Полишинеля. На ссд данные изначально "фрагментированы".
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009297
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Гладченко,

Вы выступаете именно против ребилда индексов? Или за утверждение, что фрагментация на SSD дисках не влияет на производительность?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009332
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ни за что не выступаю.
Дефрагментация и ребилд - близнецы, братья.
SSD используют алгоритм рассеивания записи, что бы продлить ресурс диска, т.к. число циклов перезаписи ячейки конечно. Т.е. последовательная запись превращается в случайную.
Дефрагментация была изобретена для оптимизации работы с данными на жёстких дисках, где большинство времени тратилось на перемещение головок и поворот диска до нужного сектора. В SSD этого нет. Т.е. внешняя фрагментация - это на SSD не повод для беспокойства, если только у вас не огромное число фантомных записей.
Внутренняя фрагментация лечится не ребилдом. У неё другие причины и другое влияние на производительность.
А вот после того, что вы прочитали, должен выступать не я, а здравый смысл ;)
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009337
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...а вот в качестве гадалки я могу тут повыступать. Давайте угадаю, что случится если бездумно ребиодить все индексы с полным просмотром в один поток на SSD.
Предсказание: все SSD диски в массиве умрут в один день, неожиданно и намного раньше своих более везучих собратьев, которых не перезаписывали так интенсивно.

Если смотреть на такую "работу" глазами бухгалтера, то он бы навесил на всё это ярлык: ФИНАНСОВОЕ ПРЕСТУПЛЕНИЕ
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009362
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко
SSD используют алгоритм рассеивания записи, что бы продлить ресурс диска, т.к. число циклов перезаписи ячейки конечно. Т.е. последовательная запись превращается в случайную.
Это правильно, но есть два других преимущества последовательной записи:

1. Уменьшение количества операций, что должно повысить производительность
Не знаю, конечно, на сколько это влияет, но теоретически ускорение должно быть.

2. Уменьшение износа SSD при обновлении данных, т.к. в SSD при записи маленького блока изменение делает копированием его в новый большой, вместе с окружающими данными.
Это называется "усиление записи" (Write amplification)
Т.е., например, если записать 64 кб одним блоком, то реально сотрётся 512 Кбайт, а если 8 блоков по 8 Кбайт в разных местах, то 8 раз по 512 Кбайт.

Там, конечно, не совсем всё так примитивно, и зависит от собственно операций записи, но однозначно говорить про полую бесполезность дефрагментаций во всех случаях я бы не стал.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009425
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Не согласен ни с одним пунктом. Первый заметно поможет разве что ребилду. Второй не будет писать в одну ячейку только то, что нам хотелось бы. И читать тоже не будет только столько, сколько нам нужно для производительности. Но всё это не важно и получаемые задержки и производительность позволяют не париться на этот счёт. Пока я знаю только один сценарий, где это реально полезно, о нём было выше. Зато чтение реплики от очереди на Redo может стать бессмысленным из-за отставания. Ито не только ребилд так гадит. Понимаю, что сложно отказаться от стереотипов, потому и избрал такую форму подачи ;)
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009510
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко,

не сосем понятно, дефрагментация же уменьшит количество чтений, объём кеширования, колчиество блокировок и другие связанные вещи, разве это несущественно?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009531
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Вы заблуждаетесь. Так было раньше.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009537
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко,

то есть современная фрагментация не оказывает влияния на объём хранения данных, я Вас правильно понял?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009563
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Простите, но я не понял, что у Вас написано. Есль речь о размерах файлов данных, то без дефрагментации они меньше. Если речь о внутренней фрагментации, то об этом вроде уже написал...
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009709
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Гладченко,

Александр, а кто призывает просто делать ребилд для всех баз и всех таблиц? Это и на HDD было не нужно, имхо.
Существуют варианты, в том числе готовые, для проверки состояния индексов и запуска нужного варианта для каждого отдельно при достижении % фрагментации.

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

Ладно, раз уж от изначального вопроса с блокировками отошли. То обсудим влияние фрагментации на производительность при SSD дисках.
Пока видел мнения, что на SSD дисках уже никак не влияет и вариант, что хотя влияние и уменьшилось, но всё ещё индексы с низкой фрагментацией лучше.

Вроде SSD диски уже много лет, подробной разбора с экспериментами никто не проводил?
YouTube Video
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009760
0wl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
0wl
Гость
Александр Гладченко,

Я вот вслед за Владиславом Колосовым не понимаю:
ребилд это ведь не только ценный мех выстраивание страниц по порядку - это еще и приведение индекса к сбалансированному состоянию.

А если у меня, например, разбалансированное дерево индекса и много seek'ов внутри nested loops - я могу спокойно на этих seek'aх потерять несколько десятков процентов. Просто потому, что СУБД будет дольше "спускаться" до листовых записей. Разве не так?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009777
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0wl
А если у меня, например, разбалансированное дерево индекса


В SQL нет разбалансированных деревьев, они все B(alanced) Tree



Вообще в этом топике смешались два вида фрагментации


1. Логическая, она же внешняя, она же порядок страниц в индексе.
Александр Гладченко говорит именно про бесполезность ребилда для устранения этого типа фрагментации на SSD.
В общем и целом понятно на чем основано это утверждение, хотя и тут есть незатронутые моменты. Например,как в этом случае работает механизм read ahead.

2. Физическая, она же внутренняя, она же заполненность страниц. Тут все значительно сложнее
Если такая фрагментация равномерна по всему индексу, и вызвана постоянными равномерными вставками, то ребилд с одной стороны выглядит как борьба с ветряными мельницами (вы уменьшаете эту фрагментацию, а она снова растет по естественным для системы причинам), с другой цена SSD по прежнему достаточно высока, и держать SSD заполненным на половину (как раз к 50% будет стремиться фрагментация в этом кейсе) накладно.

Если такая фрагментация неравномерна, например, она вызвана переносом данных из одной части в другую (обычно с начала индекса в конец), то фрагментация, а точнее заполненность страниц, будет стремиться куда-то к 1 записи на страницу. В этом случае негативный эффект от нее возрастает многократно и ребилд необходим.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009798
0wl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
0wl
Гость
msLex,

1. Дерево индекса сбалансировано сразу после перестроения (ну или создания). А потом мы начинаем в это дерево вставлять данные и оказывается, что в какие-то промежутки вставляем чаще, чем в другие. Эти популярные промежутки начинают чаще делиться, создавать дополнительные ветки под собой - и баланс дерева нарушается. Именно это я имел в виду под "разбалансированным" деревом - и в этом случае мы получаем, что пусть к "листьям" по одной ветке оказывается длиннее, чем по другой, куда данные добавляют реже.

2. read-ahead в SSD, по идее, никак не пострадает. Листовая страница знает, номера страниц до и после нее. В случае HDD мы бы долго ждали, пока он доберётся до следующей страницы, а с SSD у нас никакой разницы нет

3. Про последний пример вообще не понял. Если на странице недостаточно места для вставки данных, она делится на 2 новые страницы, данные между ними делятся пополам. Единственный вариант, где я могу представить себе "1 строку на 1 странице" - это "хвостовая" страница, которую добавили в самом конце индекса. Ну и это, по идее, не надолго - со временем ей добавят соседей
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009801
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

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

Перечислю вред по мере убывания влиияния на работу:

1. Безсмысленноое расходование циклов перезаписи SSD
2. Дополнительная нагрузка на REDO (мы же ещё помним тему топика)
3. Давление на память во время ребилда
4. Блокировка таблицы в момент переключения метаданных
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009807
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0wl,

Почитайте лучше документацию, что такое B-дерево. Не нужно придумывать....
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009808
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0wl
1. Дерево индекса сбалансировано сразу после перестроения (ну или создания). А потом мы начинаем в это дерево вставлять данные и оказывается, что в какие-то промежутки вставляем чаще, чем в другие. Эти популярные промежутки начинают чаще делиться, создавать дополнительные ветки под собой - и баланс дерева нарушается. Именно это я имел в виду под "разбалансированным" деревом - и в этом случае мы получаем, что пусть к "листьям" по одной ветке оказывается длиннее, чем по другой, куда данные добавляют реже.


Еще раз, в SQL Server деревья индексов всегда сбалансированы, до любого листового элемента дерева индекса одинаковое количество уровней.





0wl
2. read-ahead в SSD, по идее, никак не пострадает. Листовая страница знает, номера страниц до и после нее. В случае HDD мы бы долго ждали, пока он доберётся до следующей страницы, а с SSD у нас никакой разницы нет


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


0wl
3. Про последний пример вообще не понял. Если на странице недостаточно места для вставки данных, она делится на 2 новые страницы, данные между ними делятся пополам. Единственный вариант, где я могу представить себе "1 строку на 1 странице" - это "хвостовая" страница, которую добавили в самом конце индекса. Ну и это, по идее, не надолго - со временем ей добавят соседей


Сделайте индекс по дате, навставляйте в него данных на несколько страниц, а потом всем кроме 1-й записи из самой первой станицы обновите дату на максимальную из тех, что есть в таблице. На первой странице останется ровно 1 запись.

Этот эффект хорошо наблюдается в индексах по last_something_date
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009838
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0wlДерево индекса сбалансировано сразу после перестроения (ну или создания). А потом мы начинаем в это дерево вставлять данные и оказывается, что в какие-то промежутки вставляем чаще, чем в другие. Эти популярные промежутки начинают чаще делиться, создавать дополнительные ветки под собой - и баланс дерева нарушается. Именно это я имел в виду под "разбалансированным" деревом - и в этом случае мы получаем, что пусть к "листьям" по одной ветке оказывается длиннее, чем по другой, куда данные добавляют реже.Ровно наоборот. Split страницы создает 1 дполнительную страницу на том же уровне. Далее модифицируется страница предыдущего уровня, чтобы добавить ссылку на новую страницу. Если в ней нет места, она так же сплитится. И так далее. Если в итоге надо сплитить корневую страницу, то она так же разделяется на две, и добавлятся новая корневая страница. Поэтому дерево во-первых, растет не "вниз", а "вверх", а во-вторых, всегда остается сбалансированным, т.е. глубина дерева для любого ключа всегда одинакова.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009953
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр и какой будет совет (рекомендации лучших sqlводов) :
1 Отключить джоб по ребилду индексов совсем. Делать перестройку примерно как шринк - когда необходимо
2 задрать avg_fragmentation_in_percent (которая считается для внешней фрагментации) с 5%-30% на 80-80
3 править джоб для использования avg_page_space_used_in_percent
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40009972
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0wl,

авторприведение индекса к сбалансированному состоянию

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

Что касается перестроения в целях дефрагментации (очевидно, при настройке 100% заполнении страниц), то Александр утверждает, что это бессмысленная операция и даже вредная при условии использования SSD носителя. За исключением необходимости перестроения с целью скорейшего удаления фантомных записей.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40010022
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

1.совсем
2 не следить
3. Удалить джоб

Мир изменился. Реагируете только на реальные проблемы и автоматизируйте это, если нужно. А если припрёт, вначале подумайте об REORGANISE
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40010032
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко
SERG1257,

1.совсем
2 не следить
3. Удалить джоб

Мир изменился. Реагируете только на реальные проблемы и автоматизируйте это, если нужно. А если припрёт, вначале подумайте об REORGANISE
Вообще совет "Реагируете только на реальные проблемы" был актуален и 10 лет назад, до SSD.
Если, грубо, очередь к диску не поднимается больше 1, то ответы на вопросы SERG1257 очевидны, они именно такие - "забить, ибо затраты будут выше профита". Независимо от используемой технологии долговременной памяти.

На мой взгляд, пока все твои исследования систем хранения всё так же актуальны, только с некоторыми количественными изменениями, в том числе с изменёнными выводами в части "когда надо начинать беспокоиться".
А сейчас ты даёшь оценочный анализ ("Т.е. последовательная запись превращается в случайную"), разве можно его сравнивать измерениями в повторяемых тестах?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40010151
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

...не только запись превращается в случайную, но и чтение. Кроме того, ситуация сильно зависит от реализации алгоритма рассеивания записи, многоие не дорогие диски в этом халтурят. Также, большое влияние могут оказывать разные кеши на пути ввода-вывода. За счёт того, что производительность операций у SSD на порядки выше, не только мы, но и разработчики дисков и контроллеров пренебрегают потерями на фргментации. Давно уже никого не смущает, что оерационка не дефрагментирует диск. Раньше это рекомендовали повсеместно. По аналогии и внешняя фрагментация. Не будет в реальности скана последовательно расположенных на диске страниц.
Алгоритмы размещения страниц в буферном пуле, их там удерживания и сброса на диск не такие тупые, как может показаться после продчтения высказываний апонентов. Каждому процессу выдаётся конечный и отнюдь не большой объём ресурсов. Если их нехватает, используется промежуточная материализация. В сухом остатке влияние незаполненных страниц и лишних страниц подхваченных упреждающим чтением будет сильно невелированно. Основные потери времени здесь и раньше и теперь были именно на физических операциях ввода-вывода, а они теперь на пару порядков быстрее.
Кстати, нормальная очередь к диску уже лет десять 250 ;)
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40010171
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр, если на виртуалке очередь кратковременно увеличивается до 5-10 тыс, это нормальное явление? При этом статистика по IO особенно не страдает. Или что-то где-то маскируется?
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40010183
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Простите, я не работаю с виртуалками.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40010364
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко
...не только запись превращается в случайную, но и чтение. Кроме того, ситуация сильно зависит от реализации алгоритма рассеивания записи, многоие не дорогие диски в этом халтурят.
...
По аналогии и внешняя фрагментация. Не будет в реальности скана последовательно расположенных на диске страниц.
Я же писал не про влияние фрагментации как таковой (я понимаю, что в микросхеме флешки нет "головок"), я писал про проблемы увеличение количества операций со стороны сиквела.
Не будет ли это влиять на производительность?

Вот, я смотрю на любой тест SSD, и вижу, что при чтении со случайным доступом небольшими блоками поток падает в 3-10 раз.
Почему?
Не из за головок, понятно, а из за того, что есть латентность операции, затраты времени на обращение к драйверу, латентность физического интерфейса и т.д.
Потому что код, который читает эту жалкую страницу, жалкие 8 кб, должен попасть в кэш процессора, вытеснив что нибудь, и только потом начать выполняться. А перед этим нужно переключить контекст, перезаписав TLB, переопределив области адресного пространства.
Вот отсюда и получаются эти 3-10 раз.

Упреждающее чтение, и филфактор тоже что то значат, об этом упоминали.

Вот это всё мне говорит, что хоть сейчас беспокоиться о каком то уходе за индексами нужно намного позже, чем раньше, всё таки вообще про это не думать (и этого не понимать) нельзя.

Александр Гладченко
Давно уже никого не смущает, что оерационка не дефрагментирует диск. Раньше это рекомендовали повсеместно
Это не из за SSD, это из за совершенствования операционок. Винды с NTFS эффективно хранят данные, и дефрагментация не так страшна, если иметь на диске некоторый свободный объём.
Ну и второй фактор - ненжужность, ибо "производительности достаточно".
Не потому, что дефрагментация не полезная вещь, а потому, что она невыгодна, не имеет смысл заморачиваться.

Как ты написал для БД:
Александр Гладченко
За счёт того, что производительность операций у SSD на порядки выше, не только мы, но и разработчики дисков и контроллеров пренебрегают потерями на фргментации.
Тут ты поёшь гимн "незаморачиванию" :-)
Не "бесполезна", не "вредна" большими красными буквами, а именно "производительность на порядки выше", то есть труд админов стоит дороже пары лишних SSD.
...
Рейтинг: 0 / 0
AlwaysOn, нода для чтения и ребилд индекса
    #40010430
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Влияния на производительность не замечал, мы уже давно от ребилда отказались и ничего, всё и так прекрасно работает. Обновление статистики делайте, где надо, этого в большинстве случаев достаточно. Если много удаляете и велико число расщиплений, вполне можно использовать REORGANISE, он лечит внутреннюю фрагментацию.
Зато уменьшение числа операций налицо, как раз засчёт отказа от дефрагментации, которая бъёт по всем чувствительым местам SQL Server. Но самая главная боль дефрагментации, это то, что она убивает SSD. И не так что бы они чуть меньше прослужили. Вы рассчитываете, что новый массив SSD у вас прослужит положенные 5 лет. А на практике, только из-за дефрагментации, срок сократиться до 2-х, а я своими глазами видел прецеденты, когда и года не служили. Причём, отказ дисков будет не такой "плавый", как у HDD, массив сломается весь сразу и менять его придётся целиком. Что бы этого избежать, вы сделаете AlwaysON кластер, а он не будет работать, потому что из-за очереди на REDO (а это самое узкое место этой технологии) реплика у вас не будет синхронизироваться, будет всё больше отставать. И виной этому будет (угадайте какая операция)?
Я не говорю сейчас о маленьких приложениях, речь о системах с нагрузкой. Понятно, что мизерная нагрузка не будет пораждать проблем.

alexeyvgВот, я смотрю на любой тест SSD, и вижу, что при чтении со случайным доступом небольшими блоками поток падает в 3-10 раз.
Почему?
Не из за головок, понятно, а из за того, что есть латентность операции, затраты времени на обращение к драйверу, латентность физического интерфейса и т.д.
Потому что код, который читает эту жалкую страницу, жалкие 8 кб, должен попасть в кэш процессора, вытеснив что нибудь, и только потом начать выполняться. А перед этим нужно переключить контекст, перезаписав TLB, переопределив области адресного пространства.
Вот отсюда и получаются эти 3-10 раз.

Маленький блок был проблемой всегда и не только при чтении. Мало того, операции REDO очень чувствительны к величине страйпа, для них оптимално 64Kb. На SSD рамер ячейки существенно большье. Понятно что это не будет эффективно. Но это влияние не зависит от фрагментации. Задержки, кстати, будут не плохими, они как раз растут при увеличении размера блока. Причём, эти самые 3-10 раз будут в разы быстрее, чем то же самое на дефрагментированных жёстких дисках.

alexeyvgЭто не из за SSD, это из за совершенствования операционок. Винды с NTFS эффективно хранят данные, и дефрагментация не так страшна, если иметь на диске некоторый свободный объём.
Ну и второй фактор - ненжужность, ибо "производительности достаточно".
Не потому, что дефрагментация не полезная вещь, а потому, что она невыгодна, не имеет смысл заморачиваться.

Операционка тут не при чём. Это проблема NTFS, а он не изменился. Дефрагменацию не делают по уверениям Майкрософт именно потому, что она убивает диск. Есть тонны частных утилит, которые не только дефрагментацию отключают, но и ещё много ненужных телодвижений операционки с файлами, типа прописывание коротких имён, изменение атрибут архивности, простановка последнего времени доступа и т.п. Это всё реально продлевает жизнь дискам.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / AlwaysOn, нода для чтения и ребилд индекса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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