Архив рубрики: Windows

Раздуло кэш SQL? Лечимся народными средствами.

Если при разработке приложений не пользоваться хранимыми процедурами и параметризованными запросами, чем грешат большинство разработчиков, посылая произвольные (Adhoc) запросы серверу
То рано или поздно можно столкнуться с проблемой раздутого процедурного кэша.
Подробнее о механизмах кэширования тут
1.Проверяем есть ли проблемы с процедурным кэшем.
Чтобы понять есть ли проблема с Adhoc запросами, достаточно запустить следующий запрос
SELECT T.*, cast(T.[Total Plans — USE Count 1]*1.0/nullif(t.[Total Plans],0) *100  AS decimal(5,2)) Percentage
FROM
(
       SELECT objtype AS [CacheType]
                    , count_big(*) AS [Total Plans]
                    , sum(cast(size_in_bytes as decimal(18,2)))/1024/1024 AS [Total MBs]
                    , sum(cast((CASE WHEN usecounts = 1 THEN size_in_bytes ELSE 0 END) as decimal(18,2)))/1024/1024 AS [Total MBs — USE Count 1]
                    , sum(CASE WHEN usecounts = 1 THEN 1 ELSE 0 END) AS [Total Plans — USE Count 1]
       FROM sys.dm_exec_cached_plans cp
       WHERE cp.cacheobjtype = N'Compiled Plan'
       AND cp.objtype IN (N'Adhoc', N'Prepared') — adhoc (произвольный запрос), prepared (параметризованный)
       GROUP BY objtype
) T
ORDER BY [Total MBs — USE Count 1] DESC
OPTION (RECOMPILE);  —план не будет сохраняться, эту опцию желательно использовать для adhoc запросов
Из результатов запроса понятно что процент  Adhoc  запросов  которые выполнялись только 1 раз очень высокий 82%

Ниже разница  в планах  adhoc и prepared планах
— выдать 100 первых запросов раздувающих кэш по размеру
SELECT top 100 *
FROM sys.dm_exec_cached_plans AS cp WITH (NOLOCK)
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE cp.cacheobjtype = N'Compiled Plan'
AND cp.objtype = N'Adhoc'
AND cp.usecounts = 1
ORDER BY cp.size_in_bytes DESC OPTION (RECOMPILE);
Как-же это лечится если повлиять на разработчиков никак не возможно, есть как говорится одно народное средство …..

USE master
EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'optimize for ad hoc workloads', 1
RECONFIGURE WITH OVERRIDE
GO
Использование этого параметра не очищает процедурный кэш, его очистку необходимо выполнить вручную, есть несколько вариантов:
1.
— очистить весь процедурный кэш для экземпляра
DBCC FREEPROCCACHE;

2. очистить для базы
—Идентификатор базы
DECLARE @intDBID INTEGER
SET @intDBID = (SELECT dbid FROM master.dbo.sysdatabases WHERE name = 'IntegrationDB')

—select @intDBID
—очищаем процедурный кэш для базы
DBCC FLUSHPROCINDB (@intDBID)

3. удалить конкретные планы вручную
— получаем указатель на план
SELECT cp.plan_handle, st.[text]
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE [text] LIKE N'%/* GetOnlineSearchResultsMonday %';

— удаляем план из кэша
DBCC FREEPROCCACHE (0x05000800F7BA926C40C15055070000000000000000000000);

Параметр optimize for ad hoc workloads используется для повышения эффективности кэширования планов рабочих нагрузок, содержащих много отдельных нерегламентированных пакетов. Если этот параметр имеет значение 1, компонент Database Engine при первой компиляции пакета, сохраняет в кэше планов небольшую скомпилированную заглушку плана Compiled Plan Stub, а не полный откомпилированный план. Это несколько снижает требования к памяти, так как кэш планов не заполняется скомпилированными, не используемыми повторно планами.
Скомпилированная заглушка плана принадлежит к объектам cacheobjtypes, которые можно просмотреть в представлении каталога sys.dm_exec_cached_plans. У каждой заглушки есть уникальный дескриптор SQL и дескриптор плана. Со скомпилированной заглушкой плана не связан план выполнения. Запрос по дескриптору плана не вернет XML-код Showplan
Для чего это надо ?
Каждая инструкция (T-SQL, SP и другие) сохраняет свой план выполнения в кэше, для дальнейшего использования. По этой причине, большое число планов хранится в системе и множество из них могут использоваться только 1 раз. Это в пустую тратит ресурсы сервера.
Чтобы не сохранялись в кэше планы запросов которые выолняются 1 раз придумали этот параметр сервера.
В загруженной системе легко может быть более миллиона разных инструкций, представьте сколько ресурсов вы тратите в пустую. Благодаря параметру optimize for ad hoc workloads  можно избежать хранения ненужных планов.
Если посмотреть на результаты  внизу после включения опции optimize for ad hoc workloads можно у

Импортируем VM ректально.

Захотелось вот себе виртуалку скопировать, а файла экспорта например под рукой нет.

К счастью существует способ импортировать существующую виртуальную машину без предварительного экспорта.

Это мистика но все работает…

Указываем путь  до  конфигурации xml

Import-VM –Path ‘D:Program FilesMicrosoft Learning20488Drives20488B-LON-SP-01Virtual Machines8B770C81-CEA8-4AC0-A532-A2FF40C082CD.xml’ Читать

Увеличение размера шрифта при работе в удаленном сеансе (RDP)

При работе с Windows Server 2008 R2 в удаленном сеансе по умолчанию отсутствует возможность изменения размера шрифта. Что приносит множество неудобств людям с ограниченными возможностями, например, людям со слабым зрением. В этом посте рассказывается, как разблокировать данную возможность.

Настройки по умолчанию:

Исправление, позволяющее разблокировать данную функцию, доступно для загрузки на странице поддержки Microsoft по адресу https://support.microsoft.com/kb/2726399/en-us.
После установки данного исправления и перезапуска сервера пользователи получают возможность менять размер текста в удаленном сеансе.

Вадим Соколович

http://efsol.ru/solutions/data-protection.html

Автор: Виктор Лукаш

Новые «старые» ошибки MS SQL 2012

С каждой новой версией продукта от Microsoft пользователи, да чего уже там даже системные администраторы/ИТ-инженера/ и прочие причастные к этому миру ждут, что новая версия будет более лучше работать, и перестанет сыпать непонятными ошибками. Или, по крайней мере, научится решать ошибки, которые возникали в ранних продуктах. Но нет.

И так сегодня осветим пару “старых” ошибок, которые возникают при установке нового MS SQL 2012.

Читать

Автоматизация обновления конфигураций «1С:Предприятие»

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

Подробное описание параметров командной строки 1С:Предприятия находится здесь: http://www.script-coding.com/v8/v8_CmdPrmpt.html.
Используя эти параметры, можно написать команду выполнения обновления конфигурации и базы.
Например:

«C:Program Files (x86)1cv8common1cestart.exe» CONFIG /F <ПутьИБ> /N <ИмяПользователя> /P <ПарольПользователя> /UpdateCfg<ИмяФайла> — обновление конфигурации
«C:Program Files (x86)1cv8common1cestart.exe» CONFIG /F <ПутьИБ> /N <ИмяПользователя> /P <ПарольПользователя> /UpdateDBCfg — обновление базы
В данном примере:

«C:Program Files (x86)1cv8common1cestart.exe» – путь к исполняемому файлу 1С:Предприятия;

CONFIG — Запуск в режиме Конфигуратора;

/F <ПутьИБ> — Путь к файловой информационной базе (исключая имя файла);
/N <ИмяПользователя> — Имя пользователя, как оно задано в Конфигураторе;
/P <ПарольПользователя> — Пароль пользователя. Необязательный параметр;
/UpdateCfg <ИмяФайла> — Обновление конфигурации. ИмяФайла — имя .cf или .cfu файла;
/UpdateDBCfg — Обновление конфигурации базы данных.

Вадим Соколович

http://efsol.ru/solutions/data-protection.html

Автор: Виктор Лукаш

Как установить Kubuntu в Virtualbox под Windows?

Данная статья в первую очередь предназначена для людей, которые желают познакомиться с операционными системами семейства GNU/Linux, но имеют опыт работы только в Windows. 

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

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

Kubuntu — операционная система, которая является сборкой Ubuntu со средой KDE. Часто критикуется за «прожорливость», но по в любом случае среди всех оболочек наиболее схожа с рабочим столом Windows, а также имеет много графических средств для настройки. Таким образом, имея опыт работы в Windows, разобраться и настроить KDE  не составит труда.

Альтернатива Kubuntu — Linux Mint KDE.

Загрузка компонентов

Для установки Virtualbox нужно перейти на эту страницу: https://www.virtualbox.org/wiki/Downloads. Напротив строки VirtualBox 4.3.12 for Windows hosts нужно нажать на ссылку x86/amd64, а напротив VirtualBox 4.3.12 Oracle VM VirtualBox Extension PackAll supported platforms. Запустите сначала первый файл, а после завершения установки — второй.
Ещё понадобится образ Kubuntu. Можно скачать или напрямую, или торрентом. Это ссылки на версию 14.04 LTS. Её поддержка продлится до апреля 2019, как у Ubuntu 14.04.

Создание виртуальной машины

Примечание: для увеличения скриншота кликните по нему.
Запустите Virtualbox и выберите кнопку «Создать».

В открывшемся диалоговом окне введите имя создаваемой виртуальной машины. Тип — Linux, версия — Ubuntu.

Благодаря данному выбору дальнейшие параметры будут автоматически настраиваться под убунту. У Вас они скорее всего по умолчанию такие же. В любом случае стоит сверяться со скриншотами ниже.
Оперативной памяти можно выделить сколько угодно, но оптимальнее всего будет 512 МБ. Если спустя некоторое время Вы решите запускать ресурсоемкие приложения, то данный параметр нужно будет увеличить до 1 — 2 ГБ. Но его можно менять в любое время, так что пока советую выбрать 512 МБ.

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

Тип можно выбрать любой, но при работе с Virtualbox лучше выбрать и диск Virtualbox.

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

А вот теперь пора определиться с размером. Мастер предлагает 8 ГБ, но этого маловато для работы. Познакомиться с системой хватит, но не более того. А вот 16 ГБ уже лучше. Особенно если на предыдущем шаге был выбран динамический тип.

Настройка виртуальной машины

Выберите созданную машину и нажмите на кнопку «Настроить».

Нужно изменить всего пару параметров. 

Первый расположен в Система -> Материнская плата. Уберите дискету из списка Порядок загрузки.

Далее перейдите в Дисплей -> Видео. Отдайте 128 МБ видеопамяти и поставьте галочку напротив строки «Включить 3D ускорение». Увы, но без этого KDE работает крайне плохо.

Установка Kubuntu

Дважды кликните по названию виртуальной машины. В открывшемся диалоговом окне нажмите на кнопку в виде папки (напротив строки Привод хоста).

Далее найдите на диске образ Kubuntu.

После того, как Virtualbox обнаружит образ, его имя отобразится в предыдущем диалоговом окне. Нажмите «Продолжить».

Итак, загрузилось меню LiveCD:

Нажмите клавишу F2 и стрелками выберите русский язык из списка.

Пункт «Запустить Kubuntu» уже активен. Просто нажмите Enter.

Итак, спустя некоторое время система загрузилась. Можно либо поработать с ней в Live-режиме, либо установить. Выберите п