Миграция на SQL Server 2008:Чего можно ожидать и как с этим бороться

Содержание

Слайд 2

О чем будем говорить

Инструменты
Методика
На что можно напороться
Как с этим бороться

О чем будем говорить Инструменты Методика На что можно напороться Как с этим бороться

Слайд 3

Предисловие

Я постараюсь рассказать о:
Вариантах перехода, методике, инструментах и планировании
С фокусом на реляционную

Предисловие Я постараюсь рассказать о: Вариантах перехода, методике, инструментах и планировании С
часть SQL Server
Технических и не очень аспектах перехода
Часто встречающихся проблемах, ошибках и мифах
Я не планирую рассказывать о:
Полном перечне всех возможных проблем миграции
Полном перечне нововведений в SQL Server 2008 – пожалуйста спрашивайте, тем не менее ☺
Для лучшего усвоения желательно:
Иметь некоторую практику работы с SQL Server 2000/2005
Иметь базовые знания о SQL Server 2008

Слайд 4

Определитесь в окружении

Анализ оборудования и инфраструктуры
Мощность сервера – CPU, RAM, network, storage
Возможности

Определитесь в окружении Анализ оборудования и инфраструктуры Мощность сервера – CPU, RAM,
дисковой подсистемы – размер, IOs, пропускная способность
Инфраструктура – требования к новому оборудованию
Приложение и БД
Куплено или собственная разработка
Кто сопровождает
Функционал и редакции
Платформа определяет возможности 32/64
Редакция определяет функционал

Слайд 5

Цена освоения нового функционала

Resource Governor*
Filtered Indexes/Statistics
Data/Backup Compression*
Enhanced SQL Server Audit*
Transparent Data Encryption*
SSRS/SSAS

Цена освоения нового функционала Resource Governor* Filtered Indexes/Statistics Data/Backup Compression* Enhanced SQL
scalability improvements*
Query Optimizer / Storage Engine enhancements*

Policy Based Management (DMF)
Performance Data Collection
Enhanced date & time
Transact-SQL enhancements
Sparse column
Service Broker enhancements
SSIS / SSRS / SSAS enhancements*

Spatial
FILESTREAM
Hierarchy Id
LINQ
CDC* & Change Tracking
Entity Framework
ADO.NET Data Services

Значительные усилия по переработке приложения
Умеренные усилия
Минимальные усилия

Трудозатраты

Устаревший функционал

Совместимость

* Только в Enterprise Edition

Преимущества

Слайд 6

Общий обзор подхода

Анализ окружения
Требования к миграции
Выбор редакции
Требования к оборудованию
Использовать Upgrade Advisor
Исправить найденные

Общий обзор подхода Анализ окружения Требования к миграции Выбор редакции Требования к
несоответствия
Выполнить тестирование на совместимость
По возможности 100% тестирование кода
Перед миграцией
Подробная документация на существующую систему
Разработка тестов проверки, стресс тестов и снятие базовой линии производительности
Сформулировать и проверить план отката
Определеиться с подходом в миграции
In-place или side-by-side
Собственно миграция
Предмиграционные работы
После миграции
Вот тут-то начинается самое интересное

Слайд 7

Что поддается миграции

Компоненты
Реляционный движок
Включая суб компоненты такие как SQL Agent, Tools, и.т.д.
Full-text

Что поддается миграции Компоненты Реляционный движок Включая суб компоненты такие как SQL
Search
Reporting Services
Analysis Services
Data Transformation Services / SSIS
Редакции
Express, Developer, Workgroup, Standard, Enterprise
Платформы
32-bit & 64-bit (IA64 и x64)
Языки и сортировки
SQL Server 2008 имеет новые сортировки (для соответствия Windows)

Слайд 8

Варианты миграции: In-Place (замещение)

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

Варианты миграции: In-Place (замещение) Обновление существующей инсталляции при сохранении пользовательских данных Имя
остается прежним
Старый экземпляр перекрывается новым (исчезает)
Практически 100% автоматический процесс

Слайд 9

SQL Server 2000/5
Instance

SQL Server 2008
Instance

Бывший SQL Server 2000/2005

Замещение: In-Place

SQL Server 2000/5 Instance SQL Server 2008 Instance Бывший SQL Server 2000/2005 Замещение: In-Place

Слайд 10

За и против: In-Place

За
Проще, автоматический процесс
Довольно быстро (может быть применен для VLDB)
Обновление системных

За и против: In-Place За Проще, автоматический процесс Довольно быстро (может быть
каталогов
Возможно, даже не понадобится нового/дополнительного железа
Приложение по-прежнему обращается к известным именам сервера и БД
Против
Черный ящик (мы не контролируем процесс)
В течение некоторого времени приложение не может обращаться к БД
Не всегда наилучший вариант (например SSAS может быть лучше мигрировать через side-by-side подход)
Трудно вернуться назад

Слайд 11

Миграция: Side-by-side (Параллельная установка)

Ставится новый экземпляр SQL Server
Объекты БД переносятся между экземплярами вручную
Copy

Миграция: Side-by-side (Параллельная установка) Ставится новый экземпляр SQL Server Объекты БД переносятся
Database Wizard
Не копирует extended procs, alerts, DTS packages, linked servers.
Detach -> Copy -> Attach
Backup -> Restore
T-SQL Scripts, BCP , Break SAN mirror -> attach
Новый и старый миры сосуществуют бок о бок
Это может быть жизнь на том же сервере (именованный экземпляр) или на другом сервере
Процесс в основном ручной

Слайд 12


SQL Server 2000/5
Instance

SQL Server 2008
Instance

Работает!

Миграция: Side-by-side

SQL Server 2000/5 Instance SQL Server 2008 Instance Работает! Миграция: Side-by-side

Слайд 13

За и против: Side-by-side

За
Процесс поддается контролю
На уровне БД
Может использоваться для тестирования миграции
Документирование процесса

За и против: Side-by-side За Процесс поддается контролю На уровне БД Может
и сбора показателей
Две системы работают параллельно
Дополнительные усилия по синхронизации
Относительно простой откат при неудаче
Можно использовать failover/switchover для сокращения простоев
Против
Обычно требуется дополнительное оборудование
Или расширение ресурсов, если остаемся на том же сервере
Изменение имени сервера
Не очень подходит для VLDB разве что использовать возможности отрыва SAN (гибридный подход)
Теряется резервная копия (до синхронизации БД)

Слайд 14

Инструментарий: анализ Upgrade Advisor

Анализирует SQL Server БД, файлы трассировки и скрипты
Операция только читающая,

Инструментарий: анализ Upgrade Advisor Анализирует SQL Server БД, файлы трассировки и скрипты
но может поесть процессор (в основном при подготовке отчета)
Интенсивный ввод/вывод
Может исполняться удаленно
Поддерживает именованные экземпляры
Для нестандартных портов используйте псевдонимы (alias)
Формирует отчет и предлагает решения найденных проблем
Требует .NET framework 2.0 sp1 или старше
Лучше скачать самую свежую версию с нашего сайта!

Слайд 15

Чем пользоваться при миграции

Чем пользоваться при миграции

Слайд 16

Как выбрать замещение или параллельная установка

Критичность приложения и его сложность
Критичные приложения не обязательно

Как выбрать замещение или параллельная установка Критичность приложения и его сложность Критичные
сложны, но имеют жесткие ограничения по тестированию, размерам админ. окна,…
Сложные приложения не обязательно критичны, но требуют интенсивного тестирования и можно столкнуться со сложным откатом
Практические соображения
Размер БД и число объектов
Локальные задания по сопровождению
Длительность допустимого простоя
Аппаратные возможности/возраст серверов
Зависимость от системы и других приложений
Время, необходимое на откат и усилия на это потребные
Возможные требования к параллельному исполнению

Слайд 17

Перед миграцией Совместимость

Часть функционала отмерла:
Ее просто нет в составе SQL Server 2008
Например: ряд

Перед миграцией Совместимость Часть функционала отмерла: Ее просто нет в составе SQL
недокументированных системных процедур, виртуальные кубы, DUMP database, backup with TRUNCATE ONLY, sp_addgroup, SAC,…
Часть функционала приговорена:
Не будт поддерживаться в следующей версии за SQL Server 2008 (напр. Notification Services) или будущих версиях
Часть функционала работает иначе
Например: если мы не можем использовать plan guides работаем без него (SQL 2005 выдавал ошибку), REPLACE сохраняет завершающие пробелы
См. документацию о возможных изменениях
Выполните функциональное тестирование, чтобы поймать пропущенное Upgrade Advisor
Не все приложения нуждаются в полноценной проверке. Реальные по требности зависят от критичности/сложности приложения
Критичность != сложности и наоборот

Слайд 18

Перед миграцией

Оно вам нужно?
Как проверить, что будет «потом»?
Как подготовиться к неожиданностям?

Только тестирование

Перед миграцией Оно вам нужно? Как проверить, что будет «потом»? Как подготовиться
способно дать ответ на эти вопросы
Сбор данных по производительности
Сравнение
Принятие обоснованного решения

Слайд 19

Как собрать данные по производительности

Нужно снять реальную нагрузку
Прямо с промышленной системы
Относительно просто
Не

Как собрать данные по производительности Нужно снять реальную нагрузку Прямо с промышленной
факт, что поймаем нужный период
Существенная дополнительная нагрузка на сервер/диски
Средствами нагрузочных инструментов
Можно имитировать любой период бизнес активности
Если последовательно идти этим путем, в долговременной перспективе сплошные +++++
Сложность подготовки (разработка и параметризация скриптов нагрузки)
Дороговизна инструментов (но можно использовать Visual Studio tests)
Если переходим с SQL 2005
Берем планы прямо из кеша или
Записываем TRC
Если переходим с SQL 2000
TRC – единственная возможность

Слайд 20

ReadTrace

Предназначена для разбора TRC файлов
Много лучше, чем читать TRC средствами fn_trace_gettable
Разбирает TRC

ReadTrace Предназначена для разбора TRC файлов Много лучше, чем читать TRC средствами
в таблицы
Строит связи между пакетами команд и индивидуальными командами
Считает агрегаты по производительности
НОРМАЛИЗУЕТ ТЕКСТ ЗАПРОСА (что позволяет сравнивать запросы по их тексту)
Очень быстро работает

Слайд 21

Нормализация текста запроса

select round(sum(-CS.Amount*CS.Price/(case when @currid =2 then R.RateTPK else R.RateETC end)*CH.Direction),0)

Нормализация текста запроса select round(sum(-CS.Amount*CS.Price/(case when @currid =2 then R.RateTPK else R.RateETC
as Result from Rates R (nolock) inner join (Sections S (nolock) inner join (CheckHeaders CH (nolock) inner loop join CheckSpec CS (nolock) --WITH (nolock,index (IX_CheckSpec_ObjectID)) on (CH.ObjectID=CS.ObjectID and CH.CheckID = CS.CheckID) and CS.StoreTypeID is not null) on (CH.ObjectID=S.ObjectID and CS.SectionID=S.SectionID) and S.Fictive=0) /* Отдельно обрабывается доллар */ on (R.CurrID=(case when @currid =2 then 1 else @currid end) and (R.RateDate >= @DateFrom and R.RateDate < @DateTo)) and datediff(d,0,CH.CheckDate) = datediff(d,0,R.RateDate) WHERE CH.ObjectID=@template_ObjectID and (CH.CheckDate<@DateTo and CH.CheckDate>=@DateFrom) and CH.Deleted = 0 and CH.OpID not in (4,8) and CH.ReserveID Is Null option (force order, keepfixed plan)
====================== Превращается в ===========================
SELECT ROUND(SUM(-CS.AMOUNT*CS.PRICE/(CASE WHEN @CURRID ={##} THEN R.RATETPK ELSE R.RATEETC END)*CH.DIRECTION),{##}) AS RESULT FROM RATES R (NOLOCK) INNER JOIN (SECTIONS S (NOLOCK) INNER JOIN (CHECKHEADERS CH (NOLOCK) INNER LOOP JOIN CHECKSPEC CS (NOLOCK) ON (CH.OBJECTID=CS.OBJECTID AND CH.CHECKID = CS.CHECKID) AND CS.STORETYPEID IS NOT NULL) ON (CH.OBJECTID=S.OBJECTID AND CS.SECTIONID=S.SECTIONID) AND S.FICTIVE={##}) ON (R.CURRID=(CASE WHEN @CURRID ={##} THEN {##} ELSE @CURRID END) AND (R.RATEDATE >= @DATEFROM AND R.RATEDATE < @DATETO)) AND DATEDIFF(D,{##},CH.CHECKDATE) = DATEDIFF(D,{##},R.RATEDATE) WHERE CH.OBJECTID=@TEMPLATE_OBJECTID AND (CH.CHECKDATE<@DATETO AND CH.CHECKDATE>=@DATEFROM) AND CH.DELETED = {##} AND CH.OPID NOT IN(LIST) AND CH.RESERVEID IS NULL OPTION (FORCE ORDER, KEEPFIXED PLAN)

Слайд 22

ReadTrace

ReadTrace

Слайд 23

ReadTrace

Берем результаты обработки старой и новой БД
Делаем выборку по производительности запросов
На основании

ReadTrace Берем результаты обработки старой и новой БД Делаем выборку по производительности
сравнения текстов команд
Помещаем результаты в Excel
Сортируем и смотрим где «просели»

Слайд 24

ReadTrace

INSERT INTO TEMPDB..MINS25
SELECT MIN(DURATION / 1000) 'Минимальное',
MAX(DURATION / 1000) 'Максимальное',
AVG(DURATION

ReadTrace INSERT INTO TEMPDB..MINS25 SELECT MIN(DURATION / 1000) 'Минимальное', MAX(DURATION / 1000)
/ 1000) 'Среднее',
MIN(READS) 'Минимальное',
MAX(READS) 'Максимальное',
AVG(CAST(READS AS BIGINT)) 'Среднее',
MIN(WRITES) 'Минимальное',
MAX(WRITES) 'Максимальное',
AVG(WRITES) 'Среднее',
MIN(CPU) 'Минимальное',
MAX(CPU) 'Максимальное',
AVG(CPU) 'Среднее',
MAX(ROWS) MAXROWS,
SUBSTRING(NORMTEXT,1,250) AS NORMTEXT,
COUNT(* ) EXECCOUNT
FROM DBO.TBLUNIQUESTATEMENTS TSU
JOIN DBO.TBLSTATEMENTS TS
ON TSU.HASHID = TS.HASHID
WHERE (NORMTEXT LIKE 'Update%'
OR NORMTEXT LIKE 'Insert%'
OR NORMTEXT LIKE 'Select%'
OR NORMTEXT LIKE 'Delete%')
AND (NORMTEXT NOT LIKE 'SELECT STATMAN%')
GROUP BY SUBSTRING(NORMTEXT,1,250)

Следует учесть число вызовов, число выданных записей
Для SQL 2005/2008 не забудьте поделить Duration на 1000 (если сравнивать с SQL 2000)

Слайд 25

ReadTrace

Сравнивать можно
Duration
CPU
Read
Write
Наиболее правильным будет сравнение по чтениям
Именно они характеризуют «покосившийся» план
Duration в

ReadTrace Сравнивать можно Duration CPU Read Write Наиболее правильным будет сравнение по
многопользовательской системе практически не имеет смысла
Write – обычно малый процент от числа чтений
CPU – полезно для ограниченного числа случаев и, как правило, хорошо коррелирует с чтениями

Слайд 26

Демо как работает ReadTrace

Readtrace_RUN.cmd

Демо как работает ReadTrace Readtrace_RUN.cmd

Слайд 27

Результаты сравнения

По моему опыту результаты сравнения обычно выглядят так (для OLTP систем)

Отрицательные

Результаты сравнения По моему опыту результаты сравнения обычно выглядят так (для OLTP
значения на графике относятся к тем командам, которые при работе в среде SQL Server 2008 выполнили меньше чтений.

Слайд 28

Сравнили, нашли. Что дальше?

Определяем команды, которые стали больше читать
Смотрим sys.dm_db_missing_index _*
Query processor

Сравнили, нашли. Что дальше? Определяем команды, которые стали больше читать Смотрим sys.dm_db_missing_index
все равно не отстанет ☹
Анализируем часто используемые команды
Незначительное ухудшение для команды, вызываемой 1000 раз потенциально опаснее чем существенное ухудшение для команды, вызванной 5 раз
Берем для проблемных команд план из кеша (мы уже на SQL 2008!)
Строим на основе плана тест
Прогоняем через Database Tuning Advisor
Проверяем на граничных условиях параметров
Много думаем ☺

Надо исправляться

Слайд 29

Демо Как работать с планом из кеша

SQL Plan From Cache.sql
XML план
XML Notepad
Параметры компиляции

Демо Как работать с планом из кеша SQL Plan From Cache.sql XML
плана

Слайд 30

Что можно сказать заранее

SQL 2005/2008
Обожают include индексы (в разумных пределах это

Что можно сказать заранее SQL 2005/2008 Обожают include индексы (в разумных пределах
хорошо)
Стараются всеми силами избегать дисковых операций (с современными быстрыми стойками это не всегда оправдано)
Понять ситуацию теперь куда проще
DMV открывают перед разработчиками и администраторами истинное лицо оптимизатора

Слайд 31

Совместимость

Посмотрите в документации
Behavior Changes to Database Engine Features in SQL Server 2008
Deprecated

Совместимость Посмотрите в документации Behavior Changes to Database Engine Features in SQL
Database Engine Features in SQL Server 2008
Discontinued Database Engine Functionality in SQL Server 2008
Breaking Changes to Database Engine Features in SQL Server 2008
Что-то Upgrade Advisor мог пропустить, что-то может быть запланировано к разработке и нуждается в корректировке

Слайд 32

Совместимость

SQL 2008 ставит (большой) набор счетчиков, отслеживающих устаревшие конструкции языка
Но как понять,

Совместимость SQL 2008 ставит (большой) набор счетчиков, отслеживающих устаревшие конструкции языка Но
в какой процедуре используются эти конструкции?

select * from sys.sysperfinfo where object_name like '%Deprecated Features%‘
(228 row(s) affected)

Слайд 33

Совместимость

Для перехвата конкретного кода устаревших команд можно использовать
Profiler
Deprecation Announcement event class
Deprecation Final

Совместимость Для перехвата конкретного кода устаревших команд можно использовать Profiler Deprecation Announcement
Support event class
Легко настроить
Относительно непросто выйти на объект (через SQL Handle)
Требует большого объема профилирования, если ловить код сразу
Extended events
DEPRECATION_ANNOUNCEMENT event
DEPRECATION_FINAL_SUPPORT event
Позволяют еще глубже чем раньше заглянуть внутрь
Срабатывают только на событие
Требуется кодировать (но освоить расширенные события только на пользу)

Слайд 34

Демо - совместимость

SQL Profiler
Extended events

Демо - совместимость SQL Profiler Extended events

Слайд 35

Решено, мигрируем. Что дальше?

Решено, мигрируем. Что дальше?

Слайд 36

До начала миграции Подготовка среды

Обеспечиваем «чистую» среду
Database consistency checks
Можно даже сжать (shrink) БД
Один

До начала миграции Подготовка среды Обеспечиваем «чистую» среду Database consistency checks Можно
из редких случаев, когда это имеет смысл
Меньше файл – быстрее копирование (для параллельной установки)
Не прибить ли индексы
Возможно будет быстрее перестроить их на новом месте (опять же сокращение размера файлов)
Сделать резервные копии
Посмотреть вокруг
Не пересекаемся ли мы с кем-то
Не запланированы ли работы/ которые могут нам помешать
Куда обращаться при возникновении проблем
MCS
Премьер-поддержка

Слайд 37

До начала миграции Зависимости

Предполагается, что работы с Upgrade Advisor и тестированию совместимости закончены
Само

До начала миграции Зависимости Предполагается, что работы с Upgrade Advisor и тестированию
приложение
“COM Components”, Extended Stored Procedures, sp_OA%, CLR assemblies
Linked servers (вопросы разграничения доступа и провайдеры)
Зависимости между БД (Cross-database dependencies)
DTS пакеты
Зависимость от решений третьих фирм
ПО – backup, management agents, clusters, MPIO, SAN mirroring
Компоненты – шифрование, почта,…
Антивирусное ПО
Обычно его стоит остановить на период миграции, но это не всегда позволительно
Различия между функциональностью редакций
Ничто не заменит знание самого приложения!

Слайд 38

До начала миграции Базовая линия

Создайте документацию на решение
sp_configure, SQLDIAG, sp_dboption
Конфигурация сети, хранилища, системы

До начала миграции Базовая линия Создайте документацию на решение sp_configure, SQLDIAG, sp_dboption
безопасности
Снимите базовую линию производительности
На уровне системы (perfmon, waitstats,…)
На уровне приложения (время отклика запросов, число пользователей,…)
Разработайте критерии проверки и тесты для их верификации
Не обязательно (но рекомендуется): снимите планы для сложных и/или критичных запросов

Слайд 39

Миграция

Тщательно и подробно документируйте каждый шаг
Следите за сообщениями от сервера, стойки, сети
Убедитесь,

Миграция Тщательно и подробно документируйте каждый шаг Следите за сообщениями от сервера,
что специалисты поддержки доступны
Проверьте что в телефоне не села батарейка ☺
Создайте резервные копии БД старого образца и П-Р-О-В-Е-Р-Ь-Т-Е И-Х
Отключите startup процедуры
Верните max worker thread обратно в (0)
Выполните миграцию/обновление
Следите за процессом
Следите за временем, сравните с тестовыми данными
Выполните первоочередные задачи пост миграции

Слайд 40

Мигрировали? Славно, теперь все только начинается

Приложение вышло под промышленную нагрузку
Теперь его нужно

Мигрировали? Славно, теперь все только начинается Приложение вышло под промышленную нагрузку Теперь
мониторить и править возникающие проблемы

Слайд 41

После миграции В первую очередь

Проверьте все журналы
Еще раз посмотрите рекомендации Upgrade Advisor
Обновите статистику
Full

После миграции В первую очередь Проверьте все журналы Еще раз посмотрите рекомендации
если возможно
Sample для больших таблиц
Проверьте настройки Агента, задания и задачи по сопровождению
Проверьте настройки безопасности
Особенно в части меж серверного и меж доменного взаимодействия/прав доступа
Проверьте целостность БД

Слайд 42

После миграции В первую очередь

Configuration Manager
Особенно важен для параллельнной установки для настройки среды

После миграции В первую очередь Configuration Manager Особенно важен для параллельнной установки
исполнения, протоколов…
При замещении, процесс установки старается сохранить максимально существующую среду: принцип «минимального удивления»
Убедитесь, что tempdb имеет правильный размер (кто ее только не использует теперь ☹)
DBCC CHECKDB, CTEs, Cursors, MARS, Row Versioning, Service Broker, Triggers
Проверьте настройки MODEL
Проверьте, что все что записно в MASTER верно
Заново наполните Full-Text Search каталоги
Выполните запланированные проверки

Слайд 43

НУ И?

Все хорошо!

Все плохо!

НУ И? Все хорошо! Все плохо!

Слайд 44

Хочу назад!! Уже после миграции что-то пошло сильно не так, нужно откатываться

Вероятность такого

Хочу назад!! Уже после миграции что-то пошло сильно не так, нужно откатываться
варианта прямо зависит от глубины предварительного тестирования
Что можно сделать и откуда могут расти ноги
Не паниковать
Определить причину проблемы (если мигрируете с 2000, заранее поучитесь пользоваться новыми средствами диагностики)
Может быть все не так и плохо ☺
В зависимости от… откат может быть простым и сложным
Если процедура прописана и протестирована, будет проще
Мониторинг системы для раннего оповещения
Инструменты синхронизации
Особо много не скажешь, мы пользовались tablediff. Работает быстро и проста в использовании

Слайд 45

После миграции Что можно сделать в первую очередь

Типы данных
Проверьте точность представления и размеры

После миграции Что можно сделать в первую очередь Типы данных Проверьте точность
хранения
Может быть использовать Sparse column
Это может потребовать дополнительных ресурсов (посмотрите когда начинаются преимущества – “Estimated Space Savings by Data Type” в BOL)
Persisted columns
Индексирование вычисляемых полей
Обновите статистику (особенно, если переходили с SQL 2000)
Настройки БД
DB_CHAINING, EXECUTE AS
PAGE_VERIFY CHECKSUM
AUTO_UPDATE_STATISTICS_ASYNC
PARAMETERIZATION
Анализ критичных запросов
Посмотрите на ранее сохраненные планы и сделайте сравнение с базовой линией производительности

Слайд 46

После миграции Что можно сделать в первую очередь (2)

Секционированные таблицы
Enterprise Edition
Секционированные представления ->

После миграции Что можно сделать в первую очередь (2) Секционированные таблицы Enterprise
Секционированные таблицы
Соответствующие настройки уровня блокировок
Тестируйте, при новом уровне блокировки могут возникать Deadlock
Посмотрите на выделение ресурсов
sp_configure ‘affinity mask’, sp_configure ‘affinity I/O mask’
Новые возможности по управлению
Data Collector, reports, DMVs (новые и измененные)
Backup Compression
Database Tuning Advisor!
Воспользуйтесь ранее собранными трассировками

Слайд 47

После миграции Использование нового функционала

Посмотрите на качество индексирования и возможность использования индексированных представлений
Оцените

После миграции Использование нового функционала Посмотрите на качество индексирования и возможность использования
качество управления статистикой
Sampling выборки, ручное,автоматическое управление
Алгоритм автоматического срабатывания не изменился (20%)
Оцените необходимость использовнаия хинтов
Посмотрите SQL Server Magazine InstantDoc #26406 (флаги отключения хинтов)
Уберите хинт или опишите его полезность в документации
Подумайте об использовании plan guide вместо хинтов (теперь можно строить plan guide по данным из кеша)
Оцените полезность онлайновых операций (в основном для Enterprise Edition)
Как себя чувствует TEMPDB (особенно при переходе с SQL 2000)
Управление на основе политик
Не следует ли применить ее для внедрения существующих стандартов
Resource Governor
Начните с минимального числа групп, пулов и правил (в классифицирущей функции)

Слайд 48

После миграции На более дальнюю перспективу

Новые типы данных
Более удобные типы – date, time
Если

После миграции На более дальнюю перспективу Новые типы данных Более удобные типы
есть написанные CLR типы которые можно перевести на встроенные (geometry, geography, hierarchyid)
Переписать «COM компоненты» на CLR
XPs на C# или VB в CLR
Разграничение доступа
Схемы (для миграции с SQL 2000), новые возможности шифрования (TDE), новые возможности аудита
Устаревший функционал нужно переписать/удалить
AS COM assemblies, DTS, ActiveX Script task, SQL Mail, sp_repladdcolumn, updateable subscriptions, sp_dbcmptlevel, ……
Если мигрировали с SQL Server 2000, то еще много чего – см. документацию

Слайд 49

Часто встречающиеся проблемы

После перехода на SQL Server 2008 запросы исполняются дольше
В чем

Часто встречающиеся проблемы После перехода на SQL Server 2008 запросы исполняются дольше
может быть проблема
Посмотрите на запросы, нужны ли хинты (или просто попробуйте удалить их)
Сделайте полное обновление статистики (для больших таблиц увеличьте % выборки)
Посмотрите не перегружена ли TempDB
Используйте DB Tuning Advisor
Премьер контракт на поддержку!
Иметь его перед миграцией критичного приложения
Посмотрите на http://support.microsoft.com/, http://forums.microsoft.com/, msdn, technet и Books Online нет ли обновлений.

Слайд 50

Новый функционал и производительность

Новый функционал и производительность

Слайд 51

Чудо? Нет, это не к нам

Как таковая, миграция не гарантирует резкого роста

Чудо? Нет, это не к нам Как таковая, миграция не гарантирует резкого
производительности
Рожденный ползать…
Если приложение откровенно «тормозит», простой миграции обычно мало

Слайд 52

Ну, не совсем

В некоторых областях прорыв возможен
Full-text Search
Запрос, охватывающий несколько секций
Запрос по

Ну, не совсем В некоторых областях прорыв возможен Full-text Search Запрос, охватывающий
star join
Индексированные представления, которые теперь можно использовать нормально на секционированных таблицах
Сжатие данных (нужно менять свойства БД, Compatibility 100)

Слайд 53

Интегрированый Full Text Search

План гораздо лучше

Интегрированый Full Text Search План гораздо лучше

Слайд 54

Секционированные таблицы

SQL 2005
SQL 2008

Секционированные таблицы SQL 2005 SQL 2008

Слайд 55

Star Join

Множественные битовые индексы
Реорг фильтров

Fact table scan

Dimension 2

Dimension 1

Hash join

Hash join

Bitmap filter

Star Join Множественные битовые индексы Реорг фильтров Fact table scan Dimension 2
1

Bitmap filter 2

SQL Server 2008
Способен перемещать фильтры

http://en.wikipedia.org/wiki/Bitmap_index

Слайд 56

Демо Bitmap Filters

BitmapIndexes.sql

Демо Bitmap Filters BitmapIndexes.sql

Слайд 57

DECLARE с присвоением

Может удивить

set statistics profile on
GO
declare @state varchar(2) = 'CA'
select

DECLARE с присвоением Может удивить set statistics profile on GO declare @state
* from authors where state = @state
select * from authors where state = 'CA'
Rows Executes StmtText EstimateRows
------ --------- ------------------------------------------- ------------
13 1 select * from authors where state = @state 2.875
13 1 |--Clustered Index Scan(OBJECT:([pubs] 2.875
Rows Executes StmtText EstimateRows
------ --------- ------------------------------------------- ------------
13 1 SELECT * FROM [authors] WHERE [state]=@1 15
13 1 |--Clustered Index Scan(OBJECT:([pubs] 15
На этапе компиляции по-прежнему присваивается NULL
OPTION (RECOMPILE) для запроса с переменной выравнивает поведение

Слайд 58

Row creator Имеет ограничения

USE Tempdb
go
create table foo (fld1 char(10))
go
insert foo (fld1) Values('1'),
('2'),
('3'),
...
('1410'),
('1411')
-- Msg

Row creator Имеет ограничения USE Tempdb go create table foo (fld1 char(10))
10738, Level 15, State 1, Line 1001
-- The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.

Это сделано сознательно, во избежание очень долгой компиляции
1000 элементов: меньше секунды
10 000 элементов: 75 секунд, 100% CPU

Слайд 59

Resource Governor

Классифицирующая функция исполняется на каждом подключении
Если она слишком сложная/тормозная, всем будет

Resource Governor Классифицирующая функция исполняется на каждом подключении Если она слишком сложная/тормозная,
очень плохо
Если это случилось используйте DAC для исправления (вместо остановки сервера)

Слайд 60

Заключение

Концептуально обновление – ничего хитрого, НО следите за человеческим фактором!
Жестких правил нет,

Заключение Концептуально обновление – ничего хитрого, НО следите за человеческим фактором! Жестких
аккуратность и подробное документирование, тест, тест, тест
Совместимость – тест, тест, тест
Средства тестирования могут быть разными
План отката – написать и проверить в работе!!
Не делайте поспешных выводов
Ресурсы доступны
SQL Server 2008 Upgrade Technical Reference Guide, наконец-то вышел (почти 500 страниц)
Пишите о проблемах на http://connect.microsoft.com/

Слайд 61

Вопросы?

Вопросы?

Слайд 62

Track Resources1

SQL Server 2008 Upgrade Assistant (free download)
http://ww.scalabilityexperts.com/ssua/

Microsoft Connect (feedback, suggestions,

Track Resources1 SQL Server 2008 Upgrade Assistant (free download) http://ww.scalabilityexperts.com/ssua/ Microsoft Connect
bugs, wish list)
http://connect.microsoft.com/sqlserver/feedback/

SQL Server 2008 Jumpstart Portal
http://sqlserver2008jumpstart.microsofttraining.com/

Upgrade & Application Compatibility Testing content
http://forums.microsoft.com/Forums/ShowForum.aspx?ForumID=1627&SiteID=1
http://blog.scalabilityexperts.com/

SQL Server 2008 Upgrade Technical Reference Guide
http://www.microsoft.com/downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7&displaylang=en

Слайд 63

Track Resources2

Using Multiple Versions of SQL Server in a Repllication Topology
http://technet.microsoft.com/en-us/library/ms143241(SQL.100).aspx

Backwards

Track Resources2 Using Multiple Versions of SQL Server in a Repllication Topology
compatibility, changed, deprecated and discontinued features
http://technet.microsoft.com/en-us/library/cc280407(SQL.100).aspx

Слайд 64

Заполните анкету: http://platforma2009.ru/Eval.aspx Терминалы - холлы конференции и интернет-кафе на 1 этаже
Чтобы

Заполните анкету: http://platforma2009.ru/Eval.aspx Терминалы - холлы конференции и интернет-кафе на 1 этаже
участвовать в розыгрыше призов
Результаты – на сайте конференции и в голосовых объявлениях после розыгрышей в 14:30, 16:00, 17:30 и 19:00

Не забывайте заполнять анкеты по докладам Ваше мнение очень важно!

Подробная информация по заполнению анкет – на сайте конференции

Имя файла: Миграция-на-SQL-Server-2008:Чего-можно-ожидать-и-как-с-этим-бороться.pptx
Количество просмотров: 125
Количество скачиваний: 0