35 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Анализ работы MS SQL Server, для тех кто видит его впервые (часть 2)

Содержание

Информационный портал по безопасности

Информационный портал по безопасности » Программирование » Анализ работы MS SQL Server, для тех кто видит его впервые (часть 2)

Анализ работы MS SQL Server, для тех кто видит его впервые (часть 2)

Продолжаем анализировать что происходит на нашем MS SQL сервере.

В этой части посмотрим как получить информацию о работе пользователей: кто и что делает, сколько ресурсов на это расходуется.

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

Анализ производительности требует глубокого понимания устройства и принципов работы сервера БД и ОС. Поэтому, чтение только этих статей не сделает из вас эксперта.

Рассматриваемые критерии и счетчики в реальных системах находятся в сложной зависимости друг от друга. Например высокая нагрузка HDD, часто связана с проблемой не самого HDD, а с нехваткой оперативной памяти. Даже если вы проведете некоторые из замеров — этого недостаточно для взвешенной оценки проблем.

Цель статей — познакомить с базовыми вещами на простых примерах. Рекомендации не стоит рассматривать как «руководство к действию», рассматривайте их как учебные задачи (упрощенно отражающие действительность) и как варианты «на подумать», призванные пояснить ход мысли.

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

Пример как это сделать. Данный подход может пригодиться, например, для автоматического старта записи трассы в файл по расписанию. Как именно использовать эти команды, можно подсмотреть у самого профайлера. Достаточно запустить две трассировки и в одной отследить что происходит при старте второй. Обратите внимание на фильтр по колонке «ApplicationName» — проконтролируйте, что там отсутствует фильтр на сам профайлер.

Список событий фиксируемых профайлером очень обширен и не ограничивается только получением текстов запросов. Имеются события фиксирующие fullscan, рекомпиляции, autogrow, deadlock и многое другое.

sys.dm_exec_sessions — информация о сессиях. Отображает информацию по подключенным пользователям. Полезные поля (в рамках этой статьи) — идентифицирующие пользователя (login_name, login_time, host_name, program_name, . ) и поля с информацией о затраченных ресурсах (cpu_time, reads, writes, memory_usage, . )

sys.dm_exec_requests — информация о запросах выполняющихся в данный момент. Полей тут тоже довольно много, рассмотрим только некоторые:

  • session_id — код сессии для связи с предыдущим представлением
  • start_time — время старта запроса
  • command — это поле, вопреки названию, содержит не запрос, а тип выполняемой команды. Для пользовательских запросов — обычно это что-то вроде select/update/delete/и т.п. (также, важные примечания ниже)
  • sql_handle, statement_start_offset, statement_end_offset — информация для получения текста запроса: хэндл, а также начальная и конечная позиция в тексте запроса — обозначающая часть выполняемую в данный момент (для случая когда ваш запрос содержит несколько команд).
  • plan_handle — хэндл сгенерированного плана.
  • blocking_session_id — при возникновении блокировок препятствующих выполнению запроса — указывает на номер сессии которая стала причиной блокировки
  • wait_type, wait_time, wait_resource — поля с информацией о причине и длительности ожидания. Для некоторых видов ожидания, например, блокировка данных — дополнительно указывается код заблокированного ресурса.
  • percent_complete — по названию понятно, что это процент выполнения. К сожалению, доступен только для команд у которых четко прогнозируемый прогресс выполнения (например, backup или restore).
  • cpu_time, reads, writes, logical_reads, granted_query_memory — затраты ресурсов.

  • sys.dm_exec_sql_text(sql_handle | plan_handle), sys.dm_exec_query_plan(plan_handle) — функции получения текста и плана запроса. Ниже рассмотрим пример использования.
  • sys.dm_exec_query_stats — сводная статистика выполнения в разрезе запросов. Показывает какой запрос сколько раз выполнялся и сколько ресурсов на это потрачено.
  • Приведенный перечень — лишь малая часть. Полный список всех системных представлений и функций описан в документации. Также, имеется схема связей основных объектов в виде красивой картинки — можно распечатать на А1 и повесить на стену.

    Текст запроса, его план и статистика исполнения — данные хранящиеся в процедурном кэше. Во время выполнения они доступны. После выполнения доступность не гарантируется и зависит от давления на кэш. Да, кэш можно очищать вручную. Иногда это советуют делать когда «поплыли» планы выполнения, но тут очень много нюансов… В общем, «Имеются противопоказания, рекомендовано проконсультироваться со специалистом».

    Поле «command» — для пользовательских запросов оно практически бессмысленно — ведь мы можем получить полный текст… Но не всё так просто. Это поле очень важно для получения информации о системных процессах. Как правило, они выполняют какие-то внутренние задачи и не имеют текста sql. Для таких процессов, информация о команде единственный намек на тип активности. В комментариях к предыдущей статье был вопрос про то, чем занят сервер, когда он, вроде бы, ничем не должен быть занят — возможно ответ будет в значении этого поля. На моей практике, поле «command» для активных системных процессов всегда выдавало что-то вполне понятное: autoshrink/autogrow/checkpoint/logwriter/и т.п.

    Как же это использовать

    Перейдем к практической части. Я приведу несколько примеров использования, но не стоит ограничивать вашу фантазию. Возможности сервера этим не исчерпываются — можете придумывать что-то своё.

    Пример 1: Какой процесс расходует cpu/reads/writes/memory

    Для начала, посмотрим какие сессии больше всего потребляют, например, CPU. Информация в sys.dm_exec_sessions. Но данные по CPU (а также reads, writes) — накопительные. Т.е цифра в поле содержит «итого» за все время подключения. Понятно, что больше всего будет у того кто подключился месяц назад, да так и не отключался ни разу. Это вовсе не означает, что он прямо сейчас грузит систему.

    Немного кода решает проблему, алгоритм примерно такой:

  • сначала сделаем выборку и сохраним во временную таблицу
  • затем подождем немного
  • делаем выборку второй раз
  • сравниваем результаты первой и второй выборки — разница, как раз и будет затратами возникшими на п.2
  • для удобства, разницу можем поделить на длительность п.2, чтобы получить усредненные «затраты в секунду».

    В коде я использую две таблицы: #tmp — для первой выборки, #tmp1 — для второй. При первом запуске, скрипт создает и заполняет #tmp и #tmp1 с интервалом в одну секунду, и делает остальную часть. При последующих запусках, скрипт использует результаты предыдущего выполнения в качестве базы для сравнения. Соответственно, длительность п.2 при последующих запусках будет равна длительности вашего ожидания между запусками скрипта. Пробуйте выполнять, можно сразу на рабочем сервере — скрипт создает только «временные таблицы» (доступны только внутри текущей сессии и самоуничтожаются при отключении) и не несёт в себе опасности.

    Те, кто не любят выполнять запрос в студии — могут его завернуть в приложение написанное на своём любимом языке программирования. Я покажу как это сделать в MS Excel без единой строки кода.

    В меню «Данные» подключаемся к серверу. Если будет требовать выбрать таблицу — выбираем произвольную — потом поменяем это. Как всегда, жмем «Next» и «Finish» пока не увидим диалог «Импорт данных» — в нем нужно нажать «Свойства. ». В свойствах необходимо сменить «тип команды» на значение «SQL» и в поле «текст команды» вставить немного измененный наш запрос.

    Запрос придется немного поменять:

    • добавим «SET NOCOUNT ON» — т.к. Excel не любит отсечки количества строк;
    • «временные таблицы» заменим на «таблицы переменные»;
    • задержка всегда будет 1сек — поля с усредненными значениями не нужны



    Когда данные будут в Excel-е, можете их сортировать как вам нужно. Для актуализации информации — жмите «Обновить». В настройках книги, для удобства, можете поставить «автообновление» через заданный период времени и «обновление при открытии». Файл можете сохранить и передать коллегам. Таким образом, мы из навоза и веточек подручных средств собрали ЫнтерпрайзМониторингТул удобный и простой инструмент.

    Пример 2: На что сессия расходует ресурсы

    Итак, в предыдущем примере мы определили проблемные сессии. Теперь определим, что именно они делают. Используем sys.dm_exec_requests, а также функции получения текста и плана запроса.

    Подставляйте в запрос номер сессии и выполняйте. После выполнения, на закладке «Results» будут планы (два: первый для всего запроса, второй для текущего шага — если шагов в запросе несколько), на закладке «Messages» — текст запроса. Для просмотра плана — необходимо кликнуть в строке на текст оформленный в виде url. План откроется в отдельной закладке. Иногда бывает что план открывается не в графическом виде, а в виде xml-текста. Это, скорее всего, связано с тем что версия студии ниже чем сервера. Попробуйте пересохранить полученный xml в файл с расширением sqlplan, предварительно удалив из первой строки упоминания «Version» и «Build», а затем отдельно открыть его. Если и это не помогает — напоминаю, что 2016 студия официально доступна бесплатно на сайте MS.

    Очевидно, полученный план будет «оценочным», т.к. запрос еще выполняется. Но некоторую статистику по выполнению получить всё равно можно. Используем представление sys.dm_exec_query_stats с фильтром по нашим хэндлам.

    Допишем в конец предыдущего запроса

    После выполнения, в результатах получим информацию о шагах выполняемого запроса: сколько раз они выполнялись и какие ресурсы потрачены. Информация в статистику попадает после выполнения — при первом выполнении там, к сожалению, пусто. Статистика не привязана к пользователю, а ведется в рамках всего сервера — если разные пользователи выполняют один и тот же запрос — статистика будет суммарная по всем.

    Пример 3: А можно всех посмотреть

    Давайте объединим рассмотренные системные представления и функции в одном запросе. Это может быть удобно для оценки ситуации в целом.

    Запрос выводит список активных сессий и тексты их запросов. Для системных процессов, напоминаю, обычно запрос отсутствует, но заполнено поле «command». Видна информация о блокировках и ожиданиях. Можете попробовать скрестить этот запрос с примером 1, чтобы еще и отсортировать по нагрузке. Но будьте аккуратны — тексты запросов могут оказаться очень большими. Выбирать их массово может оказаться ресурсоемко. Да и трафик будет большим. В примере я ограничил получаемый запрос первыми 500 символами, а получение плана не стал делать.

    Примеры запросов выложил на гитхаб.

    Заключение

    Было бы ещё неплохо, получить Live Query Statistics для произвольной сессии. По заявлению производителя, на текущий момент, постоянный сбор статистики требует значительных ресурсов и поэтому, по умолчанию, отключен. Включить не проблема, но дополнительные манипуляции усложняют процесс и уменьшают практическую пользу. Возможно, попробуем это сделать в отдельной статье.

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

    Впереди у нас еще анализ нагрузки на память и сеть, а также прочие нюансы. Дойдем и до них. Материала еще на несколько статей.

    Читать еще:  TeamViewer — удаленное управление компьютером

    Как настроить и запустить Microsoft SQL Server

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

    MS SQL Server

    Данный программный продукт представляет собой систему управления базами данных ( СУБД ) реляционного типа, разработанную корпорацией Microsoft . Для манипуляции данными используется специально разработанный язык Transact-SQL . Команды языка для выборки и модификации базы данных построены на основе структурированных запросов:


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

    Обзор возможностей MS SQL Server


    СУБД является частью длинной цепочки специализированного программного обеспечения, которое корпорация Microsoft создала для разработчиков. А это значит, что все звенья этой цепи ( приложения ) глубоко интегрированы между собой.

    То есть их инструментарий легко взаимодействует между собой, что во многом упрощает процесс разработки и написания программного кода. Примером такой взаимосвязи является среда программирования MS Visual Studio . В ее инсталляционный пакет уже входит SQL Server Express Edition .

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

    Преимущества MS SQL Server :

    • Обладает высокой степенью производительности и отказоустойчивости;
    • Является многопользовательской СУБД и работает по принципу « клиент-сервер »;

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

  • Тесная интеграция с операционной системой Windows ;
  • Поддержка удаленных подключений;
  • Поддержка популярных типов данных, а также возможность создания триггеров и хранимых процедур;
  • Встроенная поддержка ролей пользователей;
  • Расширенная функция резервного копирования баз данных;
  • Высокая степень защищенности;
  • Каждый выпуск включает в себя несколько специализированных редакций.
  • Эволюция SQL Server

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

    • Microsoft SQL Server 1.0 – вышел еще в 1990 году. Уже тогда эксперты отмечали высокую скорость обработки данных, демонстрируемую даже при максимальной нагрузке в многопользовательском режиме работы;
    • SQL Server 6.0 – вышел в 1995 году. В этой версии впервые в мире была реализована поддержка курсоров и репликации данных;
    • SQL Server 2000 – в этой версии сервер получил полностью новый движок. Большая часть изменений коснулась лишь пользовательской стороны приложения;
    • SQL Server 2005 – увеличилась масштабируемость СУБД , во многом упростился процесс управления и администрирования. Был внедрен новый API для поддержки программной платформы .NET ;
    • Последующие выпуски – были направлены на развитие взаимодействия СУБД на уровне облачных технологий и средств бизнес-аналитики.

    В базовый комплект системы входит несколько утилит для настройки SQL Server . К ним относятся:

    • SQL Server Configuration Manager :


    Диспетчер конфигурации. Позволяет управлять всеми сетевыми настройками и службами сервера базы данных. Используется для настройки SQL Server внутри сети.

    • SQL Server Error and Usage Reporting :


    Утилита служит для настройки отправки отчетов об ошибках в службу поддержки Microsoft .

    • SQL Server Surface Area Configuration


    Используется для оптимизации работы сервера базы данных. То есть вы можете настроить функционирование SQL Server под свои нужды, включив или отключив определенные возможности и компоненты СУБД .

    Набор утилит, входящих в Microsoft SQL Server , может отличаться в зависимости от версии и редакции программного пакета. Например, в версии 2008 года вы не найдете SQL Server Surface Area Configuration .

    Запуск Microsoft SQL Server

    Для примера будет использована версия сервера баз данных выпуска 2005 года. Запуск сервера можно произвести несколькими способами:

    • Через утилиту SQL Server Configuration Manager . В окне приложения слева выбираем « SQL Server 2005 Services », а справа — нужный нам экземпляр сервера БД . Отмечаем его и в подменю правой кнопки мыши выбираем « Start ».

    • С помощью среды SQL Server Management Studio Express . Она не входит в инсталляционный пакет редакции Express . Поэтому ее нужно скачивать отдельно с официального сайта Microsoft .

    Для запуска сервера баз данных запускаем приложение. В диалоговом окне « Соединение с сервером » в поле « Имя сервера » выбираем нужный нам экземпляр. В поле « Проверка подлинности » оставляем значение « Проверка подлинности Windows ». И нажимаем на кнопку « Соединить »:

    Основы администрирования SQL Server

    Перед тем, как запустить MS SQL Server , нужно кратко ознакомиться с основными возможностями его настройки и администрирования. Начнем с более детального обзора нескольких утилит из состава СУБД :

    • SQL Server Surface Area Configuration – сюда следует обращаться, если нужно включить или отключить какую-либо возможность сервера баз данных. Внизу окна находятся два пункта: первый отвечает за сетевые параметры, а во втором можно активировать выключенную по умолчанию службу или функцию. Например, включить интеграцию с платформой .NET через запросы T-SQL :

    • SQL Server Management Studio – является основным средством администрирования. В этой среде реализована возможность настройки сервера и баз данных, как через интерфейс приложения, так и с помощью запросов на языке T-SQL .

    Основные настройки можно осуществить через « Обозреватель объектов », отображающий слева в окне приложения все основные элементы сервера в виде древовидного списка. Самой важной является вкладка « Безопасность ». Через нее можно настроить права и роли пользователей и администраторов для основного сервера, или отдельно для каждой базы данных:


    Основная часть настроек сервера баз данных доступна в окне « Свойства сервера »:


    Как видите, Microsoft SQL Server является настолько мощным средством для структуризации, хранения и модификации данных, что на его изучение потребуется много времени. А в статье мы лишь слегка углубились в основы сервера SQL .

    Основы мониторинга производительности и диагностики проблем в SQL Server

    В этой статье мы рассмотрим популярные инструменты, T-SQL запросы и скрипты для обнаружения и решения различных возможных проблем с производительностью SQL Server. Эта статья поможет вам разобраться, когда вашему SQL Server недостаточно ресурсов (памяти, CPU, IOPs дисков), найти блокировки, выявить медленные запросы. Посмотрим какие есть встроенные инструменты и бесплатные сторонние скрипты и утилиты для анализа состояния Microsoft SQL Server.

    Инструменты для диагностики SQL Server

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

    • T-SQL — самый мощный, простой и незаменимый инструмент для поиска проблем и анализом производительности SQL Server. Практически все другие инструменты для работы с SQL Server используют T-SQL. Нет ничего такого, чтобы вы не смогли сделать с помощью T-SQL.
    • SQL Server Management Studio — без SSMS практически невозможно работать с SQL Server. С помощью SSMS вы можете посмотреть Activity monitor, проанализировать план запроса, посмотреть параметры сервера или базы данных и многие другие вещи.
    • Журналы ошибок SQL Server и Windows – если что-то идёт не так, журнал ошибок — это первое место, куда смотрит системный администратор. Журнал ошибок SQL Server можно посмотреть через SSMS. Журналы Windows можно посмотреть через оснастку eventvwr.msc.
    • Монитор ресурсов Windows — resmon.exe незаменимый инструмент Windows для быстрой оценки состояния ресурсов сервера. Использование оперативной памяти и процессора можно посмотреть и через Диспетчер задач, но детальное использование сети и жесткого диска можно посмотреть только через resmon и perfmon.
    • Системный монитор Windows (Performance Monitor) — Perfmon.exe это основное средство мониторинга Windows, он содержит в себе разнообразные “счетчики”, как системных метрик, так и приложений, включая SQL Server. Обычно счетчики perfmon обрабатывают с помощью других систем мониторинга, например, Zabbix, так как в perfmon неудобно хранить и смотреть данные за прошедшее время.
    • Сторонние приложения — существует много платных и бесплатных приложений для мониторинга SQL Server. Например, одним из бесплатных приложений является dbForge Monitor от компании Devart. Приложение устанавливается как дополнение к SSMS и позволяет выводить очень удобный дашборд для отображения текущего состояния вашего SQL Server (информация об использовании памяти, CPU, нагрузках, блокировках, процессах, информацию о бэкапах, “тяжелых SQL запросах”, производительности дисковой подсистемы и т.д.).
    • Скрипты Brentozar – это популярное решение для диагностики настроек и работоспособности SQL Server. У brentozar есть много скриптов для различных задач, но для диагностики нас интересует “sp_blitz”. Скачать можно бесплатно с официального сайта https://www.brentozar.com/blitz/. Запустите sp_Blitz.sql чтобы установить необходимые процедуры и выполните их exec sp_blitz для диагностики. Этот инструмент бесплатный и поддерживается сообществом SQL Server. Sp_blitz определит все популярные проблемы с вашим сервером и посоветует как их решить.
    • Наборы T-SQL скриптов — удобно иметь под рукой коллекции разнообразных T-SQL запросов для диагностики SQL Server, так как не всегда есть время писать собственные запросы, лучше вооружиться заранее. Ниже перечислены ссылки на полезные T-SQL/PowerShell запросы, которые я часто использую при диагностике и тюнинге MS SQL:
      • https://github.com/SQLadmin/AwesomeSQLServer — набор запросов для мониторинга CPU/RAM/Disk IO и прочих параметров.
      • https://github.com/dgavrikov/databases_scripts/tree/master/SQL%20Server – много полезных скриптов и лайфхаков
      • https://github.com/ktaranov/sqlserver-kit — Скрипты и полезная информация. Много примеров работы с SQL Server через PowerShell

    Обнаружение и решение проблем с производительностью SQL Server

    Самой распространенной проблемой с которой сталкивается системный администратор, работающий с SQL Server, это жалобы пользователей на производительность запросов и самого сервера: “тормозит”, “долго выполняется запрос“, и так далее.

    Прежде всего нужно убедиться, что серверу хватает ресурсов. Рассмотрим, как в SQL Server быстро проанализировать использование памяти, CPU, дисков и наличие блокировок.

    Анализ использования оперативной памяти SQL Server

    Для начала нужно определить сколько памяти доступно SQL Server. Для этого запустите SSMS (SQL Server Management Studio), зайдите на сервер и зайдите в свойства сервера (ПКМ по названию сервера в Обозревателе объектов).

    Сам по себе доступный объём RAM вам ничего не скажет. Нужно сравнить это число с используемой памятью в Диспетчере Задач и самим движком SQL Server с помощью DMV.

    В Диспетчере задач, во вкладке Подробности, найдите sqlservr.exe и посмотрите сколько оперативной памяти использует этот процесс.

    • Если на сервере, например, 128 GB оперативной памяти, а процесс sqlservr.exe использует 60 GB и ограничений по RAM у SQL Server нет, то оперативной памяти вам хватает.
    • Если SQL Server использует 80-90% RAM от заданной или максимальной, то в таком случае нужно смотреть DMV. Имейте в виду, что sqlservr.exe не сможет использовать всю оперативную память. Если на сервере 128 GB, то sqlservr.exe может использовать только 80-90% (100-110 GB), так как остальная память резервируется для операционной системы.

    Имейте в виду, что процесс SQL Server’a не отдаёт оперативную память обратно в систему. Например, ваш SQL Server обычно использует 20 GB памяти, но при месячном отчете он увеличивает потребление до 100 GB, и даже когда вычисление отчета закончится и сервер будет работать в прежнем режиме, процесс SQL Server’a всё равно будет использовать 100 GB до перезагрузки службы.

    Даже если вы уверены, что оперативной памяти серверу хватает, не будет лишним точно знать объём потребляемой RAM.

    Узнать реальное использование RAM можно с помощью Dynamic Management Views. DMV это административные вьюверы (представления). С помощью DMV можно диагностировать практически любую проблему в SQL Server.

    Посмотрим sys.dm_os_sys_memory, для удобства используем запрос:

    Рассмотрим каждый выводимый параметр:

    1. [Total Physical Memory] – объём оперативной памяти доступный в операционной системе. На некоторых серверах может показывать немного больше реально установленной.
    2. [Available Physical Memory] – объём оперативной памяти доступный для SQL Server, без учета уже захваченной SQL Server.
    3. [Total Page File (MB)] – Объём “Сommit limit”. Commit Limit = Оперативная память + все файлы подкачки. То есть, если у вас на сервере 32 GB оперативной памяти и 16 GB файл подкачки, commit limit будет 48 GB.
    4. [Available Page File (MB)] – Объём файла подкачки.
    5. Percentage Used – процент занятой оперативной памяти. Такого параметра нет в самом sys.dm_os_sys_memory, но он считается по формуле available_physical_memory_kb / total_physical_memory_kb
    6. [Memory State] – Состояние RAM. Поле system_memory_state_desc содержит в себе состояние потребления оперативной памяти в виде текста. Значение этого поля считается исходя из других двух: system_low_memory_signal_state и system_high_memory_signal_state. Вы можете выбирать их напрямую, если вам нужен Boolean/bit формат данных. Для ознакомления со всеми полями sys.dm_os_sys_memory ознакомьтесь с документацией https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-sys-memory-transact-sql?view=sql-server-ver15
    Читать еще:  Шпаргалка Java программиста 8. Библиотеки для работы с Json (Gson, Fastjson, LoganSquare, Jackson, JsonPath и другие)

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

    Если Вам нужно убедиться, что серверу хватает RAM, вы можете смотреть только на поля system_low_memory_signal_state, system_high_memory_signal_state и system_memory_state_desc. Если system_low_memory_signal_state = 1, то серверу явно не хватает оперативной памяти.

    Загрузка процессора в SQL Server

    Нагрузку на процессор определить проще, так как это можно сделать в Диспетчере задач. Чтобы узнать текущую нагрузку на процессор, найдите в Диспетчере задач процесс sqlservr.exe

    Если вы хотите узнать нагрузку за прошедшее время, можно воспользоваться запросом:

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

    Анализ нагрузки на диск SQL Server

    Посмотрим на загрузку дисков в операционной системе. Для этого запустите resmon.exe.

    Нам нужна вкладка Disk. В секции Disk Activity отображаются файлы, к которым идёт обращение, и их скорость read/write на текущий момент. Отфильтруйте эту секцию по Total (кликните на Total). На самом верху будут файлы, которые на данный момент максимально используют диск. В случае с SQL Server это может быть полезно чтобы определить какая база больше всего нагружает диск на текущий момент.

    В секции Storage отображаются все диски в системе. В этой секции нам нужны 2 параметра – Active Time и Disk Queue. Active Time в процентах отображает нагрузку на диск, то есть если вы видите на диске C: Active Time равный 90, это значит что ресурс чтения/записи диска на текущий момент используется на 90%. Столбец Disk Queue отображает очередь обращений к диску, и если значение очереди не равно нулю, то диск загружен на 100% и не справляется с нагрузкой. Так же если Active Time близок к 100, то диск используется практически на пределе своих возможностей по скорости.

    Просмотр блокировок в SQL Server

    После того как мы убедились, что серверу хватает ресурсов, можно переходить к просмотру блокировок.

    Блокировки можно посмотреть через Activity Monitor в SSMS, но мы воспользуемся T-SQL, так как этот вариант более удобен и нагляден. Выполняем запрос:

    Этот запрос возвращает список блокировок в виде дерева. Это удобно в работе, так как обычно, если возникает одна блокировка, она провоцирует за собой другие. Аналогично в Activity Monitor или в выводе sp_who2 можно увидеть поле “Blocked By”.

    Если запрос ничего не вернул, то блокировок нет.

    Если запрос вернул какие-то данные, то нужно проанализировать цепочку.

    HEAD значит что этот запрос является причиной всех остальных блокировок ниже по дереву. 64 – это идентификатор процесса (SPID). После этого пишется тело запроса, который вызвал блокировку. Если у вас хватает ресурсов сервера, то скорее всего дело в самом запросе и во взаимном обращении к каким-то объектам. Для того чтобы сказать точнее, нужно анализировать конкретный запрос, который вызвал блокировку.

    Политики SQL Server

    Даже когда у вас всё работает хорошо и жалоб нет, на самом деле может быть много проблем, которые всплывут позже. Для этого в SQL Server есть политики.

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

    В SSMS, подключитесь к серверу, на котором хотите выполнять политики (Management -> раздел Policy Management).

    Импортируем файл Database Auto Shrink.xml. Жмём Evaluate

    На экземпляре node1 две базы данных, test1 и test2. На test2 включен autoshrink. Посмотрим детали.

    Политика определила включенный параметр AutoShrink, в описании обычно пишется объяснения к правилам. В данном случае дается объяснение почему auto shrink лучше отключать.

    Политики могут выполняться либо по расписанию, либо по требованию (разово). Результаты выполнения политики можно посмотреть в журнале политик.

    При установке SQL Server нужно выбирать только используемые компоненты СУБД, и указывать настройки в соответствии с конфигурацией “железа” вашего сервера. Всегда следите чтобы серверу хватало ресурсов, и чтобы на сервере не было блокировок

    Самым мощным инструментом для диагностики SQL Server является T-SQL и DMV. Так же рекомендуется построить круглосуточный мониторинг над SQL Server и над обслуживающей его инфраструктурой для обнаружения всех возможных проблем.

    Основы работы с MSSQL

    MS SQL Server: что такое?

    MSSQL (Microsoft SQL Server) является системой администрирования баз данных, выпущенной Microsoft в 1989 году. В этой библиотеке используется Transact-SQL, расширенный язык SQL-запросов.

    MSSQL Server подойдёт:

    • для управления базами масштабных предприятий,
    • если ПО проекта требует обращения к MSSQL,
    • при нехватке функционала MySQL,
    • для использования не только в веб-проектах, но и в desktop-программах.

    Система управления баз данных MSSQL представлена в нескольких редакциях (Enterprise, Standard, Express, Developer). О том, чем отличаются данные выпуски, вы можете узнать на официальном сайте Microsoft.

    Версии MSSQL на хостинге REG.RU

    На виртуальном Windows-хостинге доступна версия Microsoft SQL Server 2017 Web Edition c возможностью работы в режиме совместимости с SQL Server 2008.

    Изменить версию MSSQL на виртуальном хостинге REG.RU невозможно.

    Если для вашего проекта требуется другая версия базы данных, то рекомендуем приобрести сервер Windows-VPS. Обладая полными root-правами на VPS, вы сможете самостоятельно установить необходимый сервер баз данных. Также установка программного обеспечения возможна в рамках услуги Администрирование сервера VPS.

    Как создать базу данных MSSQL

    Перейдите в раздел «Базы данных» и нажмите Добавить базу данных:

    • Имя базы данных,
    • Сервер баз данных — выберите localhost (по умолчанию для MS SQL),
    • Соответствующий сайт,
    • Имя пользователя базы данных,
    • Пароль.

    Готово, вы создали базу данных MSSQL.

    Удалённый доступ к MSSQL

    Скачайте на локальный компьютер SQL Server Management Studio (SSMS) версии 2017 и выше с официального сайта Microsoft:

    Установите скачанный дистрибутив, следуя инструкции в установщике:

    Запустите программу. Укажите необходимые параметры доступа к базе данных:

    • Тип сервера — Ядро СУБД;
    • Имя сервера — имя сервера, на котором располагается ваша услуга хостинга. Его можно найти в информационном письме, которое присылается при заказе, или в Личном кабинете (страница услуги хостинга — вкладка «Управление» — поле «Сервер хостинга»);
    • Проверка подлинности — Проверка подлинности SQL Server;
    • Имя для входа — имя пользователя базы данных, к которой вы подключаетесь;
    • Пароль — пароль пользователя базы данных.

    Готово,вы установили MS SQL Management Studio и настроили к базам данных MSSQL удалённый доступ.

    Как отфильтровать базы данных в выпадающем списке MS SQL Management Studio

    По умолчанию в MS SQL Management Studio в списке «Базы данных» показываются все базы данных, хранящиеся на сервере. Для удобства вы можете отфильтровать базы данных по имени и вывести только свои. Для этого:

    В Обозревателе объектов кликните правой кнопкой мыши по папке Базы данных. Нажмите ФильтрНастройки фильтра:

    В открывшемся окне «Параметры фильтра» введите Имя базы данных. Нажмите ОК:

    Готово, теперь в папке «Базы данных» будет показываться только ваша база данных.

    Что делать, если превышен лимит на размер базы данных

    На всех тарифах хостинга REG.RU максимальный размер базы данных составляет 4 Гб. Если размер базы превысит 3 Гб, вам будут высланы уведомления. При превышении максимального размера (4 Гб) высылается предупреждение с последующей блокировкой до момента устранения проблемы.

    Как снять блокировку, если доступ сайтам уже ограничен

    При ограничении доступа на все ваши сайты устанавливается форма базовой аутентификации. Для получения доступа к сайту введите Имя пользователя «regru» и Пароль «regru»:

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

    Как уменьшить размер базы данных MSSQL

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

    Для этого в Обозревателе объектов перейдите в папку Базы данных, кликните правой кнопкой мыши по нужной базе данных и нажмите Свойства:

    В выпадающем списке «Модель восстановления» выберите Простая:

    Проверьте, что занимает больше всего места в базе данных. Для этого в открытом окне выберите Файлы. В столбце Размер (МБ) указано количество занимаемого пространства. Если вы видите, что много места занимает журнал, переходите к следующему шагу. Если же большую часть места занимают данные, рекомендуем обратиться к разработчикам сайта для оптимизации/чистки таблиц базы данных. Нажмите OK:

    Для сжатия лога транзакций вам необходимо иметь права db_owner. Проверьте наличие этих прав. Для этого в Обозревателе объектов перейдите в папку БезопасностьИмена для входа, кликните правой кнопкой мыши по пользователю базы данных и нажмите Свойства:

    В открывшемся окне выберите Сопоставление пользователей. Кликните по имени базы данных и проверьте чекбокс db_owner. Если флаг на db_owner не установлен, запросите права в заявке в техническую поддержку. Нажмите OK:

    Перейдите к сжатию базы данных. Нажмите Создать запрос. Скопируйте SQL-запрос в поле:

    u1234567_name — название вашей базы данных,

    u1234567_name_log — логическое имя лога. Его можно найти в столбце Логическое имя в строке с журналом (шаг 4). Обратите внимание, что физическое имя лога транзакций может отличаться от логического.

    Затем нажмите Выполнить:

    Готово, вы уменьшили размер базы данных MSSQL.

    Что такое СУБД

    Дата изменения: 12.10.2017

    Представление о базах данных (БД) с пользовательской и системной точек зрения различны. Для пользователя БД – это таблица с нужной ему информацией на мониторе или листке бумаги. С администраторской(системной) БД — набор файлов, внутри которых реализованы таблицы и связи, к которым нужно обеспечить доступ пользователю.

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

    Поскольку и именно сервер предоставляет данные, клиенты должны запрашивать их. Клиент посылает запрос SQL серверу. Сервер обрабатывает запрос и возвращает клиенту запрошенные им данные. Запрос реализуется на специальном языке, который одинокого понятен пользователю и серверу. Этот язык SQL.

    Сервера различаются тем:

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

    Для каждой из этих целей служит отдельный программный компонент:

    • Предоставление доступа и визуализация БД – прикладные программы;
    • Предоставление данных – интерфейс;
    • Хранение данных – программы взаимодействия с файловой системой;

    Для взаимодействия этих программных компонентов существует еще один, которые объединяет их в систему, он называется Системой Управления Базами Данных (СУБД).

    Зачем нужна СУБД

    СУБД – это программная прослойка между пользователем и сервером. Поэтому она позволяет абстрагировать пользователя от системного видения БД, а системе предоставляет способ взаимодействовать с пользователем.

    СУБД должна обеспечивать:

    • извлечения данных с диска, сохранение данных на диск;
    • работу с данными в оперативной памяти сервера;
    • запись истории изменения БД (журналирование);
    • поддерживать запросы пользователя для определения и манипулирования данными на языке SQL.

    В зависимости от различия в реализации этих компонентов различаются и СУБД.

    Виды СУБД

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

    По поддержке баз данных различных моделей данных СУБД различаются на:

    • Иерархические;
    • Сетевые;
    • Реляционные;
    • Объектно-ориентированные;
    • Объектно-реляционные.

    Иерархические БД – это деревья данных, где каждый вышерасположенный объект имеет в подчинении несколько нижерасположенных. Доступ к данным осуществляется посредством движения по объектам сверху-вниз.

    Сетевые отличаются от иерархических тем. Что каждый потомок в них может иметь несколько предков (множественное наследование).

    Реляционные – безусловный лидер среди СУБД (93% всего рынка). Основаны на поддержке реляционных БД, то есть наборов таблиц и их отношений с возможность изменения обеих.

    Объектно-ориентированные (ООСУБД) управляют абстрактными объектами, которые наделены свойствами и наделены методами для выполнения действий.

    Объектно-реляционные (ОРСУБД) – реляционные СУБД, поддерживающие обьекты свойства и методы из объектно-ориентированной СУБД.

    По способу доступа к БД:

    • Файл серверные.
    • Клиент-серверные;
    • Встраиваемые.

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

    По степени распределённой данных:

    • Локальные: клиент и сервер – один компьютер;
    • Распределенные – клиент и сервер разные компьютеры.

    Какую СУБД мы изучаем

    В основу курса положена работа с СУБД от компании Microsoft – SQL Server. Это реляционная распределенная клиент-серверная СУБД. Все запросы в последующих главах написаны на диалекте языка SQL – Transact SQL.

    Эта СУБД выбрана из -за ее популярности на системах на базе операционных систем Windows.

    Следующий раздел посвящен тому. Что нужно для работы с этой СУБД. Откуда это взять. Как установить, настроить и приступить к работе.

    Читать еще:  Статистичний аналіз тесту в MOODLE

    Установка и настройка MS SQL Server и MS SQL Server Management Studio

    Этот раздел посвящен вопросам установки, настройки и запуска СУБД MS SQL Server – для реализации сервера и установки, и настройки MS Server Management Studio – для реализации запросов на языке Transact SQL серверу.

    Установка обоих компонентов будет производится на один компьютер. И несмотря на то, что SQL Server распределенная СУБД, выполнение запросов и их написание будет производится на одном и том же компьютере.

    Установка ПО для работы

    В данном разделе рассказывается как установить и настроить SQL Server на примере SQL Server 2016 Enterprise – самой новой версии.

    Для начала скачайте установочный пакет SQL Server 2016 Enterprise с официальной страницы: https://www.microsoft.com/en-us/sql-server/sql-server-editions-express. Версия, которую вы скачали будет работать бесплатно в течении 180 дней.

    Вместо нее можно использовать SQL Server 2016 Developer Edition, если у вас есть подписка MSDN. Станица для скачивания: https://www.microsoft.com/en-us/sql-server/sql-server-editions-developers.

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

    Создание учетной записи

    Выполните следующие инструкции чтобы создать учетную запись в Windows. Способ работает во всех ОС этого семейства начиная с 2000 и заканчивая 10.

    1. Кликните правой кнопкой мышки по значку «Мой компьютер» на рабочем столе и выберите из списка пункт «Управление». Откроется оснастка «Управление компьютером».
    2. В окне оснастке выберите пункт меню «локальные пользователи», затем выделите пункт «пользователи». Окно приобретёт вот такой вид: пользователи» src=»https://brainoteka.com/Content/uploads/users/4/20171014152342_image001.jpg» style=»max-width:600px; width:100%» />
    3. Кликните правой кнопкой мыши по пустому пространству папки или по названию папки и выберите пункт «новый пользователь». Откроется такое окно:
    4. Придумайте имя пользователя и пароль заполните их в формы и нажмите кнопку создать. Рекомендуем использовать латинские символы.

    Установка SQL Server

    1. Запустите скачанный ранее пакет установки. Установщик проверит подходит ли ваш компьютер по производительности и есть ли на нем все необходимое для установки программное обеспечение. Если последнего не окажется, он его скачает. После этого откроется SQL Server Installation Server:
    2. Выберите пункт «Установка».
    3. После изменения экраны кликните на пункте «Новая установка изолированного экземпляра SQL Server». Запустится установка и установщик попытается обновиться до последней версии. Щелкните кнопку «Далее», чтобы перейти к следующему шагу:
    4. На этапе «правил установки» проследите чтобы в окне не было красных крестиков. Если они появились, то щелкайте по выделенным строкам предупреждений и следуйте инструкциям по устранениям. Затем, щелкните кнопку «Далее». Окно установки снова изменится:
    5. В появившемся окне выберите «Выполнить новую установку SQL Server 2016» и нажмите «Далее». Откроется окно регистрации продукта:
    6. Введите лицензионный ключ продукта, если он у вас есть. Либо выберите Evaluation для активации 180 дневной копии.
    7. В следующем окне прочтите лицензионное соглашение, и примите его, установив флажок в поле «Я принимаю…». И нажмите «Далее»
    8. Откроется окно компонентов. Выберите пункты, установив галочки напротив:
      • Службы ядра СУБД;
      • Соединение с клиентскими средствами;
      • Компоненты документации.
      Нажмите «Далее»
    9. В следующем окне выберите «экземпляр по умолчанию» если уже есть установленная копия SQL Server или именованный экземпляр, если устанавливаете первый раз. Введите в поле имя Экземпляра и нажмите «Далее».
    10. В следующем окне проверьте, хватает ли места на диске. Если нет, освободите его и нажмите «Далее».
    11. На этапе «Настройка Ядра СУБД» убедитесь, что выбрана строка «Проверка подлинности Windows». Если нет, выберите его. Затем добавьте в поле внизу пользователя, которого создавали перед установкой, либо добавьте текущего с помощью соответствующей кнопки Нажмите «Далее»
    12. На следующем окне перепроверьте все настройки установки и нажмите «далее»
    13. Понаблюдайте за установкой и нажмите «Закрыть», когда появится сообщение о завершении установки.

    Установка и настройка MS SQL Server Management Studio

    После того, как мы настроили сервер. Нужно настроить клиент. MS SQL Server Management Studio предоставляет удобный визуальный интерфейс для клиента и позволяет удобно разрабатывать и отправлять серверу запросы.

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

    И установите. Программа сама определит, где у вас сервер. Просто следуйте инструкциям.

    Настройка и работа в Management Studio

    1. Найдите Management Studio в меню «ПУСК» и запустите.
    2. В открывшемся окне соединения с сервером выберите:
      В поле тип сервиса – Ядро СУБД
      В поле имя сервера – имя сервера, которое вы указали при установке
      Проверка подлинности – Проверка подлинности Windows
    3. Нажмите кнопку «соединить».

    Management Studio подключится к SQL Server и откроется основное окно программы:

    Настоятельно рекомендуем изучить элемент программы под названием обозреватель объектов. Он позволяет работать с всеми структурными элементами баз данных на сервере через интерфейс похожий на проводник Windows.

    Создать новый запрос можно если кликнуть на кнопке «Создать запрос». Запрос будет создан для текущей таблицы, которая указана в выпадающем списке сверху, в данный момент master.

    Если кликнуть по кнопке «создать запрос» несколько раз, то откроется несколько вкладок, как на скрине. Для каждого из них можно поменять текущую таблицу с помощью выпадающего списка.

    Под полем редактора запросов располагается поле результатов. Там будут показываться результаты выполнения запроса:

    Вот и все. Остальному можно научиться самостоятельно в процессе работы.

    Топ 10 вопросов для собеседования на позицию Администратор MS SQL Server

    Коллеги, добрый день. Сегодня мне бы хотелось обсудить с вами вопросы, которые кажутся для меня наиболее интересными для обсуждения с кандидатом на позицию Администратор MS SQL Server. Раз тема называется «Топ 10», то я выбрал для вас 10 наиболее интересных вопросов в порядке возрастания сложности. Как бонус ниже «Топ 10» будут приведены дополнительные вопросы, которые так же могут быть интересными.

    Топ 10 вопросов для собеседования на позицию Администратор MS SQL Server:

    1. Расскажите о вашем опыте работы и какие задачи выполняли лично?

    2. Назовите основной инструмент управления Microsoft SQL Server?

    3. Какие средства мониторинга и поиска узких мест MS SQL Server вы знаете?

    4. Какие виды backup существуют и чем они отличаются?

    5. Какие три операции необходимо регулярно выполнять с БД, чтобы поддерживать её работоспособность на должном уровне?

    6. Каковы плюсы и минусы использования индексов?

    7. Что такое «join»?

    8. Что такое триггер?

    9. Знаете ли вы что такое DMV? Для чего их можно использовать?

    10. Какие способы обеспечения отказоустойчивости вы знаете?

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

    Дополнительные вопросы:

    1. Очень интересный и очень простой вопрос для тех, кто понимает работу SQL Server звучит следующим образом — «В каких случаях запрос select * from table where id = id вернет не все содержимое таблицы»

    2. Что такое журнал транзакций?

    3. Отличие функций от хранимых процедур

    4. Какая разница между «where» и «having» выражениями?

    5. Почему выражения «group by» или «order by» дорогие для выполнения (снижают производительность)?

    6. Какие манипуляции необходимо выполнить, чтобы ускорить работу БД и запросов?

    7. Что такое нормализация и денормализация? Зачем используется денормализация?

    8. Что такое покрывающие индексы?

    9. Какие службы Microsoft SQL Server вы знаете и для чего они нужны?

    10. Что такое репликация? Какие виды репликации Вы знаете? Чем они отличаются?

    11. Без чего нельзя добавить таблицу в репликацию?

    12. Какая разница между varchar и nvarchar

    Вопросы от опытных администраторам вам

    1. Как вы изучаете новые вещи?

    • Если вы не развиваетесь, то это существенно уменьшает ваши шансы остаться в профессии

    2. Я менеджер, а вы администратор MS SQL Server, объясните мне почему мы не должны перенести проекты на Oracle или MySQL?

    • Очень желательно если вы разбираетесь в конкурентах и знаете их слабые и ваши сильные стороны

    3. Менеджеру нужен новый экземпляр SQL Server, что вы у него спросите?

    • Здесь нет однозначного ответа. Кто-то хочется услышать про возможность виртуализации, критичность и редакцию SQL Server, кто-то про Collation, требования к самому серверу или размер данных

    4. Напишите скрипт, который реализует следующую логику: «Напечатайте числа от 1 до 100, для чисел кратных трем, выведите «Три» вместо числа,для кратных пяти — «Пять». Для чисел, кратных как трем так и пяти выведите «ТриПять».

    • Достаточно распространённый вопрос за границей, его можно решить разными способами.

    5. В каких случаях и почему некластерный индекс может быть быстрее кластерного?

    6. Что делать, если диск с tempdb пропал. Как запустить SQL Server?

    А какие вопросы кажутся важными вам? Пишите в комментариях, почту (freeman-dima@mail.ru) и вконтакте (https://vk.com/sqlcom).

    3 комментария на «Топ 10 вопросов для собеседования на позицию Администратор MS SQL Server»

    Добрый день!
    А можно-ли получить правильные ответы? 🙂

    Извиняюсь за долгий ответ.
    1..Расскажите о вашем опыте работы и какие задачи выполняли лично?

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

    2. Назовите основной инструмент управления Microsoft SQL Server?

    Sql Server Management Studio

    3. Какие средства мониторинга и поиска узких мест MS SQL Server вы знаете?

    Sql profiler, Performance Monitor, Waits and Latch (dmv), Top expensive queries (dmv), Data collector. Можно добавить любые не штатные средства мониторинга (scom,zabbix и др. специализированные продукты)

    4. Какие виды backup существуют и чем они отличаются?

    Полный (Full), разностный иначе дифференциальный (Diff) и лога (Log). Более детально рекомендую изучить самостоятельно, каждый администратор должен знать данный вопрос досконально.

    5. Какие три операции необходимо регулярно выполнять с БД, чтобы поддерживать её работоспособность на должном уровне?

    Обновление индексов, статистики и проверка целостности бд (check db)

    6. Каковы плюсы и минусы использования индексов?

    Ускоряют получение данных, замедляют обновление/вставку

    7. Что такое «join»?

    Способ объединения таблиц. Могут спросить какие бывают. Это Inner join, left join, right join, full join, cross join. Описывать каждый из них — отдельный разговор

    8. Что такое триггер?

    Реакция/действия на изменение/добавление/удаление данных в таблицах

    9. Знаете ли вы что такое DMV? Для чего их можно использовать?

    Database Management View, представления для получения разнообразной информации о состоянии sql server (подключения, ожидания, latch, использование реcурсов и др)

    10. Какие способы обеспечения отказоустойчивости вы знаете?

    Mirroring, Log Shipping, Failover Cluster, Alwayson

    1. Очень интересный и очень простой вопрос для тех, кто понимает работу SQL Server звучит следующим образом — «В каких случаях запрос select * from table where id = id вернет не все содержимое таблицы»

    where id is NULL (т.к. NULL != NULL)

    2. Что такое журнал транзакций?

    Каждая база данных SQL Server имеет журнал транзакций, в котором фиксируются все изменения данных, произведенные в каждой из транзакций.
    Журнал транзакций — это важная составляющая базы данных. Если система даст сбой, этот журнал поможет вам вернуть базу данных в согласованное состояние. (MSDN)

    3. Отличие функций от хранимых процедур

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

    4. Какая разница между «where» и «having» выражениями?

    where выполняется до group by, a having — после

    5. Почему выражения «group by» или «order by» дорогие для выполнения (снижают производительность)?

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

    6. Какие манипуляции необходимо выполнить, чтобы ускорить работу БД и запросов?

    7. Что такое нормализация и денормализация? Зачем используется денормализация?

    Нормализация — приведение БД к нормальному виду, в котором отсутствуют избыточность данных. Денормализация — обратный процесс. Используется для ускорения выполнения запроса

    8. Что такое покрывающие индексы?

    когда все столбцы запроса попадают в индекс, такой индекс называют покрывающим.

    9. Какие службы Microsoft SQL Server вы знаете и для чего они нужны?

    10. Что такое репликация? Какие виды репликации Вы знаете? Чем они отличаются?

    11. Без чего нельзя добавить таблицу в репликацию?

    12. Какая разница между varchar и nvarchar

    в первом на хранение символа отводится один байт, во втором — два.

    Вот всё, что знаю/помню. Поправьте, если где облажался

    Добавить комментарий Отменить ответ

    Для отправки комментария вам необходимо авторизоваться.

    Ссылка на основную публикацию
    Статьи c упоминанием слов:
    Adblock
    detector