(Возврат на основную страницу)

 

Содержание номера за Октябрь 2009 год

SQL Server

Октябрь 2009
№ 10 (106)

 

Editorial

Майкл Оти

Водопад новых продуктов от компании Microsoft 

Programming

Джефф Моден

Перекрестные и сводные таблицы. Часть 1. Преобразование строк в столбцы

Other

Омри Бахат

Выдворение пользователя из базы данных всего в два шага

Эндрю Келли

Знакомство с Virtual File Stats

 

Водопад новых продуктов от компании Microsoft

Майкл Оти (Michael Otey)

Хотя экономика и ИТ­индустрия в целом по­прежнему сражаются со спадом, вызванным кризисом, этот факт никак не повлиял на решимость компании Microsoft сохранить график выпуска новых продуктов на вторую половину 2009 г., первую половину 2010 г. и дальше. Наиболее значимые выпуски, запланированные к выходу в ближайшие месяцы, выглядят таким образом:

•    Windows Server 2008 R2­2009 (вторая половина года)

•    Windows 7­2009 (вторая половина года)

•    Exchange 2010­2009 (вторая половина года)

•    SQL Server 2008 R2­2010 (первая половина года)

•    Office 2010­2010 (первая половина года)

•    Visual Studio 2010 и .NET Framework 4.0­2010

Готова ли ИТ?

Невозможно спорить, что представленный список представляет весьма амбициозные планы корпорации. Кроме того, Microsoft старается изо всех сил, чтобы основные выпуски новых версий выходили близко друг к другу, чтобы увязать технологии в единое целое. Однако, похоже, основной вопрос будет звучать так: «Готова ИТ­индустрия принять новые продукты?»

Windows Server и Windows 7

Хотя некоторые вопросы и могут возникнуть относительно части запланированных выпусков, к Windows Server 2008 R2 эти сомнения не относятся. С появлением в R2 новой версии Hyper­V и Live Migration Windows Server 2008 R2 представляется обязательным обновлением для компаний, использующих Hyper­V. Добавьте сюда PowerShell 2.0, интегрированную среду разработки скриптов (Integrated Scrip­ting Envi­ronment), новый центр управления Active Directory (Active Directory Management Center) (способный выполнять откат операций, сделанных в AD!) и новая версия операционной системы представляется важным обновлением, даже для стагнирующей экономики.

Про Windows 7 не все так очевидно. Утверждается, что Windows 7 — самая лучшая операционная система, когда­либо разработанная Microsoft (как будто про все предыдущие говорилось нечто иное... — Прим. ред.). Но даже в этом случае, она по­прежнему не вполне совместима с компьютерами, на которых сейчас исполняется XP. Переход на Windows 7 не дешевый процесс. Достаточно ли лозунга «лучшая из всех», чтобы заменить «достаточно хорошую» XP? Трудно сказать о краткосрочной перспективе, но в дальнейшем переход непременно состоится по мере устаревания и вывода из оборота существующих компьютеров с заменой на новые модели.

SQL Server и Exchange

Если говорить о SQL Server 2008 R2 и Exchange 2010, то эти продукты также испытывают жесточайшую конкуренцию со стороны предыдущих версий. Так, SQL Server 2008 R2 — действительно стоящее обновление для заказчиков, которым не хватает новой функциональности бизнес­аналитики, предлагаемой продуктом. Если они вас не интересуют, то использование SQL Server 2008 — то, что вам нужно. Хотя я и являюсь большим сторонником SQL Server, R2 может оказаться той версией, которую многие организации просто пропустят. (Как бы то ни было, я никогда не выступал за программу выпуска обновлений типа R2. Мне не нравятся частые модификации базовой функциональности в таких инфраструктурных продуктах, как SQL Server. Обновление основ всегда затруднительный и рискованный процесс; проблемы возникают даже при очень тщательном планировании. Кроме того, выпуски R2 создают неразбериху в функциональности и затрудняют стандартизирование на определенной версии.)

С другой стороны, Exchange 2010 — существенно новая версия (major release). Известно, что Exchange 2007 был очень сложен со всеми множественными серверными ролями, но также очень популярен. Выходящий Exchange 2010 предлагает множество усовершенствований по сравнению с 2007, но достаточно ли этого, чтобы продать новый сервер? В благоприятные времена я думаю, что да, но сейчас с деньгами плохо и шансы на обновление существенно меньше.

Office и Visual Studio

Точно также Office 2010 и Visual Studio 2010 — смешанный по значимости пакет. Лично я испытываю большие сомнения относительно Office, так как только недавно, после двух лет использования привык к Office 2007, я просто не готов к переходу на новую версию. Уверен, что многие организации согласятся со мной. Независимо от текущей экономической ситуации, продать Office 2010 будет нелегко. Аналогично Visual Studio 2010 будет испытывать сильное давление со стороны Visual Studio (VS) 2008. Однако разработчики на технологиях Microsoft обычно лояльны к поставщику инструментальных средств и компании будут рады получить поддержку интерфейса Windows Vista/Windows 7 interface, равно как и усовершенствованной работы параллельных процессов. Некоторые из моих коллег с нетерпением ожидают появления шаблонов для Azure проектов. Хотя VS 2008 очень хорош, я думаю, разработчики с готовностью перейдут на VS2010.

Попробуйте сами

Конечно же, самый правильный путь по оценке пригодности продукта — это попробовать самому. Тестовые версии перечисленных продуктов можно найти по следующим адресам:

•    Windows Server 2008 R2 (http://www.microsoft.com/windowsserver2008/en/us/RDownload.aspx)

•    Windows 7 (http://www.microsoft.com/windows/windows­7/download.aspx)

•    Exchange 2010 (http://technet.microsoft.com/en­us/evalcenter/dd185495.aspx)

•    Visual Studio 2010 (http://www.microsoft.com/visualstudio/en­us/products/2010/default.mspx)

•    SQL Server R2 (http://technet.microsoft.com/en­us/evalcenter/ee315247.aspx)

 

Перекрестные и сводные таблицы. Часть 1. Преобразование строк в столбцы

Джефф Моден (Jeff Moden)

DOWNLOAD

Эта статья посвящается хорошему другу и боевому товарищу из стана приверженцев T­SQL Катрине Райт (Katrina Wright). Мы вместе сражались и вместе одержали много побед.

Введение

Я искал определение, из которого было бы ясно, чем же в действительности является «перекрестная таблица», и мне не удалось найти ничего лучше слегка модифицированной дефиниции из документации SQL Server 2000 Books Online...: «Иногда возникает необходимость развернуть результаты так, чтобы столбцы [данные столбцов] были представлены по горизонтали, а строки [данные строк] были представлены по вертикали. Известно, как создание сводной таблицы (PivotTable), создание отчета с перекрестными ссылками (cross­tab report) или разворот данных».

Другими словами, перекрестную или сводную таблицы можно использовать для того, чтобы преобразовать или транспонировать информацию из строк в столбцы с целью создать отчет или преобразовать в более типичные форматы данных какие­то специальные длинные, «тощие» (skinny) таблицы, известные, как таблицы EAV (Entity­attribute­value — сущность­атрибут­значение) или NVP (Name­Value Pair — пара имя­значение).

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

Прежде чем вы что-нибудь скажете...

Написать серию статей, посвященных простой идее перекрестных и сводных таблиц, меня побудила  лавина запросов на информацию такого рода, получаемых в последнее время на форумах портала SQL Server Central: было время, когда дня не проходило без появления таких обращений, ежедневно поступало по два или три запроса.

Притом, да, мне известно, что такого рода «форматирование» должно осуществляться главным образом средствами интерфейса GUI, с помощью инструментальных средств подготовки отчетов, и даже, может быть, в электронных таблицах (Spreadsheet). Я также знаю, что использование таблиц EAV и NVP не рассматривается как «передовой опыт». Но, как было сказано, количество получаемых в последнее время вопросов свидетельствует о том, что разработчики оказываются загнанными в угол своими боссами и, если уж им приходится делать такие вещи, то, по­моему, они могли бы воспользоваться небольшой помощью.

Важные замечания

При подготовке программного кода и данных всех рассматриваемых в этой статье примеров я использовал временные таблицы исключительно ради безопасности.

Разумеется, можно было бы использовать табличные переменные, но они никак не позволяют осуществить частичное выполнение (partial run) и посмотреть, что находится в табличной переменной после выполнения каждого раздела.

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

Последнее, но немаловажное, замечание: в настоящее время у меня инсталлированы только версии SQL Server 2000 и 2005. Я указываю в скобках, в какой версии будет выполняться каждый фрагмент кода. Не сомневаюсь, что большая часть кода будет работать в версии 2008, и порядочная его часть, относящаяся к перекрестным таблицам, будет также работать в версии 7... Но, ни та, ни другая версия мне не доступны, а значит, я их не тестировал.

Кроме того, для вашего удобства, весь программный код сосредоточен в одном из последних разделов этой статьи — в разделе «Ресурсы».

Ну что ж... давайте приступим.

Выдворение пользователя из базы данных всего в два шага

Омри Бахат (Omri Bahat)

DOWNLOAD

Пользователи базы данных Microsoft SQL Server иногда выполняют код, который плохо сказывается на службах и приложениях в производственной среде. Администраторы баз данных должны выдворять этих пользователей из базы данных и завершать активность их процесса SQL Server. В Microsoft SQL Server 2005 и SQL Server 2000 для выдворения пользователей из базы данных вы можете воспользоваться системной таблицей под названием sysprocesses и сценарием T-SQL, именуемым KickUserOut.sql.

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

1.  Определить, кто вошел в систему и какую базу данных он использует.

2.  Выполнить KickUserOut.sql.

 

Знакомство с Virtual File Stats

Эндрю Келли (Andrew Kelly)

DOWNLOAD

 

Каждый администратор баз данных (АБД) знает, что существуют определенные аспекты SQL Server и связанного с ним аппаратного обеспечения, которые вам просто необходимо контролировать, если вы хотите измерить общую производительность системы. Однако не каждый в точности представляет, за чем следить, как следить и, самое важное, как истолковывать результаты. В этом более длинном, чем обычно, описании я проведу относительно подробное рассмотрение с целью исследовать один из этих ключевых фрагментов этой проблемы: я воспользуюсь встроенным динамическим административным представлением (DMV) SQL Server 2005, связанным с физическим файловым доступом — sys.dm_io_virtual_file_stats() — а также создам и задействую небольшое количество специализированного кода, который позволит вам легко получать сведения о данных, выводимых этим DMV. Хотя это DMV вы найдете только в SQL Server 2005 или более поздних версиях, оно заменяет схожую функцию SQL Server 2000, именуемую fn_virtualfilestats(). Приемы, код, принципы работы, описанные в этой статье, специфичны для SQL Server 2005, но вы можете без труда применить их к SQL Server 2000 с незначительными изменениями.

Польза DMV

Что это замечательное DMV может сделать для вас? В двух словах, данное DMV позволяет вам в точности видеть характер физического ввода­вывода в вашей системе под управлением SQL Server, когда вы читаете или пишите в файлы на диске. Различение физического ввода­вывода важно, в сравнении с метриками, которые вы можете получить от других функций и утилит SQL Server, учитывающих или сообщающих только о логическом вводе­выводе. (Логический ввод­вывод — это те случаи, когда доступ к странице осуществляется только в памяти или кэше, в то время как при физическом вводе­выводе происходит обращение к файлу на диске.) Таким образом, помните, что, если ввод­вывод производит доступ только к кэшу SQL Server (т. е. логический ввод­вывод), выходные данные этого DMV не будут этот ввод­вывод отражать. Следовательно, вы можете достоверно определить, насколько много вы читаете или пишите в ваши файлы базы данных на диске. Данное DMV также показывает, сколько времени потребовалось SQL Server, чтобы завершить эти операции чтения или записи. И поскольку DMV отслеживает эти данные на уровне отдельных файлов, вы можете использовать результаты для получения потрясающего средства контроля за различными аспектами вашей системы, как, например, насколько интенсивно используется один файл по сравнению с другим, или какой файл дольше всех ожидает совершения физических операций.

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

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

Во­вторых, наряду со счетчиками ожиданий ввода­вывода (I/O stall counters), эти необработанные данные могут в точности сообщить вам, где у вашего диска имеются узкие места с точки зрения физических дисковых массивов, на которых находятся файлы. Счетчики потерь производительности ввода­вывода показывают вам в миллисекундах, сколько времени проходит в ходе операции чтения или записи, либо, в зависимости от столбца, совокупную суммарную величину. Таким образом, очевидно, файл с наибольшими потерями производительности ввода вывода проводит больше всего времени в ожидании. Если вы просуммируете потери для всех файлов, расположенных на отдельном физическом массиве, вы сможете увидеть, какая часть системы хранения находится в ожидании дольше всего. Но эта информация в чистом виде не обязательно говорит о том, что определенный массив имеет наихудшую производительность. Вам также следует принять во внимание количество обработанных данных и частоту запросов ввода­вывода за отрезок времени.

(Возврат на основную страницу)

Hosted by uCoz