Эксплуатация серверов СУБД

Petro Bazeliuk —  Август 24, 2015 — 9 комментариев

Хочу рассмотреть вопросы и подготовку к сертификации. Учить правильные ответы плохой путь, а вот понимать ответы и применять их, вы тем самым становитесь на путь к уровню «1С:Эксперт». По сути это цикл записей с расширенными ответами на несколько вопросов из тестов.

\System\Processes — такого показателя не существует.
\System\Processor Queue Length — количество потоков в очереди к процессорам, рекомендованный максимум — не более 2 * количество ядер процессоров в течении длительного времени.
\Processor(_Total)\% User Time — процентная доля времени, в течении которого отдельный процессор (или все процессоры) работал в пользовательском режиме. Производительность оценивать по этому показателю сомнительно.
\Processor(_Total)\% Idle Time — показывает время, сколько процессор бездействовал, а точнее исполнял пустые инструкции. Производительность оценивать по этому показателю сомнительно.
\Processor(_Total)\% Processor Time — % загрузки процессора, рекомендованный максимум — не более 70% в течении длительного времени.
\System\Context Switches/sec — сообщает об системных переключениях контекста, переключение ядра процессора из одного потока в другой. Слишком большой интервал переключения контекста может быть вызван проблемой с сетевой картой, драйвером устройства или неэффективным серверным приложением, которое порождает много потоков. Производительность оценивать по этому показателю сомнительно.
\System\Threads — количество запущенных потоков всех процессов, производительность оценивать по этому отдельному показателю сомнительно.
Примите во внимание, у разных версий операционных систем Windows могут отсутствовать некоторые показатели.


Avg. Disk Queue Length — средняя длина очереди к диску. Описано в книге “Настольная книга 1С:Эксперта по технологическим вопросам” с. 95. Можно также посмотреть ответ на вопрос 1.4.
Avg. Disk Sec/Write — скорость записи на диск за секунду.
Avg. Disk Sec/Read — скорость чтения с диска за секунду.
Текущая длина очереди диска — не говорит о недостаточной производительности дисковой подсистемы.
MS SQLIO — инструмент, предоставленный корпорацией Microsoft, который может быть использован для определения пропускной способности ввода / вывода заданной конфигурации.


В книге “Настольная книга 1С:Эксперта по технологическим вопросам” с. 103, рекомендованная очередь к дискам — не более 2 * количество дисков, работающих параллельно. При превышении производительность дисковой подсистемы считается не достаточной. Статья по теме.


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


sys.dm_io_virtual_file_stats — показывает сколько операций ввода / вывода произошли с задержкой для всех файлов баз данных.
sys.dm_exec_query_stats — возвращает агрегированную статистику производительности для кэшированных планов запросов. Детально по ссылке.
sys.dm_db_file_space_usage — возвращает информацию об использовании дискового пространства для каждого файла в базы данных. Детально по ссылке.
С помощью счетчиков Performance Monitor — для такой задачи нецелесообразно использовать.
MS SQLIO — инструмент, предоставленный корпорацией Microsoft, который может быть использован для определения пропускной способности ввода / вывода заданной конфигурации.
MS SQL Profiler —  интерфейс для создания и управления трассировками для последующего их анализа и выявления проблем.


Что бы изменить место расположение tempdb, нужно:
1. Создать каталог, в котором хотим ее видеть (например C:\TEMPDB);
2. Войти в Management Studio, выполнить запрос, убедиться, что он успешно отработал:
USE master
GOALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = ‘C:\TEMPDB\tempdb.mdf’)
GOALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = ‘C:\TEMPDB\templog.ldf’)
GO

  1. Перезапустить SQL Server;
  2. Убедиться, что в новом каталоге появились нужные файлы, и удалить файлы, оставшиеся от Tempdb из прежнего каталога.

Временные таблицы SQL Server хранятся в служебной базе данных tempdb.


Что бы изменить место расположение пользовательской базы, нужно:
1. Создать бэкап;
2. Убедиться, что с базой никто не работает;
3. В Management Studio, вызвать правой кнопкой мыши контекстное меню на имени базы, выбрать: Задачи (Tasks) – Отсоединить (Detach), нажать ОК;
4. Переместить файлы ИмяБазы.mdf и ИмяБазы.ldf в нужный каталог;
5. В Management Studio, вызвать правой кнопкой мыши контекстное меню на узле Базы данных (Databases), выбрать Присоединить (Attach) – в поле «Базы данных для присоединения» (Databases to attach) добавить новый путь, убедиться, что база и сведения соответствуют переносимой, и далее нажать ОК.


tempdb — это служебная база SQL Server. Ее расположение при установке по умолчанию: файлы tempdb.mdf и tempdb.ldf в каталоге баз SQL Server.


Что бы изменить место расположение пользовательской базы (только журнала транзакций), нужно:
1. Создать бэкап;
2. Убедиться, что с базой никто не работает;
3. В Management Studio, вызвать правой кнопкой мыши контекстное меню на имени базы, выбрать Задачи (Tasks) – Отсоединить (Detach), нажать ОК;
4. Переместить файл ИмяБазы.ldf в нужный каталог;
5. В Management Studio, вызвать правой кнопкой мыши контекстное меню на узле Базы данных (Databases), выбрать Присоединить (Attach), в поле «Базы данных для присоединения» (Databases to attach) добавить новый путь, убедиться, что база и сведения соответствуют переносимой, в поле «Сведения о базе данных» (Database details) изменить путь к файлу Имя
Базы.ldf на новый, нажать ОК


Есть несколько моделей восстановления MS SQL Server — простая (SIMPLE), полная (FULL) и с неполным протоколированием (BULK_LOGGED). Полное описание по ссылке.


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


База может быть восстановлена как на последнее доступное состояние по цепочке копий, так и на любой момент времени внутри нее, для этого нужно в поле «К моменту времени» (To a point in time) указать нужное время, после него восстановление записей журнала транзакций остановится.


При использовании полной (FULL) модели восстановления базы данных в SQL Server, необходимо в обязательном порядке выполнять резервное копирование журнала транзакций, в противном случае журнал транзакций будет расти, пока не займет все дисковое пространство.


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


В MS SQL Server, для базы данных, возможно в любой момент изменить модель восстановления простым переключением с полной (FULL) на простую (SIMPLE) и наоборот. Чтобы изменения вступили в силу не нужен перезапуск MS SQL Server.


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


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


Ознакомится с системными требования 1С к СУБД можно по ссылке http://v8.1c.ru/requirements/.


С реальными параметрами оборудования крупных внедрений можно ознакомится на сайте v8.1c.ru в разделе ЦКТП.


Использование опции «max degree of parallelism» в Microsoft SQL Server:
Если Microsoft SQL Server работает на многопроцессорном компьютере, он определяет оптимальную степень параллелизма, то есть количество процессоров, задействованных для выполнения одной инструкции для каждого из планов параллельного выполнения. Для ограничения количества процессоров в плане параллельного выполнения может быть использован параметр max degree of parallelism. Установленное по умолчанию значение 0 использует все доступные процессоры. Значение выше 1 (до 64) позволяет ограничить максимальное количество процессоров, используемых при выполнении одного запроса. Если указано значение, превышающее число доступных процессоров, используется фактическое число доступных процессоров. Если у компьютера только один процессор, то значение параметра max degree of parallelism учитываться не будет.Проблемы:
При выполнении некоторых запросов на многопроцессорном компьютере может выдаваться сообщение об ошибке:
Ошибка СУБД:
1. OLE DB Provider for SQL Server: Intra-query parallelism caused your server command (process ID #XX) to deadlock. Rerun the query without intra-query parallelism by using the query hint option (maxdop 1)
2. При выполнении некоторых запросов на многопроцессорном компьютере может наблюдаться 100% загрузка всех процессоров сервера даже при работе только одного пользователя.

Решение:
Для решения описанных выше проблем необходимо установить значение параметра max degree of parallelism равным 1. Следует учитывать, что эта установка ограничивает количество процессоров, которые использует SQL Server при выполнении отдельного запроса, и как правило, это не оказывает существеного влияния на время выполнения большинства используемых запросов.
Однако это не ограничивает количество доступных SQL Server процессоров в целом, т.е. два запроса от разных клиентских приложений будут выполняться параллельно.


Виртуальные таблицы (например, СрезПоследних()) нигде не хранятся, но формируются (вычисляются) в процессе выполнения запроса.

Реклама

Petro Bazeliuk

Записи

Опыт работы с «1С:Предприятие 8» — более 10 лет, за это время реализовано 30 успешных проектов по итеративным методологиям Scrum и Kanban. Оптимальные решения для высоконагруженных ИБ с онлайном от 400 человек. Занимаюсь продвижением в массы системы контроля версий — git и методики git-flow, TDD, BDD, а также проработкой паттерна минимальной модификации конфигурации и внесением изменений без обновления базы данных. Время от времени участвую в проекте xUnitFor1C.

9 комментариев to Эксплуатация серверов СУБД

  1. 

    А продолжение будет?

    Нравится

  2. 

    Вопрос по 6 пункту, это видимо опечатка в билетах NAME = tempdev, должно быть NAME = tempdb?

    Нравится

  3. 

    прошу прощения, вопрос снят. Файл называется именно tempdev

    Нравится

  4. 

    Хотя тогда противоречие с 9 вопросом. Там указано, что по умолчанию имя файла tempdb

    Нравится

Trackbacks and Pingbacks:

  1. 1С:Профессионал по технологическим вопросам (4.33-4.51) | Петр Базелюк | Bazeliuk Petro - Сентябрь 26, 2015

    […] “Max degree of parallelism” в Microsoft SQL Server — число процессоров, задействованных для выполнения одной инструкции, для каждого из планов параллельного выполнения. Детально рассмотрено в вопросе 3.21. […]

    Нравится

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s