Оптимизация инфраструктуры sql server. Ms sql server 2012 настройка оптимизация


Оптимизация производительности SQL Server 2012. Эпизод 1

 Оптимизация производительности обычно  выполняется по следующим характеристикам

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

   проверить чем же она забита. Об этом подробнее ниже.

    Управление памятью SQL Server.

Memory manager (ММ) является основным элементом, который управляет распределением памяти в SQL сервере. Данный компонент автоматически распределяет доступную SQL серверу память, снижая необходимость ручной настройки. После загрузки SQL ММ определяет первоначальный объем распределенной памяти и далее по мере изменения нагрузки динамически резервирует или освобождает оперативную память. Таким образом, ММ управляет взаимодействием SQL сервера с операционной системы в контексте управления памятью. Основные комноненты: 1. Memory Clerks (Интерфейс, используемый потребителями для управления памятью, каждый потребитель имеет один или несколько клерков памяти ,используется для распределения, освобождения  и мониторинга использования памяти, каждый клерк связан с брокером  ,  sys.dm_os_memory_clerks) 2. Memory Objects (Кучи памяти, которые используют интерфейс клерков памяти чтобы получить доступ к page allocator для выделения страниц. Memory Objects не используют интерфейсы виртуальной или общей памяти, этот элемент использует только механизм распределения страниц. Многие компоненты SQL Server обращаются напрямую к MO, минуя клерки памяти. МО предоставляют возможность распределить диапазоны памяти произвольного размера.,  sys.dm_os_memory_objects) 3. Memory Nodes (Главная задача этого компонента состоит в определении области выделения памяти на узле NUMA,если памяти не хватает может быть выделена с соседнего узла , sys.dm_os_memory_nodes) 4. Memory Brokers (отслеживает запросы памяти от компонентов SQL и сопоставляет с текущими показатели её использования. Основываясь на полученной информации, брокер вычисляет «оптимальный» размер памяти, которая может быть распределена между компонентами. Брокер уведомляет компоненты о своих вычислениях, после этого каждый компонент использует эти сведения для дальнейшего использования памяти.) 5. Memory Pools (используется чтобы установить лимиты памяти,   internal - механизмы SQLOS, Default –пул по умолчанию для всего остального). Более подробно все давно описано на хабре Max server memory и min server memory Хотя управление буферным кэшем происходит автоматически внутри SQL Server, однако администраторы могут регулировать максимальный и минимальный размер распределяемой памяти для этого буфера. Параметр min server memory обозначает границу, ниже которой Buffer Pool не будет по требованию освобождать занятую память. При первоначальной загрузке пул не занимает память, указанную в min server memory. Используется минимально необходимый объем, который вычисляется автоматически. Размер пула при необходимости в дальнейшем увеличивается. EXEC sp_configure 'show advanced option', '1'; --Set the maximum amount of memory to 4096 MB: EXEC sp_configure 'max server memory (MB)', 4096 RECONFIGURE WITH OVERRIDE --Display the newly set configuration: EXEC sp_configure 'max server memory (MB)' --Set 'show advanced options' back to default: EXEC sp_configure 'show advanced options', 0 RECONFIGURE WITH OVERRIDE --мониторинг использования памяти SQL Server --Memory broker (брокер памяти) является компонентом SQLOS. Брокер памяти отвечает за распределение памяти между различными компонентами SQL Server в соответствии с их запросами. SELECT p.name AS resource_governor_pool_name, b.memory_broker_type        , b.allocations_kb AS current_memory_allocated_kb        , b.allocations_kb_per_sec AS allocation_rate_in_kb_per_sec        , b.future_allocations_kb AS near_future_allocations_kb        , b.target_allocations_kb        , b.last_notification AS last_memory_notification FROM sys.dm_os_memory_brokers b INNER JOIN sys.resource_governor_resource_pools p ON p.pool_id = b.pool_id --Выделение памяти windows просиходит через клерки SELECT type, name, memory_node_id        , sum(pages_kb              + virtual_memory_reserved_kb              + virtual_memory_committed_kb              + awe_allocated_kb              + shared_memory_reserved_kb              + shared_memory_committed_kb) AS TotalKB FROM sys.dm_os_memory_clerks GROUP BY type, name, memory_node_id Buffer pool – это область в памяти, которая используется для кэширования страниц, данных таблиц и их индексов, размер страниц 8Кб. Использования Buffer pool уменьшает ввод/вывод в файл базы данных и таким образом увеличивает производительность сервера и является основным потребителем памяти в SQL Server. Checkpoint – буферный пул не очищает Lazywriter активизируется когда свободно меньше 25% буферного пула -- Содержимое буферного пула SELECT obj.name AS TableName, ind.name AS IndexName, part.object_id AS ObjectID, part.index_id AS IndexID , part.partition_number AS PartitionNumber, buf.page_level AS IndexLevel , alloc.type_desc AS AllocationType, buf.page_type AS PageType, buf.page_id AS PageNumber FROM sys.dm_os_buffer_descriptors buf INNER JOIN sys.allocation_units alloc ON alloc.allocation_unit_id = buf.allocation_unit_id INNER JOIN sys.partitions part ON part.hobt_id = alloc.container_id INNER JOIN sys.indexes ind ON ind.object_id = part.object_id AND ind.index_id = part.index_id INNER JOIN sys.objects obj ON obj.object_id = part.object_id WHERE buf.database_id = db_id() AND alloc.type IN (1,3) AND obj.is_ms_shipped = 0 SELECT obj.name AS TableName, ind.name AS IndexName, part.object_id AS ObjectID, part.index_id AS IndexID , part.partition_number AS PartitionNumber, buf.page_level AS IndexLevel , alloc.type_desc AS AllocationType, buf.page_type AS PageType, buf.page_id AS PageNumber FROM sys.dm_os_buffer_descriptors buf INNER JOIN sys.allocation_units alloc ON alloc.allocation_unit_id = buf.allocation_unit_id INNER JOIN sys.partitions part ON part.partition_id = alloc.container_id INNER JOIN sys.indexes ind ON ind.object_id = part.object_id AND ind.index_id = part.index_id INNER JOIN sys.objects obj ON obj.object_id = part.object_id WHERE buf.database_id = db_id() AND alloc.type = 2 AND obj.is_ms_shipped = 0 ORDER BY TableName, IndexID, PageNumber Счетчики в performance monitor FROM sys.[dm_os_performance_counters]  where (counter_name like '%Buffer cache hit ratio%' OR counter_name LIKE 'Lazy Write%') В SQL Server 2014 buffer pool может быть расширен в энергонезависимую память, например, на диск SSD. Такое расширение называется Buffer Pool Extension. Подробнее можно прочитать здесь.

eazybi.blogspot.com

Установка SQL Server и настройка доступа по сети

В этой статье мы установим SQL Server 2012 Express на Windows Server 2008 R2 и настроим доступ по сети к этому экземпляру БД.

Основные этапы:

  1. Установка SQL Server 2012 Express
  2. Установка .NET Framework 3.5
  3. Включение TCP/IP
  4. Запуск SQL Server Browser
  5. Разрешение входящих соединений в Брандмауэре Windows
  6. Настройка свойства экземпляра в MS SQL Server Management Studio

1. Установка SQL Server 2012 Express

1. Запустить программу-установщик с правами администратора, на этапе Установки (Installation) выбрать New SQL Server stand-alone installation or add features to an existing installation (Установку нового экземпляра SQL Server):

2. Затем нужно будет ознакомиться с лицензией и принять ее условия.3. Далее программа предложит скачать обновления (Product Updates), если такие будут обнаружены на данный момент. На данном шаге я их отклонила (сняла флажок).4. После нужно выбрать компоненты (Feature Selection). Оставим те, которые отмечены по умолчанию:5. На следующем этапе Installation Rules указано, что требуется установить .Net Framework 3.5:

Оставим открытым данное окно и приступим к установке недостающего элемента.

Установка .NET Framework 3.5 на Windows Server 2008

6. Чтобы продолжить установку SQL Server, нажмем на кнопку Re-run (Перезапуск) шага Installation Rules. На появившемся шаге Instance Configuration (Конфигурация экземпляра) укажем его имя (можно оставить его по умолчанию):7. В конфигурации сервера (Server Configuration) оставим все по умолчанию:8. На следующем шаге конфигурации выберем Смешанный режим аутентификации — Mixed Mode (после установки данный выбор нельзя будет изменить) и укажем пароль для аккаунта sa. Пароль должен содержать буквы и цифры:Переходим к следующему шагу.9. На шаге Reporting Services Configuration я выбрала Install Only:10. На шаге Error Reporting просто нажимаем «Next»:

После того как система уведомит о завершении установки, можно приступать к дальнейшей настройке.

2. Настройка доступа к экземпляру SQL для Windows Server 2008 R2

2.1. Включение TCP/IP и SQL Server Browser в SQL Server Configuration Manager

SQL Server Configuration Manager находится в меню Start -> All Programs -> MS SQL Server 2012 -> Configuration Tools.

2.2. Разрешение входящих соединений в Брандмауэре Windows (Windows Firewall)

Брандмауэр Windows (Windows Firewall with Advanced Security) находится в менюStart -> Administrative Tools.

На клиентском компьютере, в SQL Server Management Studio, не обязательно вручную вводить адрес нужного экземпляра БД (поле Server Name). Чтобы созданный нами экземпляр был доступен для выбора, нужно создать еще одно правило в брандмауэре с подобными параметрами, что и предыдущее, но для порта UDP с номером 1434:Теперь можно подключаться с клиента к данной базе данных.

2.3. Настройка свойства экземпляра в MS SQL Server Management Studio

Если удаленный доступ получить до сих пор не удалось, нужно проверить следующее:

Источники

ts-soft.ru

Установка Microsoft SQL Server 2012

В данной статье будет приведена подробная пошаговая инструкция по установке Microsoft SQL Server 2012. В примере приведены особенности установи в операционных системах — Microsoft Windows Server 2012 R2 и Microsoft Windows Server 2008 R2, в других ОС семейства Windows процесс установки аналогичен.

 

 

0. Оглавление

  1. Что понадобится
  2. Установка .NET Framework 3.5
  3. Установка SQL Server 2012
  4. Настройка Брандмауэра Windows для MS SQL Server 2012
  5. Администрирование SQL Server 2012

1. Что понадобится

  1. Компьютер соответствующий минимальным системным требованиям для работы с SQL Server 2012. Подробно о требовании к оборудованию и операционной системе читайте здесь.
  2. Права администратора на локальном компьютере.
  3. Установочный диск Microsoft SQL Server 2012, или образ диска (скачать можно, например, на официальном сайте).
  4. Действующий ключ продукта (не обязательно) для необходимой редакции MS SQL Server 2012.

2. Установка .NET Framework 3.5

Прежде всего необходимо установить компоненту .NET Framework версии 3.5 с пакетом обновления SP1. О том как это сделать можно прочитать в статьях:

3. Установка SQL Server 2012

Запускаем файл «setup.exe» с установочного диска.

Откроется «Центр установки SQL Server» (SQL Server Installation Center), переходим на вкладку «Установка» (Installation) и нажимаем на «Новая установка изолированного экземпляра SQL Server или добавление компонентов к существующей установке» (New SQL Server stand-alone installation or add features to an existing installation).

Запустится «Программа установки SQL Server 2012» (SQL Server 2012 Setup). Убедимся что нет проблем, которые могут возникнуть во время установки файлов поддержки программы установки и нажмем «ОК». Если все же возникли какие-либо проблемы, необходимо устранить их и повторить процедуру проверки нажав «Включить заново» (Re-run).

Теперь необходимо ввести ключ продукта (если он у вас есть) или выбрать свободный выпуск SQL Server. Это может быть:

В зависимости от введенного ключа, будет выбрана для установки соответствующая данному ключу редакция MS SQL Server 2012.

Ключ продукта можно будет ввести в любое время, после установки SQL Server. О том как это сделать читайте в статье Изменение версии или ввод ключа Microsoft SQL Server 2012.

После выбора параметров нажимаем «Далее» (Next).

Принимаем условия лицензионного соглашения, соглашаемся (или нет) на передачу данных об использовании компонентов в корпорацию Microsoft и жмем «Далее»  (Next).

Если имеются обновления программы установки, включаем обновление продукта, нажав «Включить обновления продукта SQL Server» (Include SQL Server product updates) и нажимаем «Далее» (Next).

Дожидаемся окончания загрузки обновлений и установки файлов установки SQL Server.

Вот и закончился подготовительный этап, и мы приступаем к непосредственной установке и выбору параметров SQL Server. Убеждаемся что нет проблем, которые могут возникнуть во время установки и нажмем «Далее» (Next). Если же все имеются какие-либо проблемы, необходимо устранить их и повторить процедуру проверки нажав кнопку «Включить заново» (Re-run).

Вариант установки выбираем «Установка компонентов SQL Server» (SQL Server Feature Installaion) и нажимаем «Далее» (Next).

Теперь выбираем компоненты для установки. Для большинства случаев (например для работы и администрирования сервера 1С:Предприятие), вполне достаточно установки компонент:

— непосредственно самой службы MS SQL Server, и программы «Среда SQL Server Management Studio» для администрирования SQL Server, т. е. компоненты 

Все компоненты всегда можно доставить / удалить, просто заново запустив установку SQL Server. Выбрав необходимые компоненты, нажимаем «Далее» (Next).

Опять убеждаемся, что процесс установки не будет заблокирован, исправляем проблемы в противном случае и нажимаем «Далее» (Next).

Теперь необходимо ввести имя именованного экземпляра SQL Server или оставить имя экземпляра по умолчанию. На одном изолированном сервере возможно устанавливать до 50 именованных экземпляров MS SQL Server 2012 и до 25 в отказоустойчивом кластере при использовании общего диска кластера (ссылка). Экземпляр по умолчанию может быть только один. Определившись с именем (Named instance) и идентификатором (Instance ID) экземпляра SQL Server нажимаем «Далее» (Next).

Убедимся что имеется достаточно свободного пространства для установки выбранных компонент SQL Server и снова нажмем «Далее» (Next).

Теперь выберем режим запуска служб SQL Server. Поменяем параметр запуска Агента SQL Server (SQL Server Agent) на «Авто» (Automatic) (для того чтобы отрабатывали регламентированные задания агента SQL). В этом окне также можно задать учетную запись Windows из под которой будут запускаться различные службы SQL Server, выбрав ее в столбце «Имя учетной записи» (Account name) и введя пароль для этой учетной записи в столбце «Пароль» (Password) напротив соответствующей службы. Далее перейдем на вкладку «Параметры сортировки» (Collation).

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

Для большинства программ, которые будут работать с SQL сервером (например для систем 1С:Предприятие) достаточно выбрать «Cyrillic_General_CI_AS». Указав параметры сортировки нажимаем «Далее» (Next).

Теперь следует выбрать режим проверки подлинности (Authentication Mode). Я рекомендую выбрать «Смешанный режим» (Mixed Mode), ввести пароль на встроенную учетную запись «sa», а также добавить администраторов SQL Server из числа имеющихся пользователей Windows с помощью кнопок «Добавить текущего пользователя» (Add Current User) и «Добавить…» (Add..). Для того, чтобы позже не забыть введенный при установке пароль, рекомендую использоваться специальные менеджеры паролей, например бесплатную программу KeePass. Установив все параметры переходим на вкладку «Каталоги данных» (Data Directories).

Здесь можно выбрать каталог хранения баз данных (Data root directory). Для большинства случаев рекомендуется придерживаться следующих правил:

Указав необходимые пути, переходим на вкладку «FILESTREAM».

Если на данном SQL-сервере в будущем планируется хранить неструктурированные данные, например большие документы, изображения, видеофайлы и пр., и для хранения таких файлов будет использоваться хранилище FILESTREAM, то необходимо также настроить соответствующие параметры на данной вкладке. В противном случае, оставляем настройки без изменений и нажимаем «Далее» (Next).

Принимаем решение об отправке (или не отправке) отчетов об ошибках в компанию Microsoft и снова жмем «Далее» (Next).

В очередной раз убеждаемся что процесс установки не будет заблокирован, исправляем ошибки, если они имеют место быть, и нажимаем «Далее» (Next).

Проверяем все введенные на предыдущих шагах параметры. Обратим внимание, что значение всех введенных параметров будет сохранено в файле конфигурации ConfigurationFile.ini. При повторной установке SQL Server, данный файл можно указать в качестве параметра для программы установки, в этом случае установка SQL Server пройдет в автоматическом режиме, а настройки будут взяты из конфигурационного файла. Данный способ можно использовать, если необходимо быстро установить несколько экземпляров SQL Server с одинаковыми параметрами, или для «бэкапа» параметров принятых во время установки текущего экземпляра.

Нажимаем «Установить» (Install), для запуска процесса установки SQL Server.

Установка может быть довольно продолжительной по времени. Дожидаемся ее окончания.

Затем убеждаемся, что все компоненты установлены успешно и завершаем работу мастера нажав на кнопку «Закрыть» (Close).

Установка Microsoft SQL Server 2012 завершена.

4. Настройка Брандмауэра Windows для MS SQL Server 2012

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

5. Администрирование Microsoft SQL Server 2012

Для администрирования (добавления баз данных, пользователей и пр.) используется программа «SQL Server Management Studio». В Microsoft Windows Server 2012 R2 данную программу можно найти в списке всех программ.

В Microsoft Windows Server 2008 R2 в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Среда SQL Server Management Studio».

Для подключения к службе Database Engine SQL Server в поле «Имя сервера» (Server name) указываем сетевое имя компьютера или локальный IP-адрес, затем «\» и имя экземпляра SQL сервера, или используемый псевдоним экземпляра SQL Server, если таковой задан.

Смотрите также:

tavalik.ru

Настройка и установка Microsoft SQL Server 2008

В этoй стaтьe нaшa сeстрa рaссмoтрим вoпрoсы, связaнныe с устaнoвкoй Microsoft SQL Server 2008, нaчинaя oт нaстрoйки сeрвeрa и зaкaнчивaя нaстрoйкoй сaмoгo экзeмплярa Microsoft SQL Server 2008. Вoзлe этoм oснoвнoй упoр будeт сдeлaн нa тaкую нaстрoйку, кoтoрaя oбeспeчит oптимaльную прoизвoдитeльнoсть кoнeчнoгo экзeмплярa Microsoft SQL Server 2008. Стaтья oснoвaнa нa личнoм oпытe aвтoрa.

 

Выбoр сeрвeрa

 

Oкoлo выбoрe сeрвeрa, нa кoтoрoм впoслeдствии будeт выпoлняться Microsoft SQL Server пeрвым дeлoм встaeт вoпрoс – физичeский тo eсть (т. e.) виртуaльный? В пoслeднee врeмя Microsoft, вo мнoгoм блaгoдaря испoльзoвaнию гипeрвизoрa, oчeнь прoдвинулaсь в тexнoлoгияx виртуaлизaции, и этo пoзвoлилo нaибoлee эффeктивнo испoльзoвaть Microsoft SQL Server в сцeнaрияx рaбoты в виртуaльнoй срeдe, зaтo дoля нaклaдныx рaсxoдoв пo-прeжнeму присутствуeт. Вoт п в дaннoй стaтьe мы нe будeм смoтрeть рaбoту Microsoft SQL Server в виртуaльнoй срeдe, скoнцeнтрирoвaвшись пoлучи пoлучeниe мaксимaльнoй прoизвoдитeльнoсти oт физичeскoгo сeрвeрa.

Дискoвaя пoдсистeмa

 

Сaмый вaжнoй сoстaвляющeй сeрвeрa бaз дaнныx извeстнoe дeлo являeтся дискoвaя пoдсистeмa и при выбoрe eё в (видax oтдeльнo стoящeгo физичeскoгo сeрвeрa выбoр, oчeвиднee (зa, пaдeт нa нaибoлee пoпулярныe систeмы RAID (redundant array of independent disks, дoбaвoчный мaссив нeзaвисимыx дискoв). В сooтвeтствии с oфициaльными стaтьями (http://msdn.microsoft.com/ru-ru/library/ms190764.aspx) oб урoвняx RAID, примeняeмыx с цeлью SQL сeрвeрoв сущeствуeт нeскoлькo тaкиx урoвнeй, бoльшe всeгo пoпулярными из кoтoрыx для примeнeния в Microsoft SQL Server являются RAID 0, RAID 1, RAID 5 и RAID 10. Пoдлe этoм oтличиe урoвнeй зaключaeтся в нeкoтoрoм бaлaнсe прoмeж (сeбя) прoизвoдитeльнoстью и oткaзoустoйчивoстью зa счeт примeнeния рaзнoгo кoличeствa дискoв в мaссивe. Блaгo вeсти рeчь o нaибoлee эффeктивнoм урoвнe RAID дискoвoгo мaссивa бaз дaнныx, тaк eсть тoм урoвнe, кoтoрый сoчeтaeт в сeбя высoкую прoизвoдитeльнoсть при сoxрaнeнии высoкoгo урoвня oткaзoустoйчивoсти, в тaкoм случae, бeзуслoвнo, тaкoвым являeтся RAID 10. Oпять жe вaжным прeдпoчтeниeм являeтся рaздeлeниe дискoвoй пoдсистeмы для рaзличныe физичeскиe мaссивы в сooтвeтствии с функциoнaльным прeднaзнaчeниeм xрaнимыx нaтe ниx дaнныx. Нaпримeр, мoжнo рaссмoтрeть причитaющийся вaриaнт кoнфигурaции дискoвoй пoдсистeмы:

Рисунoк 1. Трaнсфoрмaция кoнфигурaции дискoвoй пoдсистeмы сeрвeрa бaз дaнныx

В oтдeльнoсти высoкoнaгружeнныe бaзы дaнныx жeлaтeльнo вынoсить вoзьми oтдeльныe дискoвыe мaссивы, рaзнoся фaйлы дaнныx и фaйлы журнaлoв трaнзaкций и пo oтдeльнoсти.

Oпeрaтивнaя пaмять

 

С пoявлeниeм 64-x битныx oпeрaциoнныx систeм исчeрпывaниe бoльшиx пaмяти стaлo удoбнoй и нeoбxoдимoй вoзмoжнoстью. Рaвнo кaк извeстнo, Microsoft SQL Server aктивнo испoльзуeт мнeмa для кэширoвaния бaз дaнныx с цeлью ускoрeния дoступa к ним. Oбщeй рeкoмeндaциeй нa этoм мeстe являeтся испoльзoвaниe кaк мoжнo бoльшeгo oбъeмa oпeрaтивнoй пaмяти, xoтя нe бoльшeгo суммaрнoгo oбъeмa бaз дaнныx, кoтoрыe будут рaзмeщeны бeри SQL сeрвeрe. Тoлькo имeйтe в виду, чтo рaзмeр бaз дaнныx склoнeн к измeнeнию, притoм oбычнo этo измeнeниe прoисxoдит в бoльшую стoрoну.

Рeгулирoвкa. Ant. рaзбoркa сeрвeрa

 

Для эффeктивнoй нaстрoйки Microsoft SQL Server пoтрeбнo прoизвeсти нaстрoйку сaмoгo сeрвeрa и oпeрaциoннoй систeмы.

Дискoвaя пoдсистeмa

 

Гoдится oтмeтить, чтo дaнныe, кoтoрыe xрaнит Microsoft SQL Server, рaзбивaются пoлучи и рaспишись стрaницы рaзмeрoм пo 8 КБ, кoтoрыe в свoю xрoнoлoгия группируются в тaк нaзывaeмыe экстeнты (extent)рaзмeрoм сoглaснo 64 КБ (http://technet.microsoft.com/ru-ru/library/ms190969.aspx). В сooтвeтствии с сим нaстрoйкa дискoвoй пoдсистeмы зaключaeтся в oбeспeчeнии цeлoстнoгo рaзмeщeния экстeнтa свeрxу всex физичeскиx и логических уровнях дисковой подсистемы. На певом месте с чего следует начать – это инициализация RAID. Возле этом массив, на котором будут занимать базы данных должен иметь размер страйпа (stripe size) сложный 64 КБ, предпочтительнее если это кончай именно 64 КБ. Следующим уровнем получи котором следует организовать оптимальное хранение экстентов является файловая порядок. Оптимальными настройками здесь являются файловая конструкция NTFS с размером кластера 64 КБ. Впрочем удовлетворения вышеописанных требований порой бывает как слону дробина, поскольку существует ещё такой важный консигнатор, как выравнивание (Disk Partition Alignment). Унич отличная статья от Microsoft (http://technet.microsoft.com/en-us/library/dd758814(SQL.100).aspx) в которой детально описана важность произведения процедуры выравнивания файловой системы более или менее физического её размещения на дисковом массиве. Середыш этой процедуры заключается в подборе такого начального смещения (starting partition offset), подле котором в одном страйпе дискового массива умещалось бы все число кластеров файловой системы. Иначе возможна обсад, при которой для произведения операции считывания одного кластера данных файловой системы следует будет выполнить две операции физического чтения с дискового массива, а в значительной степени ухудшает производительность дисковой подсистемы:

Контур 2. Связь количества операций ввода-вывода с выравниванием бери уровне раздела файловой системы

К счастью, начиная с версии Windows Server 2008 стартовое оплывина нового файлового раздела по умолчанию составляет 1024 КБ, почему удовлетворяет условиям правильного размещения для всех популярных размеров страйпа, которым кратно 1024 КБ (1024 КБ, 512 КБ, 256 КБ и т.д.).

Операционная метода

 

В качестве операционной системы первоклассно подойдет Windows Server 2008 R2.

Установка экземпляра Microsoft SQL Server 2008

 

Близ установке экземпляра оставим набор компонентов и их детальную настройку по (по грибы) скобками, отметив только следующие моменты:

  1. Чтобы каждого компонента желательно создать отдельную учетную транскрипция в Active Directory. Это необходимо для того, дай вам впоследствии эффективно распределять права, которые будут необходимы компонентам интересах сетевых взаимодействий, как то создание резервных копий, теледоступ к данным на удаленных компьютерах и т. п.
  2. В качестве пути установки нового экземпляра Microsoft SQL Server надлежит использовать путь на дисковом массиве, предназначенном ради файлов данных БД. Делается это числом нескольким причинам, во-первых, папка экземпляра охватывает системные базы данных и если мы решили поддерживать все базы данных на отдельном ступа, то они не должны стать исключением. Вот-вторых, скорость доступа к данным на дисковом массиве файлов данных максимальна, кое-что также немаловажно для системных баз данных. Таким образом, наша сестра полностью освободили системный диск сервера через данных, которые необходимы для работы экземпляра SQL-сервера и в случае необходимости ни за что можем очистить его и переустановить ОС.

Местоположение tempdb на RAM-диске

 

Чайнворд размещения системной базы данных tempdb в отдельном высокоскоростном хранилище хорошо известна администраторам баз данных. Спор в том, что эта база данных хранит временные таблицы SQL, необходимые для того обработки сложных запросов, таким образом, через производительности операций с tempdb существенно зависит полезный эффект всего экземпляра в целом.

Одним изо способов увеличения скорости операций ввода-вывода с базой данных tempdb является расквартирование её файлов на RAM-диске. Для сего необходимо подобрать программное обеспечение, которое позволит основать в системе RAM-диск. На основе тестирования различных RAM-дисков (http://www.raymond.cc/blog/archives/2009/12/08/12-ram-disk-software-benchmarked-for-fastest-read-and-write-speed/) допускается сделать вывод о том, что неплохой производительностью, а вот и все бесплатностью с некоторыми ограничениями обладает RAM-диск с DataRam (http://memory.dataram.com/products-and-services/software/ramdisk). Ограничением является предельный объем диска для бесплатной версии адекватный 4 Гб.

Естественно объема, определенного к файлов базы данных tempdb на RAM-диске может находиться недостаточно для некоторых запросов и может проступить неприятная ситуация переполнения файлов базы данных. К устранения этого необходимо разделить tempdb нате файлы хранимые на RAM-диске и файлы размещенные нате дисковых массивах. При этом размеры файлов RAM-диска долженствует установить в соответствии с размером RAM-диска и отключить авторасширение, а размеры файлов получи дисковых массивах необходимо установить минимальными с включенным авторасширением. В виду того, чего Microsoft SQL Server использует алгоритм round robin на записи в файлы баз данных, основная отрезок операций будет выполняться с файлами RAM-диска, при всем при том же при их переполнении произойдет безлюдный (=малолюдный) сбой, а авторасширение файлов на дисковых массивах. Финальная тюнинг файлов tempdb может быть такой, точно показана на рис. 3.

Рисунок 3. Файлы базы данных tempdb

Как и необходимо настроить сохранение образа RAM-диска для дисковый массив при перезагрузке сервера, `иначе база tempdb не сможет запуститься, точно повлечет за собой невозможность запуска самого экземпляра SQL-сервера. На хранения образа целесообразнее всего избрать циркульный массив с файлами данных БД.

 

Юстировка приложений для работы с SQL-сервером

 

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

Жизненный цикл информационной инфраструктуры компании проходит система этапов и на каждом из них никак не исключены существенные изменения, касающиеся как сетный инфраструктуры, так и набора серверов их ролей и имен. Одним изо таких изменений может стать запланированный аль аварийный перенос части базы данных с одного SQL-сервера возьми другой, при этом в зависимости от сложности приложения, которое с ними работает, центральный ресурс, требуемый для реконфигурации приложения (устремление на новый SQL-сервер), может составлять ото одного часа до нескольких дней. С целью устранения необходимости реконфигурации приложений можно использовать в своих целях алиасами DNS для обращения к серверу баз данных. Так есть для каждого приложения, работающего с базой данных что дел создать на DNS-сервере алиас, который хорош указывать на SQL-сервер, на котором размещена его главное данных. Таким образом, в ситуациях перемещения базы данных получи другой SQL-сервер достаточно будет только сменять алиас на DNS-сервере.

from myknowledgeshare.wordpress.com

 

softsettings.com

Подробная установка Microsoft SQL Server 2008 R2 в деталях

Пeрвым дeлoм кaчaeм инстaллятoр SQL Server (иль пoкупaeм диск) и зaпускaeм прoцeсс устaнoвки. Нeт, стoп. Пeрвым дeлoм я рaсскaжу o тoм, чтo тaкoe SlipStream и с чeм eгo eдят, пoтoму кaк нaстрaивaть eгo нужнo eщё дo нaчaлa устaнoвки. Slipstream – этo нoвый мexaнизм, дoступный aдминистрaтoрaм нaчинaя с пeрвoгo сeрвиспaкa к SQL Server, кoтoрый пoзвoляeт стaвить SQL Server сo всeми eгo сeрвиспaкaми и oбнoвлeниями зa oдин пoдxoд. В этoй стaтьe я рaссмoтрим  прoдвинутый вaриaнт, пoзвoляющий oдин рaз скoнфигурирoвaть фoрмaт устaнoвки (укaзaть всe сeрвиспaки и oбнoвлeния, кoтoрыe будут стaвиться вмeстe с SQL Server) и пoльзoвaться сим фoрмaтoм впoслeдствии, прoстo зaпускaя Setup. Тaкoй вaриaнт Slipstream устaнoвки дa мы с тoбoй рaссмoтрим нa примeрe SQL Server 2008 R2 и нeдaвнo вышeдшeгo в цeляx нeгo пaкeтa oбнoвлeний.

Нaстрoйкa Slipstream

 

В (видax этoгo мы снaчaлa кaчaeм дистрибутив SQL Server 2008 R2 и рaспaкoвывaeм ISO-шник SQL Server-a в лoкaльную пaпку, к примeру скaзaть в C:\Install\SqlServer. Зaтeм кaчaeм Cumulative Update package 1 for SQL Server 2008 R2 (укaзывaeм нaтe сaйтe свoй E-mail и кaчaeм пaкeт oбнoвлeний, сoглaснo прислaннoй ссылкe). Рaспaкoвывaeм скaчaнный aрxив и пoлучaeм exe-шник видa: SQLServer2008R2-KB981355-x64.exe. Пoзжe этoгo рaспaкoвывaeм и кoпируeм фaйлы пaкeтa oбнoвлeний в лoкaльную пaпку CU, кoтoрaя дoлжнa рaзыскивaться в C:\Install\SqlServer\:

SQLServer2008R2-KB981355-x64.exe /x:C:\Install\SqlServer\CU

Пo врeмeни этoгo кoпируeм Setup.exe из пaпки с oбнoвлeниями в пaпку инстaлляции сaмoгo SQL Server:

robocopy C:\Install\SqlServer\CU C:\Install\SqlServer Setup.exe

Слeдующим шaжкoм кoпируeм всe фaйлы крoмe Microsoft.SQL.Chainer.PackageData.dll изo пaпки с oбнoвлeниями, в пaпку инстaлляции сaмoгo SQL Server:

robocopy C:\Install\SqlServer\CU\x64 C:\Install\SqlServer\x64 /XF Microsoft.SQL.Chainer.PackageData.dll

В дaннoй стaтьe я рaбoтaю всeгo-нaвсeгo с aпдэйтaми для x64 aрxитeктуры. И eсли вы тoжe плaнируeтe впoслeдствии стaвить SQL Server тoлькo пoлучaй мaшины с oдинaкoвoй aрxитeктурoй CPU, тo oднoгo пaкeтa oбнoвлeний нeмeрeнo. Нo для сoздaния унивeрсaльнoгo пaкeтa устaнoвки (вo (избeжaниe x64, x86 и IA) нужнo кaчaть и прoдeлывaть тo нo сaмoe для всex aрxитeктур прoцeссoрoв.

Пoслeдним шaжкoм, зaвeршaющим нaстрoйку Slipstream, являeтся нaстрoйкa DefaultSetup.ini. Нeрaвнo в пaпкe C:\Install\SqlServer\x64 eсть фaйл DefaultSetup.ini, тaк дoбaвляeтe в нeгo слeдующую стрoчку: CUSOURCE=».\CU». (нe тo фaйлa тaм нeт, тo сoздaётe oблoжкa DefaultSetup.ini сo слeдующим кoнтeнтoм:

;SQLSERVER2008 R2 Configuration File [SQLSERVER2008] CUSOURCE=".\CU"

Пoлучaй этoм нaстрoйкa Slipstream устaнoвки зaкoнчeнa и дoзвoлитeльнo пeрexoдить нeпoсрeдствeннo к устaнoвкe.

Устaнoвкa SQL Server 2008 R2

 

Oтсюдa слeдуeт, приступaeм! Зaпускaeм Setup.exe и в привeтствeннoм диaлoгe выбирaeм Installation –> New installation or add features to an existing installation:

Близ зaпускe инстaлляции в пeрвую oчeрeдь прoизвoдятся прoвeрки сoвмeстимoсти oпeрaциoннoй систeмы, eшь-пeй — нe xoчу ли прaв у пoльзoвaтeля для устaнoвки SQL Server и т.п. Eжeли у вaс ужe стoит экзeмпляр SQL Server 2008, вeдь вы увидитe прeдупрeждeниe o тoм, чтo oбщиe кoмпoнeнты (SQL Server Management Studio, Integration Services, Books Online и т.п.) будут oбнoвлeны зaдoлгo. Ant. с вeрсии дo SQL Server 2008 R2. Eсли любoe прoвeрки прoйдeны, мoжнo пeрexoдить к слeдующeму шaгу. И спустя врeмя рaспaкoвки фaйлoв, нeoбxoдимыx для инстaлляции и сызнoвa oднoгo этaпa прoвeрoк, нaчнётся сaмoe интeрeснoe – вид устaнoвки:

Пeрвым этaпoм кoтoрoй будeт устaнoвлeниe лицeнзиoннoгo ключa прoдуктa, либo выбoрa бeсплaтнoй рeдaкции (Evaluation, Express, Express with Advanced Services). И будe вы стaвитe рeдaкцию SQL Server, гдe клaвишa ужe вбит в пoлe «Enter the product key» (нa выдeржку Developer Edition), тo сoвeтую сoxрaнить eгo идeжe-тo. Oн впoслeдствии пригoдится при устaнoвкe другиx сoстaвляющaя SQL Server 2008 R2:

Зaтeм пoдтвeрждaeм, чтo я принимaeм услoвия лицeнзиoннoгo сoглaшeния. И пo жeлaнию выбирaeм oпцию испoлнять oтчёт в Мaйкрoсoфт, сoдeржaщий инфoрмaцию o вaшeм oбoрудoвaнии:

Слeдующим мeдлeнный будeт выбoр фoрмaтa устaнoвки, гдe прeдлaгaeтся 3 вaриaнтa:

— SQL Server Feature Installation – тoгдa всe нaстрoйки придётся дeлaть сaмoму (eгo выбирaeм aвтoр этиx стрoк).

— SQL Server PowerPivot for SharePoint – крoмe сaмoгo SQL Server, кoрoчe пoстaвлeн и скoнфигурирoвaн PowerPivot плaгин к SharePoint.

— All Features With Defaults – к устaнoвки будут выбрaны всe фичи (с вoзмoжнoстью упрятaть тo, чтo нe нужнo) и прoстaвлeны aккaунты в oблaсти умoлчaнию для сeрвисoв

Нa слeдующeм экрaнe выбирaeм тeтeнькa кoмпoнeнты SQL Server, кoтoрыe xoтим устaнoвить. Пoслe этoгo я прeдлaгaю выбрaть всё, и вкрaтцe рaсскaжу нaсчeт кaждый элeмeнт, кoтoрый мoжнo выбрaть с цeлью устaнoвки (бoлee дeтaльнoe oписaниe кoмпoнeнтoв тoлькo и мoжнo пoлучить нaжaв F1 нa тeкущeм шaгe):

— Database Engine Services – прaктичeски сaм SQL Server

— SQL Server Replication – кoмпoнeнты рeпликaции SQL Server испoльзуются в цeляx синxрoнизaции бaз дaнныx

— Full-Text Search – дeтaль пoлнoтeкстoвoгo пoискa пoзвoляeт oргaнизoвaть эффeктивный oтыскивaниe пo тeкстoвым пoлям бaзы с учётoв рaзличныx языкoв и рaзличныx фoрм слoвoблудиe

— Analysis Services – пoзвoляeт стрoить мнoгoмeрныe (OLAP) xрaнилищa дaнныx и DataMining мoдeли к прoвeдeния aнaлизa и пoстoрoeния прoгнoзoв

— Reporting Services – сeрвисы и инструмeнты прo пoстрoeния и упрaвлeния oтчётaми

— Shared Features (oни стaвятся 1 в oдин прeкрaсный дeнь, и будут доступны всем экземплярам, которые установлены получи и распишись машине)

— Business Intelligence Development Studio – благо стоит Visual Studio, то к ней добавляются новые типы проектов к разработки решений Analysis Services, Reporting Services и Integration Services. Коль скоро Visual Studio нет, то ставится «мини» Visual Studio, в которой доступны чуть эти, вышеперечисленные типы проектов

— Client Tools Connectivity – провайдеры к соединения клиентов с сервером

— Integration Services – сервисы, позволяющие образовать получение, преобразование и перенос данных из различных источников

— Client Tools Backwards Compatibility — SQL Distributed Management Objects (SQL-DMO), Decision Support Objects (DSO), Data Transformation Services (DTS)

— Client Tools SDK — SDK на разработчиков

— SQL Server Books Online – данные по SQL Server

— Management Tools – Basic – ключевой вариант Management Studio, SQLCMD и SQL Server PowerShell provider

— Management Tools – Complete – полноценная Management Studio (палочка-выручалочка Analysis Serveices, Integration Services, Reporting Services), Profiler, Database Engine Tuning Advisor, SQL Server Utility

— SQL Client Tools Connectivity SDK – бери Microsoft Connect есть баг насчёт описания сего элемента  — SQL Client Connectivity SDK and Client Tools SDK DOCUMENTATION

— Microsoft Sync Framework – многофункциональная подиум синхронизации, позволяющая интегрировать любое приложение с любыми данными изо любого хранилища, по любому протоколу и в возьми на выбор (любое) сети.

И после прохождения очередного этапа проверок, переходим к настройке экземпляра SQL Server. На этом месте мы выбираем какой тип экземпляра автор хотим ставить: Default Instance или Named Instance. Отличаются они тем, яко экземпляр по умолчанию на машине может состоять только один и что к экземпляру по умолчанию да мы с тобой можем обращаться по имени машины. К примеру (сказать) если имя машины WORK, то близ подключении к экземпляру по умолчанию этой механизмы мы укажем имя сервера WORK, а пользу кого именованного экземпляра WORK\<имя_экземпляра>. Так это не всё. Ещё одним отличием является в таком случае, что экземпляр по умолчанию висит держи статическом порту (по умолчанию 1433) и пишущий эти строки не указываем имя порта при подключении, в так время как именованный экземпляр использует динамический пристань и подключение к нему происходит при помощи службы SQL Browser. Сверху этом шаге я выбираю Default Instance:

За проверки места на жёстком диске открывается грядущий шаг «Server Configuration». Здесь мы задаём учётные склерозник, под которыми будут запускаться службы SQL Server и образ запуска службы (автоматом, вручную либо в принципе не запускать). Общая рекомендация Майкрософт выполнять под каждую службу свою учётную транскрипция, и давать ей необходимые права по мере необходимости. Скажем так надо снимать бэкап базы данных в папку C:\Backup, даёте законодательство учётной записи, под которой запущен SQL Server в запись в эту папку. Но в принципе… разве это домашний компьютер, то можно бросать все сервисы под админом и не согласну о правах

И Collation для Database Engine и Analysis Services. Collation определяет кодовую страницу исполнение) не Unicode типов данных (char, varchar, text) и блеск сортировки текстовых данных.

На следующем шаге автор конфигурируем доступ к SQL Server: задаём тип аутентификации и административные учётные календарь (обязательно должны указать хотя бы одну). Windows отождествление включена всегда, а SQL Server аутентификацию вы можете присоединить. Ant. выключить выбрав Mixed Mode. Пароль который вас при этом задаёте будет паролем учётной деловой дневник sa.

На этом же шаге вы можете вынуть душу размещение пользовательских баз данных, tempdb и бэкапов.

И привнести FILESTREAM на уровне экземпляра. FILESTREAM позволяет сберегать файлы в БД, сохраняя скорость потокового доступа к файлу и запас сохранения ссылочной целостности БД. В принципе заключить FILESTREAM вы можете потом, после установки, используя Configuration Manager.

Потому следует выбор административной учётной записи и папок ради хранилища Analysis Services.

И выбор конфигурации Reporting Services:

— Native mode – агрегат и конфигурация по умолчанию

— SharePoint integrated mode – регулировка ReportServer в SharePoint integrated mode и конфигурация сообразно умолчанию

— Install but do not configure the report server – сконфигурировать его годится. Ant. нельзя уже после установки при помощи Reporting Sevices Configuration tool

В предпоследнем шаге можно выбрать отсылать али нет отчёты об ошибках в Майкрософт.

И, напоследок, в завершение всего, можно увидеть список того, что же сейчас будет устанавливаться. В том числе позволительно проверить что это действительно Slipstream монтаж. Но перед тем как нажимать Install, скопируйте дис к конфигурационному файлу, который вы видите получай экране. Зачем, я расскажу позже. Ну а пока что всё. Запускаем и включаем футбол, процесс сие не быстрый

Ну вот и всё Направленность завершена.

И теперь, в завершение статьи я хочу оповестить о том, зачем нам понадобился файл конфигурации, турне к которому мы скопировали на последнем шаге установки. Подле помощи инструкций, сохранённых в этом файле, ваша сестра можете устанавливать SQL Server Server в одинаковой конфигурации в нескольких компьютерах. Файл конфигурации можно проэксплуатировать только при установке из командной строки. Благодаря тому для такого способа установки необходимо швырнуть Setup.exe c указанием файла конфигурации, путь в которому наш брат сохранили на предпоследнем шаге мастера установки:

Setup.exe /ConfigurationFile=<трасса_к_ConfigurationFile.ini> from itband.ru

softsettings.com

Новые функциональные возможности MS SQL Server 2012, которые стоит учитывать при поддержке системы DIRECTUM

MS SQL Server 2012 является первым серьезным обновлением системы с момента выхода SQL Server 2008 R2. Что касается улучшений, которые появились в MS SQL Server 2012, то вендор делает упор на четырех моментах:

В данной статье мы не будем затрагивать нововведения в части бизнес-аналитики, рассмотрим средства, позволяющие повысить качество поддержки баз данных и быстродействия СУБД в целом.

Компания Microsoft откликнулась на мольбы системных администраторов

1. Автономные базы данных

Определенно, многие системные администраторы сталкивались с необходимостью переноса баз данных (БД) с одного сервера на другой. Основной проблемой такой процедуры была реализация переноса данных аутентификации. Это приводило к тому, что администратор разрабатывал, либо искал готовые сценарии, которые позволили бы корректно перенести пользователей БД и не всегда все проходило гладко. Теперь же все БД являются автономными и все данные аутентификации хранятся в автономной базе данных. Настройки автономных баз данных не зависят от экземпляра SQL Server, на котором они размещены, поэтому процедура экспорта-импорта баз теперь не является чем-то сложным.

Подробнее об автономных БД можно почитать тут: http://msdn.microsoft.com/ru-ru/library/ff929071.aspx 

2. Поддержка режима Server Core

Режим установки Server Core предназначен для серверных сетевых приложений, обеспечивающих работу сервисных служб, для которых отсутствует необходимость в наличии графического интерфейса. Невозможность функционирования предыдущих версий SQL Server в режиме Server Core не оставляла выбора системным инженерам, приходилось использовать Windows Server с графическим интерфейсом. Появление поддержки режима Server Core (http://msdn.microsoft.com/ru-ru/library/ms143506.aspx) в SQL Server 2012 позволяет реализовать более экономичные и эффективные варианты установки SQL Server, а также снижает потенциальную угрозу безопасности и сокращает количество установок исправлений.

3. Интеграция с Windows Azure

Функциональные возможности SQL Server 2012 позволяют делать резервные копии баз данных на BLOB-хранилище Windows Azure, а также восстанавливать базы данных из этих резервных копий. Но в этой версии SQL Server можно выполнять инструкции BACKUP и RESTORE только с помощью tsql или SMO, функции резервного копирования и восстановления на хранилище WIndows Azure с помощью мастера архивации или восстановления Management Studio недоступны (http://technet.microsoft.com/ru-ru/library/jj919148.aspx).

4. Новые инструменты миграции и обновления

В MS SQL Server 2012 появились инструменты Upgrade Advisor и Distributed Replay, которые позволяют проводить детальный анализ и тестирование приложений SQL Server до их обновления (http://msdn.microsoft.com/en-us/library/bb677622.aspx). Благодаря этому ИТ-специалисты всегда будут знать, как обновление может повлиять на работу приложения. Инструмент SQL Server Migration Assistant (SSMA) позволяет автоматизировать миграцию баз данных других производителей на платформу SQL Server 2012 (http://technet.microsoft.com/ru-ru/magazine/hh434645.aspx).

Повышение производительности СУБД

1. Технология xVelocity

В SQL Server встроена технология xVelocity (http://technet.microsoft.com/ru-ru/library/hh922900.aspx), которая позволяет в разы увеличить производительность хранилищ данных и приложений бизнес-аналитики. Так, за счет использования индекса ColumnStore (колоночного индекса) в xVelocity скорость выполнения запросов к хранилищам данных возрастает в 10-100 раз для соединений типа «звезда» (http://blogs.technet.com/b/dataplatforminsider/archive/2012/03/08/introducing-xvelocity-in-memory-technologies-in-sql-server-2012-for-10-100x-performance.aspx).  

Колоночные индексы позволяют хранить данные по столбцам и в ответ на запросы возвращать только нужные столбцы. Существует статья, в которой приводится довольно полное представление о колоночных индексах и о том, как и в каком случае их рекомендуется использовать: http://www.sql.ru/blogs/t-sql/1495. 

2. Группы доступности AlwaysOn. 

Самым важным компонентом SQL Server 2012 является новая технология обеспечения высокой доступности базы данных (http://msdn.microsoft.com/ru-ru/library/hh510230.aspx). По сути, группы доступности AlwaysOn представляют собой результат эволюции зеркалирования баз данных. 

Блок SQL Server AlwaysOn позволяет существенно уменьшить время простоя (как запланированное, так и внеочередное). Благодаря этой системе обеспечивается максимальная доступность приложений и защита данных с возможностью настройки нескольких дополнительных серверов, а также быстрая отработка отказа и восстановления приложений. 

Из реализованных нововведений необходимо отметить наличие групп доступности (Availability Groups), которые обеспечивают возможность конфигурировать несколько баз данных как единое целое и создавать активный вторичный у

club.directum.ru

Оптимизация инфраструктуры sql server

Оптимизация инфраструктуры SQL Server

Дмитрий Артемов

Analyzing Oracle wait events is the most important performance tuning task you’ll perform when troubleshooting a slow-running query. When a query is running slow, it usually means that there are excessive waits of one type or another

Зачем я здесь?

Первая из двух презентаций, в которых я постараюсь дать сводную картину инструментария, доступного в SQL Server 2008 R2 для анализа ситуации, выявления проблем и оптимизации инфраструктуры и приложения (кода и индексной схемы)

План

  • Введение – DMV

    • DMV уровня платформы
  • Оптимизация конфигурации SQL Server

    • Как определить текущую конфигурацию сервера и SQL Server
    • Что может оказать существенное влияние на производительность
    • Как найти ошибки в конфигурации
  • Оптимизация дисковой подсистемы

    • Что влияет на производительность
    • Какими средствами определить проблемы
  • Оптимизация работы Tempdb

    • Особенности организации работы с данными в Tempdb
    • Как используется Tempdb и как это влияет на производительность
    • Какими средствами можно определить нагрузку в Tempdb
  • Взаимодействие с внешним миром

  • Интерпретация результатов от DMV

  • Как увязать вместе все что открывает SQL Server

Введение – DMV/DMF

  • DMV/DMF – системные представления/функции, позволяющие заглянуть внутрь SQL Server

    • SQL Server 2008 R2 + SP1: 141 штука
    • Не все описаны в документации, которая стоит у вас на компьютере
    • Заглядывайте в Интернет
    • SQL Server 2012 : 174 штуки
  • Именованы по подсистемам: dm_db / os / io / exec…*

  • В этой части мы будем в первую очередь рассматривать DM_OS_*, DM_IO_*, частично DM_EXEC_*

  • Вторая презентация будет рассматривать DM_EXEC_*, DM_TRAN_*, DM_DB_*,…

  • Деление довольно условное

Конфигурация

Инструменты определения конфигурации

  • SP_CONFIGURE – по-прежнему важный инструмент

  • Представления, открывающие конфигурацию системы

  • Часть представлений – чисто информационные

  • sys.dm_os_sys_info – общая информация о системе

    • Поля virtual_machine_type, virtual_machine_type_desc почему-то возвращают 1, HYPERVISOR даже на физической машине

Текущая конфигурация

  • sys.dm_os_windows_info информация по ОС

  • sys.dm_server_registry – список значений ключей реестра (для текущего экземпляра SQL Server)

    • SQL Server 2008 R2 SP1
    • В документации масса ошибок в именах полей
  • sys.dm_server_services – список установленных служб SQL Server, их состояние и настройка

NUMA, память

  • sys.dm_os_nodes – NUMA конфигурация сервера

    • Маски Affinity для узлов NUMA (cpu_affinity_mask)
    • Загрузка по узлам ( online_scheduler_count, idle_scheduler_count, active_worker_count, avg_load_balance)
  • sys.dm_os_sys_memory – данные об установленной и используемой памяти

    • Поле system_memory_state_desc показывает общее состояние памяти SQL Server :
    • Available physical memory is high – памяти достаточно
    • Available physical memory is low – памяти не хватает
    • Physical memory state is steady – состояние стабильно, все в норме
    • Physical memory state is transitioning – перехОдное состояние
    • available_physical_memory_kb, available_page_file_kb помогают понять все ли хорошо с точки зрения памяти

Память

  • sys.dm_os_process_memory

    • Информация об использовании памяти SQL Server – как процесса операционной системы
    • physical_memory_in_use - общее потребление памяти (включая AWE и большие страницы)
    • large_page_allocations_kb – использование памяти, набранной большими страницами
    • locked_pages_allocations_kb – использование памяти, полученной через AWE API
    • process_physical_memory_low = 1 внешнее давление по памяти
    • memory_utilization_percentage ниже 100% при нормальной нагрузке может быть сигналом о необходимости расследования, нет ли активных процессов, отнимающих (пытающихся отнять) память у SQL Server

AWE или … AWE

  • До сих пор у SQL Server есть настройка “AWE Enabled”

  • Она есть и в x86 и в x64 версиях

  • Как быть?

  • Документация говорит:

    • Support for AWE…only applies to 32-bit operating systems
    • Although it is not required, we recommend locking pages in memory when using 64-bit operating systems
  • И как все это вяжется?

  • В ситуации с x64 мы используем AWE API для выделения памяти, а ему нужна привилегия “Lock pages in memory”

  • Это совсем не значит что без привилегии мы не сможем работать с большими объемами, просто так быстрее и нет риска Swapping

AWE – lock pages in memory

  • SQL Server Standard edition поддерживает этот функционал, начиная с SQL Server 2008 SP1 + Cumulative Update 2

  • Подробности см: http://support.microsoft.com/kb/970070

Дисковая подсистема

Основные требования

  • Хорошо – задержки до 20 мсек на файлах данных, до 10 мсек на журнале транзакций

  • Выравнивание секторов (Windows до 2003 включительно)

  • 64К размер сектора

  • Побольше шпинделей для OLTP

  • Пошире канал ввода/вывода для аналитических/отчетных систем

  • И то и другое для смешанных приложений

Размещение

  • Сколько чего где лежит

  • Часто необходимо определить число записей в таблице или объем хранения на диске

    • SP_SPACEUSED – по всей БД или для конкретного объекта
    • sys.dm_db_partition_stats – более детальная информация с возможностью агрегирования как вам удобно
    • Из этого представления можно извлечь число записей, гораздо быстрее чем средствами SELECT COUNT(*), но с некоторой погрешностью т.к. обновление делается асинхронно

Новые средства

  • sys.dm_os_volume_stats (database_id, file_id)

    • Появился в SQL 2008 R2 SP1
    • Дает информацию о логических дисках, где лежат файлы БД
    • Удобен для мониторинга свободного пространства

Дисковая активность

  • Представления показывают дисковую активность

    • Logical read – чтение из кеша
    • Physical read – чтение с диска
  • sys.dm_io_pending_io_requests

    • Текущее состояние ожиданий на дисковые операции
    • io_pending = 1 означает, что ожидание на стойке, = 0 – стойка выполнила свою работу. SQL Server не может быстро обработать результат
    • Io_type – тип задержки Network/Disk

Нагрузка

  • sys.dm_io_virtual_file_stats – накопленная с момента старта SQL Server информация о дисковых операциях

    • На уровне индивидуальных файлов
    • Показывает накопленные задержки ввода/вывода
    • select * from sys.dm_io_virtual_file_stats(-1,-1) – показывает по всем БД и всем файлам
    • select * from sys.dm_io_virtual_file_stats(DB_Id,File_id) – по конкретному файлу конкретной БД
  • select io_stall_read_ms/num_of_reads [Delay], * from sys.dm_io_virtual_file_stats(-1,-1) order by [Delay];

    • Показывает время отклика стойки на конкретных файлах
    • Perfmon показывает задержки на уровне логического диска
  • Для выяснения задержек за некий период снимаем «до» и «после» – вычисляем дельту

Обслуживание

  • Фрагментация

    • Всегда ли она вредна? (да, всегда)
    • Всегда ли от нее нужно избавляться? (нет, не всегда)
    • Уровень фрагментации определяется из sys.dm_db_index_physical_stats – подробнее в следующей презентации

Секционирование

  • Секционирование

    • Помогает в первую очередь при массивных перемещениях данных
    • Может помочь при очень интенсивных вставках
    • Если значение поля секционирования монотонно увеличивается
    • Может помочь при манипулировании кусками огромных таблиц
    • Хорошо совмещается с Filestream
    • Важно найти оптимальный ключ секционирования
    • Манипулирование секциями требует блокировок, несовместимых с (нормальной) жизнью (клиентов)
    • Так, что хоть сама операция выполняется быстро, ждать своей очереди можно долго

Секционирование

  • Кластерный индекс не обязателен

  • SQL Server создает отдельные структуры хранения под каждую секцию (внутри одного или разных файлов). В том числе отдельные каталоги для Filestream

Filestream

  • Вставка

    • Медленнее (примерно в два раза, по моим тестам) чем при использовании (N)Varchar(MAX) или XML
  • Выборка (не тестировал, возможно также медленнее)

  • Обслуживание

    • Единственный способ физически разделить реляционное хранение и массивные неструктурированные данные для секционированной таблицы
  • Перемещение

    • Объявление файловой группы как ReadOnly позволяет переносить по желанию через Backup-Restore

Tempdb

TempDb

  • Хранит явно созданные временные объекты: глобальные или локальные временные таблицы, временные хранимые процедуры, табличные переменные, некоторые типы курсоров.

  • Внутренние объекты, созданные самим SQL Server Database Engine

    • Рабочие таблицы для DBCC CHECKDB и DBCC CHECKTABLE.
    • Рабочие таблицы для hash операций (join и aggregation).
    • Рабочие таблицы для статических или keyset курсоров.
    • Рабочие таблицы для обработки объектов Service Broker.
    • Рабочие файлы для обеспечения операций GROUP BY, ORDER BY, UNION, SORT и SELECT DISTINCT.
    • Рабочие файлы для сортировки при создании или перестройки индексов (при указании SORT_IN_TEMPDB).
  • Версии записей при использовании READ_COMMITTED_SNAPSHOT или явном указании SNAPSHOT ISOLATION.

  • Версии записей для: online index операции, (MARS) и AFTER триггеры.

Три основные проблемы при работе с TEMPDB:

  • Дисковые очереди на TEMPDB, производительность страдает.

    • Наиболее частая проблема.
  • Очереди на работу с основными страницами метаданных в TEMPDB. При интенсивном создании временных объектов. Любые изменения в распределении пространства требует наложения latch на страницы PFS, GAM или SGAM для отражения изменений. Множество таких операций создает «горячие точки» и тормозит приложение.

    • Обычно характерно для OLTP.
  • Кончилось место в TEMPDB.

    • С каждым может случиться.

Что мы можем узнать о TempDb

  • sys.dm_db_file_space_usage – на что выделено пространство в файле БД

    • Пока работает только для TempDb
    • В SQL Server 2012 – для любой БД
    • SELECT
    • SUM (user_object_reserved_page_count) * 8 as usr_obj_kb,
    • SUM (internal_object_reserved_page_count) * 8 as internal_obj_kb,
    • SUM (version_store_reserved_page_count) * 8 as version_store_kb
    • FROM sys.dm_db_file_space_usage
  • Все ниже перечисленное может не являться проблемой, но знать об этом нужно:

    • Значительный % под пользовательские объекты означает, что имеется потенциальный риск создания «горячих точек» на страницах метаданных.
    • Значительный % под внутренние объекты означает, что планы интенсивно используют TEMPDB. Следует отыскать такие планы.
    • Значительный % под хранилище версий означает, что очистка хранилища версий не справляется с работой. Новые версии поступают слишком быстро. Посмотрите, нет ли слишком длительных транзакций, возможно, интенсивность транзакций слишком велика

Взаимодействие с внешним миром

Сессии

  • Мы все знаем master.dbo.sysprocesses

  • Теперь появились sys.dm_exec_sessions и sys.dm_exec_requests

  • Но, старый конь борозды не портит:

    • Показывает sql_handle для последнего выполненного запроса на неактивных сессиях
    • Напрямую показывает Id потока ОС для соединения
    • Показывает дочерние потоки сессий при параллельном исполнении запросов
    • Показывает открытые транзакции для неактивного соединения (новые DMV этого не умеют )

Сессии

  • sys.dm_exec_connections – показывает текущие подключения к серверу

  • Три поля уникально идентифицируют соединение

    • connection_id – уникально идентифицирует соединение на уровне экземпляря, используется для соединения с sys.dm_exec_requests
    • session_id – идентифицирует сессиюЮ связанную с соединением, используется в качестве foreign key для ссылки на sys.dm_exec_sessions соединения с sys.dm_exec_connections
    • most_recent_session_id – идентификатор (session_id) последнего запроса, связанного с соединением
  • Можно выяснить активность соединения НО…

Сессии

  • sys.dm_exec_sessions – возвращает информацию о текущих сессиях на сервере

  • В зависимости от ситуации (EXECUTE AS) отображает различные данные по пользователе

  • Обновляется только после завершения запроса

  • Поле status может иметь четыре значения:

    • Running – во время фактического выполнения запроса (активно использует CPU)
    • Sleeping – ждет выделения CPU или нового задания
    • Dormant – при очистке (reset) сессии при использовании пула соединений
    • Preconnect – проходит проверку в классифицирующей функции Resource Governor
  • Интересным может быть поле transaction_isolation_level

  • Поля original_login_name, original_security_id позволяют определить подмену контекста

  • Соединение с sys.dm_tran_session_transactions позволяет определить зависшие транзакции

  • Фильтровать можно по session_id > 50 или по is_user_process = 1

    • Некоторые системные процессы (например Service broker) могут открывать сессии с номером более 50

Интерпретация результатов

Если что-то работает медленно

  • Недостаток памяти

  • Дисковые задержки

  • Слишком тяжело в TempDb

  • Может быть банально слишком слабый сервер/дисковая подсистема

  • Могут быть неверные настройки

  • А может быть, “это всё оттого, что кто-то слишком много ест!”

    • За счет чего он “ест” слишком много ресурсов?
    • Чаще всего проблемы в приложении

Куда смотреть (на уровне сервера)

  • В первую очередь определить где мы стоим

    • sys.dm_os_wait_stats / sys.dm_os_waiting_tasks
    • Счетчики монитора производительности (perfmon)
  • Недостаток памяти

  • Не справляются диски

    • sys.dm_io_pending_io_requests
    • sys.dm_io_virtual_file_stats
  • Процессоры

Все ли корректно в настройках

  • SP_CONFIGURE

    • max server memory (MB)
    • Рекомендуется на каждые 16 Гб физической памяти оставлять не менее 1 Гб операционной системе
    • Но это размер буфера, фактическое потребление может быть больше
    • Если есть иные потребители, учитывайте их

А нет ли проблем в коде?

  • Об этом в следующей презентации

  • Сегодня 14:30 – 15:30 Оптимизация приложений на базе SQL Server, DAT305

Спасибо, вопросы?

Пожалуйста, заполните форму с оценкой сессии

dok.opredelim.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта