В этой статье я покажу вам, как выявить узкие места ввода-вывода SQL Server менее чем за 45 секунд с помощью специализированных динамических административных представлений (DMV). Перестаньте гадать между задержкой и пропускной способностью и начните исправлять реальные очереди к системе хранения!
28.4.26
Проверка узких мест ввода-вывода за 45 секунд
25.4.23
Tips for DBA: INSERT Overclocking
Одной из трудно оптимизируемых задач SQL Server является вставка. Не раз мне приходилось сталкиваться с ситуациями, когда уже и схема оптимизирована под вставку, и сайзинг файлов вставке не препятствует, а желаемой производительности массовой или не массовой вставки достичь не удаётся. Не хватает совсем немногого…
Разработчики SQL Server 2008
позаботились о том, чтобы предоставить нам с вами в распоряжение некую «палочку
– выручалочку», которая призвана как раз снизить затраты на вставку, путём её
не полного журналирования. Для этого предлагается задействовать на серверах
флаг трассировки 610, который по моим наблюдениям действительно может немного
облегчить вставку. Флаг, и его побочные эффекты, подробно описан тут: The Data Loading Performance Guide
Ещё одна мера, в дополнение к
включению флага трассировки 610, описана в документе вендора: SQL Server Best Practices Article.
Там, среди прочего, подробно описано исследование того, что будет эффективней,
вставка в таблицу с единственным некластеризованным индексом, или вставка в
таблицу с единственным кластеризованным индексом. Кластеризация данных может
дать выигрыш на вставке до 3%.
Вот такие маленькие хитрости
попались мне на глаза в документации Майкрософт. Быть может, кто-нибудь из
читателей этого блога поделиться в комментариях своими маленькими хитростями?
В тему:
20.4.23
Как справиться с PAGELATCH при больших INSERT-нагрузках
По материалам статьи: "Resolving PAGELATCH Contention on Highly Concurrent INSERT Workloads".
Авторы: Thomas Kejser, Lindsey Allen, Arvind Rao и Michael Thomassy
При участии и с рецензиями: Mike Ruthruff, Lubor Kollar, Prem Mehra, Burzin Patel, Michael Thomassy, Mark Souza, Sanjay Mishra, Peter Scharlock, Stuart Ozer, Kun Cheng и Howard Yin
Введение
Недавно, мы проводили лабораторные испытания в Microsoft Enterprise Engineering Center, при которых использовалась большая рабочая нагрузка, характерная для OLTP систем. Целью этой лабораторной работы было определить, что случится при увеличении числа процессоров с 64 до 128, при обслуживании Microsoft SQL Server интенсивной рабочей нагрузки (примечание: эта конфигурация была ориентирована на релиз Microsoft SQL Server 2008 R2). Рабочая нагрузка представляла собой хорошо распараллеленные операции вставки, направляемые в несколько больших таблиц.
Рабочая нагрузка масштабировалась до 128 процессорных ядер, но в статистике ожиданий было очень много кратких блокировок PAGELATCH_UP и PAGELATCH_EX. Средняя продолжительность ожидания была десятки миллисекунд, и таких ожиданий было очень много. Такое их количество оказалось для нас неожиданностью, ожидалось, что продолжительность не будет превышать несколько миллисекунд.
В этой технической заметке вначале будет описано, как диагностировать подобную проблему и как для разрешения подобной проблемы использовать секционирование таблиц.
18.4.23
Счётчики производительности, позволяющие идентифицировать узкие места дисковой подсистемы SQL Server
По материалам статьи Маттео Лорини (Matteo Lorini): «Perfmon Counters to Identify SQL Server Disk Bottlenecks».
Описание
проблемы
Известны несколько статей об обнаружении проблем ввода-вывода, связанных с SQL Server. Существуют разные методы поиска «узких мест» ввода-вывода, мы же сконцентрируемся тут на вопросе: Какие счётчики производительности необходимы для того, чтобы быстро понять, являются ли диски «узким местом»?
14.4.23
Атрибут логического диска IdlePrioritySupported рекомендован официально
Такая рекомендация попалась мне на глаза в последней редакции документа: Performance Tuning Guidelines for Windows Server 2012 R2
Там,
в главе Performance Tuning for Workloads, в разделе, посвящённом оптимизации OLTP - Server under test tunings,
предлагают следующий способ оптимизации
производительности логических дисков (которые предполагает ковыряние реестра,
что, напоминаю, не безопасно и только на ваш страх и риск!):
• Configure
storage devices.
◦ Disable low
priority I/O. For each logical volume in
HKLM\SYSTEM\CurrentControlSet\Enum\SCSI under Device Parameters\ClassPnp,
create a REG_DWROD registry entry named IdlePrioritySupported and set the value
to 0.
13.4.23
Опыт размещения файлов баз данных
В этой статье отражён опыт построения и поддержания инфраструктуры для больших (больше 10Тб) баз данных. Статья не предлагает универсального решения всех возможных задач MS SQL Server и не отражает всего разнообразия возможных типов нагрузки. Поэтому использовать представленные ниже выводы и рекомендации стоит с оглядкой на свою специфику. Всё, что тут описано, было апробировано на OLTP нагрузках с немалой долей больших аналитических запросов, агрегации, процессинга и массовых выгрузок/загрузок данных. Нагрузка была блочная, неоднородная во времени и по структуре. Характерными чертами нагрузки являлся высокий параллелизм, большое число блокировок, листаний, асинхронных операций, очередей, ожиданий процессора и окончания ввода-вывода. Сама нагрузка балансировалась на уровне логики работы приложения, ресурсы распределялись сообразно возможностям задач, запросы снабжались «хинтами», а распределения памяти для многих задач исчислялись десятками и сотнями Мегабайт.
Статья предназначена для администраторов баз данных и хранилищ. Подразумевается, что она облегчит понимание особенностей размещения файлов данных и журналов SQL Server в сетях SAN.
28.12.22
Руководство по производительности загрузки данных
По материалам технической статьи, посвящённой SQL Server: The Data Loading Performance Guide
Авторы: Томас Кайзер (Thomas Kejser), Питер Карлин (Peter Carlin) и Стюарт Озер (Stuart Ozer)
Техническая рецензия и экспертиза: Sunil Agarwal, Ted Lee, David Schwartz, Chris Lee, Lindsey Allen, Hermann Daeubler, Juergen Thomas,Sanjay Mishra, Denny Lee,
Peter Carlin, Lubor Kollar
Особая благодарность: Henk van der Valk (Unisys), Alexei Khalyako и Marcel van der Holst
Перевод: Александр Гладченко, Ирина Наумова, Влад Щербинин и Алексей Халяко
Дата издания: январь 2009г.
Статья относится к продуктам: SQL Server 2008 и SQL Server 2005
Резюме: Этот документ описывает стратегию массовой загрузки больших объёмов информации в базы данных SQL Server. Статья охватывает два распространённых метода, а также методологии повышения производительности и оптимизации процесса массовой загрузки данных.
Введение
Настоящая техническая статья описывает существующие стратегии массовой загрузки данных, которые применяются для быстрого внесения масштабных изменений в базах данных Microsoft ® SQL Server ®.
Прежде, чем углубиться в подробности методов массовой загрузки, давайте освежим в памяти некоторые базовые принципы минимального протоколирования, которые будут представлены в главе: “Разъяснения по минимально протоколируемым операциям”.
Следующие две главы: “Методы массовой загрузки” и “Другие минимально протоколируемые операции и операции над метаданными” содержат краткий обзор двух ключевых и взаимосвязанных концепций высокопроизводительной загрузки данных, таких как массовый импорт и экспорт данных и операции только над метаданными.
После небольшого погружения в тему, мы приступим к описанию способов использования этих методов в пользовательских сценариях. Приводимые тут примеры сценариев призваны проиллюстрировать типовые подходы, которые можно найти в главе: “Решения для типовых задач массовой загрузки”. Особо будут рассмотрены такие сценарии, когда загрузка данных в таблицу должна выполняться при одновременном чтении из этой же таблицы. В главе “Массовая загрузка, запросы с NOLOCK и Read Committed Snapshot Isolation” описаны методы, которые могут использоваться для достижения параллельной загрузки и чтения данных.
Эта техническая статья заканчивается главой “Оптимизация массовой загрузки данных”, в которой рассказано о поиске и устранении сопутствующих загрузке данных проблем.
23.12.22
10 рекомендаций по настройке хранилищ данных
Автор: Алексей Халяко
Правильная настройка дисковых подсистем ввода-вывода является критически важным фактором в достижении высокой производительности и оптимальной работы систем SQL Server. В этой статье приводятся некоторые из наиболее распространенных рекомендаций для настройки подсистемы хранилища данных в SQL Server, предлагаемые группой разработчиков SQL Server.

