(Возврат на основную страницу)
Microsoft пересматривает процесс бета-тестирования
Если бы Пол Флесснер (Poul Flessuer) и его команда по разработке SQL Server могли действовать по своему желанию, традиционные бетавыпуски продуктов вскоре ушли бы в прошлое. И они не единственные, кто старается продвинуть новый способ сборки конечного продукта, чтобы приблизиться к подходу, который использует сообщество открытого кода.
В Microsoft и других компаниях бетатестирование было краеугольным камнем разработки с тех пор, как они вышли на рынок создания и продажи прикладного программного обеспечения. Но, если влиятельные силы в Редмонде смогут реализовать свои идеи, выпуск бетаверсий скоро станет историей для Microsoft, ее партнеров и заказчиков.
Что стоит за изменением подхода?
Бетаверсии — это предсказуемые вехи (milestone) процесса разработки, по которым внешние и внутренние тестеры оценивали свое движение к финальной версии. Обычно они выпускаются нечасто, и, как следствие, информация по ним может оказаться запоздавшей и иногда некачественной. Однако их количество известно, и именно они являются для производителей, OEMпартнеров и заказчиков отправной точкой поддержки нового продукта.
Сообщество открытого кода перевернуло традиционную парадигму создания ПО с ног на голову. Здесь тестеры получают часто изготавливаемые сборки продукта, находящегося на стадии формирования. Их рекомендации и предложения, как правило, принимаются во внимание быстрее. А в деле выпуска качественного кода сообщество разработчиков считается не менее важным, чем «эксперты», которые следят за процессом.
До последнего времени Microsoft позиционировала свой «способ изготовления сосисок» как наилучший. Но в прошлом году в голосах из Редмонда появились совершенно иные интонации. Высшее руководство корпорации развернуло дискуссии о том, являются ли распространяемые под барабанную дробь и звуки фанфар бетаверсии самым эффективным способом разрабатывать и тестировать ПО. Может быть, есть более удачная альтернатива?
Группа Microsoft Engineering Excellence, возглавляемая ветераном с 20летним стажем Джоном де Вааном (Jon DeVaan), надзирает за проектом по реинжинирингу процесса разработки ПО внутри Microsoft. Джон де Ваан, член группы Microsoft central Business Leadership, управляет инженерными стандартами, используемыми для создания программных продуктов Microsoft. Получая отзывы от Windows Core Operating Systems Division (COSD), разработчиков Office, инструментальных средств и приложений, он стоит во главе фундаментальных изменений инженерных процессов. В рамках этой инициативы группы разработки основных продуктов часто «виртуализируются» за рамками своих непосредственных работ, что сводит вместе разработчиков из разных команд для создания нового продукта или подсистемы. В то же самое время работа этих «виртуалов» основана на Customer technology preview (CTP) — технологии частых тестовых сборок, служащей для увеличения скорости создания и тестирования продукта.
В январе Джим Олчин (Jim Allchin), сопрезидент подразделения платформенных продуктов и услуг Microsoft, намекнул о возможных переменах. Он признал, что группа разработки Windows Vista на финальных стадиях полагается на более частые выпуски тестовых CTPсборок по сравнению с традиционными бетаверсиями. Это подтвердил и Пол Флесснер — старший вицепрезидент Microsoft по серверным приложениям. По его словам, отдел SQL решил отказаться от Beta 3 SQL Server 2005, так как информация по результатам тестирования CTP была достаточно надежной и быстрой, чтобы выпустить продукт.
Если Флесснер добьется реализации того, что он описывает как SQL Server Reengineering Initiative, для разработчиков и тестеров SQL Server наступит эра, свободная от бетаверсий. «Если бы у меня были развязаны руки, на свет никогда больше не появилась бы еще одна бетаверсия SQL Server, — сказал он в интервью Microsoft Watch. — Руководитель не всегда имеет свободу выбора, но мы определенно двигаемся в этом направлении».
Подобные изменения не происходят неожиданно. Разработчики сообщества открытого кода оказали воздействие на восприятие ситуации в Microsoft — это признают Флесснер и другие руководители корпорации, но здесь повлияли и другие факторы.
Подразделения Microsoft, которые первыми начали использовать CTP, — в первую очередь, группы разработки Windows, SQL Server и Visual Studio и их тестеры, обнаружили, что CTP более эффективны в обмене кодом и результатами проверки с группами тестирования.
В течение последних 18 месяцев разработки SQL Server 2005 группа Флесснера, по его словам, «действительно встала в колею CTP». Что касается Katmai, следующей основной версии SQL Server, то планируется переход только на CTP без использования бетамодели.
Разумеется, CTP в SQL Server отличается от того, что под этой маркой выпускает группа Visual Studio или Windows. Отдел Visual Studio, который de facto определил CTP как «снимок продукта в данный момент времени», выпускал тестовые CTPсборки, которые по качеству не соответствовали бетаверсиям (это признают официальные представители компании). Группа разработки Windows усложнила ситуацию, выпустив CTPверсии Vista, которые по официальным заявлениям соответствовали Beta 2. С другой стороны, группа SQL проводила полномасштабное тестирование CTP, которые она выпускала.
Пол Флесснер ожидает, что новый инженерный процесс окажет немедленное и положительное влияние на цикл выпуска продукта, будь то следующая версия SQL Server или WinFS — Windows File System.
Системные требования и конфигурация системы хранения данных для SQL Server
Джо Чанг (Joe Chang)
Правильная, технически грамотная оценка требований к системной и дисковой конфигурации для SQL Server должна учитывать все разнообразие процессоров, а также анализ использования памяти и системы вводавывода. Ее стоимость может достигать 10–20 тысяч долларов с учетом оплаты рабочего времени персонала в зависимости от наличия существующего производственного окружения, на базе которого можно осуществлять дальнейшее проектирование, или от необходимости основываться лишь на теоретических моделях и прототипе базы данных. При этом может оказаться, что характеристики сервера за 20 тысяч долларов многократно превышают окончательные требования, поэтому нужно подумать, стоит ли производить строгую техническую оценку.
К счастью, разумную системную конфигурацию можно предложить без трудоемкого технического анализа — по большей части на основе структуры стоимости ОС Windows, лицензий SQL Server и серверной платформы. В случаях, когда речь идет о действительно большой системе на базе более чем четырех процессоров, надлежащий технический анализ все же потребуется.
Сводка для менеджеров
У менеджеров высшего звена обычно нет времени, чтобы вникать в детальное обоснование решений о конфигурации каждой системы, — они хотят видеть лишь краткую сводку. Простая иллюстрация и ответ без детального обоснования приведены на рис. 1. Если это еще не очевидно, основное внимание нужно уделить пропускающей способности системы вводавывода и такому показателю, как количество случайных операций вводавывода в секунду. В теории достижимая последовательная полоса пропускания для двух внутренних и восьми внешних каналов SCSI составляет 2,5 Гб/сек, но это не было проверено на практике.
В табл. 1 содержится краткая сводка вариантов системной конфигурации для систем на базе чипсетов Intel E7230, E7520 и E8500. Конфигурации основаны на технологии хранения данных U320 SCSI. В следующем году технология SCSI, скорее всего, уступит место сочетанию SAS и SATA, которые будут выбраны потребителями из широкого спектра серверных систем и систем хранения данных.
Ниже приведено краткое описание вариантов выбора программного обеспечения, системной конфигурации, памяти и подсистемы хранения данных.
• Программное обеспечение: 64разрядные Windows Server 2003 и SQL Server 2005 предпочтительнее, чем 32разрядные версии, включая SQL Server 2000, если другие требуемые компоненты поддерживают 64разрядные операции в полном объеме. Изза разницы в поведении SQL Server 2005 по сравнению с SQL Server 2000, а также 64разрядных версий по сравнению с 32разрядными может потребоваться настройка производительности.
• Система: любая подходящая серверная система с 1, 2 или 4 двухъядерными процессорами. Даже если окажется, что требуется большая NUMAсистема, просто переключите 1–4х процессорную систему на использование в режиме тестирования. Учтите, что система с единственным двухъядерным процессором сегодня сравнима с системой на базе 4х процессоров Xeon MP 2,0 ГГц производства 2002 г.
• Память: заполните имеющиеся гнезда памяти модулями DIMM объемом 1 Гб или 2 Гб, если только вы не уверены, что требуются именно модули объемом 4 Гб. Выбирайте двухгигабайтные модули, если их стоимость хорошо соотносится со стоимостью модулей объемом 1 Гб. Требования к памяти могут повлиять на выбор системы в целом. Иногда более эффективно купить систему с 4мя гнездами для процессоров и большим количеством гнезд для памяти, даже если для процессоров вам требуется всего 2 гнезда, особенно если это поможет избежать установки модулей памяти объемом 4 Гб.
• Система хранения данных: распределите нагрузку между 4–10 или более каналами вводавывода и 16–60 (или более) дисками. Любой из интерфейсов U320 SCSI, FC или SAS сможет соответствовать требованиям по производительности, если выполнить распределение правильно. В начале 2006 г. лучше всего выбрать диски 15K1 объемом 36 Гб или диски 10K объемом 72–74 Гб. Не дайте какомунибудь идиоту убедить вас, что большие диски 15K на 146 Гб или диски 10K на 300 Гб соответствуют требованиям к объему и позволяют при этом сэкономить. Если вы заинтересованы в производительности, то это не вариант. Для дисков SFF 2,5" SAS, на 36 или 72 Гб приемлемая скорость составляет 10K.
И последнее, но очень важное замечание: протестируйте полученную конфигурацию на производительность. То, на что должна быть способна дисковая конфигурация, и то, на что она способна на самом деле, не одно и то же.
Версии программного обеспечения
Для практических целей структура стоимости лицензий на программное обеспечение поможет сузить множество рекомендованных системных конфигураций. В табл. 2 приведено количество процессоров и объем ОП, которые поддерживаются 32 и 64разрядной версиями Windows Server 2003 R2.
Табл. 3 содержит информацию о поддержке процессоров и памяти SQL Server 2000 в зависимости от версии. 64разрядная версия SQL Server 2000 — только для процессора Itanium.
В табл. 4 представлена информация о поддержке процессоров и памяти SQL Server 2005 в зависимости от версии для 32 и 64разрядных версий.
Очевидно, что более старые версии программных продуктов ограничены в возможностях по использованию памяти. На момент выпуска продукта эти ограничения были разумны. Для версий Enterprise Edition 3 Гб и AWE были пределом, что не было нелогичным в 2000 г., когда модули памяти объемом 4 Гб были дороги и требовали дорогой системы. С тех пор 816 Гб памяти вполне соответствуют по цене версии Standard Edition, но изза отсутствия новых выпусков единственным вариантом был SQL Server 2000 Enterprise Edition. С выходом SQL Server 2005 ограничения к памяти в версии Standard Edition были ослаблены. ОС тоже имеет свои ограничения в области памяти, но они гораздо слабее, особенно для 64разрядных версий, а разница в цене при переходе на Enterprise Edition не так велика.
В любом случае предпочтительное решение — 64разрядная версия Windows Server 2003. Standard или Enterprise Edition удовлетворит нужды большинства компаний. SQL Server 2005 имеет значительные преимущества над SQL Server 2000 благодаря возросшему объему используемой памяти, в том числе в Standard Edition. 64разрядная версия имеет неограниченный доступ к памяти свыше 4 Гб по сравнению с 32разрядными версиями, которые требуют использования AWE.
Платформы
Сегодня для абсолютного большинства требований 1, 2 или 4процессорной системы более чем достаточно. Большинство фирм покупает систему с 2 или 4 гнездами для процессоров. Тем не менее, учитывая сегодняшние возможности микропроцессоров и доступность многоядерных процессоров, стоит серьезно рассмотреть вариант системы с единственным процессором, где это возможно. Производители не хотят рекомендовать такой вариант, имея в наличии более дорогие системы на базе двух процессоров.
В табл. 5 приведены характеристики процессоров. Двухъядерные процессоры на данный момент доступны в любых вариантах, кроме Itanium, для которого двухъядерная версия выйдет в середине или ближе к концу 2006 г. Процессоры с одним ядром обычно имеют тактовую частоту немного выше, чем соответствующие двухъядерные. Стоимость лицензий на программное обеспечение говорит в пользу двухъядерного варианта, кроме кода, который должен выполняться последовательно.
На начало 2006 г. AMD Opteron, возможно, обладает более высокой производительностью выполнения широкого спектра операций SQL Server. Opteron также исключительно хорош, если требуется последовательный доступ к памяти. Процессоры линий Intel Pentium D, Xeon и Xeon MP пока отстают — в основном изза температурных ограничений, изза которых реальная частота процессора гораздо ниже максимума, поддерживаемого частотой переключения транзисторов. Семейство Pentium 4/Xeon обеспечивает наилучшую производительность при сканировании таблиц из всех процессорных линеек. Функция HyperThreading в этой линии процессоров действительно повышает производительность приложений, обменивающихся по сети большими объемами данных. К сожалению, это справедливо не для всех операций и в некоторых случаях возможно падение производительности, поэтому использование этой технологии требует тщательного анализа. HT улучшает производительность сжатия на 50% на ядро, что очень впечатляет. Эти характеристики ускоряют операции создания резервных копий и восстановления из них при использовании программного обеспечения для создания резервных копий с использованием компрессии сторонних разработчиков, например LiteSpeed от Quest (в прошлом Imceda).
Intel Core Duo и его предшественник Pentium M существуют только в 32разрядной версии, но у них прекрасная производительность и очень низкое энергопотребление. Они лучше всего подходят для исключительно 32разрядных сред, однопроцессорных систем, сред высокой плотности или других ограниченных в энергопотреблении. Линейка Itanium 2 должна занять свое место среди систем на 2—4 процессора, но пока ее выход откладывается изза задержки с выпуском двухъядерной версии, и текущий процессор Madison, изготовленный по технологии 130 нм, соревнуется с процессорами Opteron и Xeon, изготовленными по технологии 90 нм. Тем не менее в высокопроизводительных масштабируемых средах системы на базе Itanium достойны серьезного рассмотрения при построении решений на базе Windows и SQL Server. Unisys предлагает линию продуктов класса highend на базе процессоров Xeon MP. До того как была представлена поддержка 64разрядной технологии в линейке Xeon MP, применение 32разрядных процессоров Xeon MP в больших NUMAсистемах было затруднено, в основном изза ограниченного адресного пространства 4 Гб. Сегодня неясно, как рынок систем с более чем четырьмя процессорами разделится между Itanium, Xeon MP и, возможно, Opteron, ведь теперь полная поддержка 64разрядной технологии присутствует во всех линейках процессоров.
На рис. 2 приведено упрощенное изображение однопроцессорной системы на базе чипсета Intel E7230. Позаимствованный у настольных систем, он весьма впечатляет своими возможностями вводавывода. Он имеет один x8 порт PCIExpress, который соединен с двумя шинами PCIX. Первая с частотой 100 МГц имеет 2 слота, а вторая с частотой 133 МГц — 1 слот. Альтернативные конфигурации включают единственный x8 порт PCIE, два x4 порта PCIE или один x4 порт PCIE и одну шину PCIX. В целом следует предпочесть PCIE конфигурации, если в наличии имеются адаптеры PCIE. Порт DMI соединяет контроллер памяти с ICH7 с той же полосой пропускания, что и один x4 порт PCIE. ICH7 имеет 4 порта SATA на 3,0 Гбит/сек, 2 PCIE x1 порта для гигабитного Ethernet и один x4 порт PCIE.
У чипсета E7230 не должны возникать проблемы с обслуживанием 4 внутренних SATAдисков, 2 RAIDконтроллеров и 4 каналов SCSI. Впрочем, одного RAIDконтроллера с двумя каналами SCSI будет достаточно для этой однопроцессорной системы. Можно упомянуть, что E7230 произошел от линии 9XX чипсетов для настольных систем, у которой вообщето был один x16 порт PCIE для графики и один порт DMI, который, по сути, является x4 портом PCIE. Нет причины, по которой x16 графический порт не может быть сконфигурирован как два x8 порта, кроме того, что возможности вводавывода и так превышают требования большинства однопроцессорных систем.
На рис. 3 показана двухпроцессорная система на базе чипсета Intel E7520. У E7520 три x8 порта PCIE и один интерфейс HI для более старых устройств с низкой пропускной способностью. У каждого из x8 портов PCI впечатляющая номинальная полоса пропускания 2 Гб/сек в каждом направлении. Действительная устойчивая полоса пропускания не проверялась.
Как видно, один x8 порт PCIE соединен с двумя шинами PCIX. Каждая шина PCIX имеет встроенное PCIX устройство вдобавок к имеющимся в наличии открытым слотам. Альтернативные конфигурации для чипсета E7520 включают 3 x8 порта PCIE или 1 x8 порт PCIE и 4 шины PCIX, каждые две на двух мостах вводавывода. Каждый x8 порт PCIE может быть сконфигурирован как два x4 порта. Для двухпроцессорных систем хорошей комбинацией является 4–8 внутренних SCSIдисков на двух встроенных SCSIканалах и два двухканальных RAIDконтроллера всего для 2 внутренних и 4 внешних SCSIканалов.
На рис. 4 показана 4процессорная система на базе чипсета Intel E8500. У него две независимых процессорных шины, каждая из которых поддерживает два гнезда для процессоров, всего — четыре гнезда. Есть также четыре независимых интерфейса памяти (independent memory interface, IMI), подсоединенных к северному мосту. Каждый канал IMI может быть расширен с помощью внешнего моста памяти (external memory bridge, XMB) до двух каналов памяти DDRII. В подсистеме вводавывода присутствуют три x8 порта PCIE, один x4 порт и интерфейс HI для более старых устройств вводавывода. Как и в случае с другими чипсетами, каждый x8 порт может быть сконфигурирован как два x4 порта. Один x8 порт соединен с двумя шинами PCIX, со встроенными SCSI и GE. Другой x8 порт оставлен как есть, третий — сконфигурирован как порты x4 для конфигурации с одним x8 и тремя x4 слотами PCIE.
Дисковая конфигурация включает 4–8 внутренних дисков на двух встроенных каналах SCSI и 4 двухканальных RAIDконтроллера по одному на каждый из доступных слотов PCIE. Всего получается 10 SCSIканалов, 8 из которых соединены с 4 внешними двухканальными дисковыми модулями. Основная задача данной конфигурации — достигнуть последовательной полосы пропускания дисковой подсистемы более 3 Гб/сек. Неясно, действительно ли E8500 может поддерживать такую полосу пропускания, но, по крайней мере, 1,5 Гб/сек — проверенный результат.
В любом случае оба чипсета E7520 и E8500 имеют весьма внушительные возможности в области полосы пропускания вводавывода. В них огорчает только то, что до сих пор применяется интерфейс HI для старых устройств, учитывая, что в чипсетах для настольных систем используется существенно улучшенный интерфейс DMI. Возможно, Intel не хотела рисковать, задерживая выпуск чипсетов E7520 и E8500 изза не очень значительной новой технологии, но в следующем чипсете этот недостаток будет исправлен.
Тестирование чипсета AMD Opteron показало, что он в состоянии поддерживать пропускную способность дисковой системы на уровне 2,4 Гб/сек (об этом сообщили в Microsoft Research).
Память
Технически правильная оценка требований к памяти должна учитывать противоречие между нагрузкой на диски и объемом памяти, чтобы определить наилучшие характеристики в плане цены и производительности. Стоимость технической оценки, вероятно, превысит стоимость памяти почти всегда, кроме очень больших систем. В большинстве случаев разумная конфигурация памяти может быть определена на базе информации о типе операционной системы, версии SQL Server и количестве гнезд DIMM в системе. В табл. 6 представлено наиболее вероятное количество гнезд DIMM в зависимости от типа системы.
В табл. 7 приведены цены на ECC Registered модули памяти DDR2 PC23200 от Crucial (www.crucial.com) на март 2006 г.
В каждый заданный момент времени DIMM, выпускаемые в больших объемах, обладают, в сущности, линейной зависимостью между стоимостью и объемом. DIMM большого объема, выходящие малыми тиражами, обычно имеют гораздо более высокую стоимость в пересчете на 1 Гб. Примерно каждые два года модули DIMM класса highend удваиваются в объеме. До недавнего времени стоимость модуля ECC DIMM на 2 Гб была более чем в четыре раза выше, чем модуля ECC DIMM на 1 Гб, то есть в два раза выше в пересчете на 1 Гб. Только недавно появились новые модули DIMM SKU объемом 2 Гб по значительно более привлекательной цене относительно модулей объемом 1 Гб. Цена оригинальных модулей DIMM объемом 2 Гб осталась такой же неблагоприятной. Скорее всего, потребуется еще два года для того, чтобы цена на модули ECC DIMM объемом 4 Гб стала сопоставима с ценой модулей объемом 2 Гб.
В большинстве случаев будет проще заполнить систему промышленными модулями DIMM максимального объема, на данный момент 1 или 2 Гб, чем проводить детальный анализ, кроме случаев, когда имеются ограничения со стороны ОС или версии SQL Server. Если известно, что дисковый вводвывод чувствителен к объему памяти и стоимость системы хранения данных высока, стоит использовать модули DIMM большого объема.
Система хранения данных
Самая серьезная и частая ошибка по отношению к системе хранения данных заключается в том, что во внимание принимается только объем как основное требование. Производители систем хранения должны быть осведомлены лучше, но и они склонны допускать эту оплошность. Систему хранения данных нужно проектировать с учетом как объема, так и производительности, которая определяется в терминах произвольного вводавывода и последовательной полосы пропускания при передаче данных. Сегодня объем отдельных дисковых накопителей таков, что для удовлетворения требований к производительности системы хранения он оказывается не относящимся к делу показателем.
В большинстве случаев следует покупать диски 10K или 15K наименьшего (в разумных пределах) объема. Разумно выбрать диски 10K на 73 Гб и диски 15K на 36 Гб. И те и другие обычно стоят по $200 за диск. Цены у производителей готовых систем могут быть на 50% выше. Цена за диск в системе SAN может превышать $2000. Когда стоимость следующих по объему дисков (146 Гб 10K и 73 Гб 15K) отличается не больше чем на 30%, они становятся дисками наименьшего разумного объема. Причина, по которой не стоит ждать равенства цен, в том, что диск большего объема может быть настроен для лучшей производительности произвольного вводавывода данных фиксированного размера. В терминах стоимости операции вводавывода диски 10K и 15K являются сравнимыми. Конфигурация системы хранения с дисками 10K будет иметь больший объем, а с дисками 15K — меньшую задержку при выполнении произвольных операций вводавывода.
Как уже упоминалось в предыдущем разделе, технически правильная оценка производительности системы хранения данных должна учитывать противоречие между объемом памяти и производительностью дисковой системы. Если вам не известны реальные характеристики приложений и их требования, можете воспользоваться следующими данными как минимальной исходной конфигурацией. Большинство транзакционных баз данных выполняют как транзакции, так и определенное количество операций по созданию отчетов, даже если применяется репликация для перемещения большого количества отчетов в реплицируемую базу данных.
Запросы при создании отчетов часто приводят к сканированию крупных таблиц или диапазонов индексов переменного размера с вовлечением большого числа строк. Если эти операции требуют обращения к данным на диске, система хранения будет полностью загружена, что приведет к невозможности обработки транзакций в системе. Одна из причин — в том, что запрос при создании отчета может вызвать большое количество упреждающих чтений с диска, изза чего удлинится очередь в дисковой системе. Нормальные транзакции могут вызвать лишь небольшое число чтений с диска, вероятно, без упреждающих чтений. Поэтому, даже если заданный приоритет транзакции выше, чем приоритет отчета, в действительности приоритеты в системе хранения данных спроектированы в пользу запросов вводавывода для создания отчетов. Чтения с диска, вызванные транзакциями, окажутся в конце длинной очереди, образованной чтениями, вызванными построением отчетов.
Оказывается, SQL Server 2000 имеет ограниченные возможности чтения с диска при выполнении операций сканирования таблиц. Без дополнительных настроек (hints) операция сканирования таблицы в SQL Server 2000 в большинстве систем способна создать нагрузку 300–400 Мб/сек в терминах чтений с диска. При использовании настройки NOLOCK сканирование таблицы может сгенерировать 700–800 Мб/сек дискового трафика. Если сконфигурированная система хранения имеет меньшую последовательную пропускную способность, сканирование таблицы может привести к перегрузке дисковой системы и вызвать основательное падение производительности дискового вводавывода, вызванного транзакциями. Если система хранения данных способна обрабатывать и последовательное сканирование таблиц, и произвольный транзакционный вводвывод, тогда, скорее всего, производительность транзакций не снизится в зависимости от производительности процессора и других ресурсов.
В SQL Server 2005 нет таких ограничений на последовательные дисковые операции. Операция сканирования таблицы в SQL Server 2005 на HP Superdome с десятками двухканальных U320 SCSI RAIDконтроллеров и 3–5 дисками на каждом канале может вызвать более чем 12 Гб/сек дискового трафика. Поэтому невозможно или непрактично конфигурировать систему хранения, превышающую показатели сканирования таблиц в SQL Server 2005. Положительный момент в том, что можно завершить запрос при построении отчета, который выполняется гораздо быстрее, и, таким образом, минимизировав время, на которое прерываются транзакции. Нечастые прерывания по 2–3 секунды будут почти незаметны. Это должно предостеречь вас от установки произвольных значений в договоре на уровня обслуживания (Service Level Agreements) на время отклика без всестороннего и детального понимания характеристик производительности базы данных и системы в целом, особенно если пользователь не ощущает значительных изменений. Всегда лучше задать высокий процент откликов в разумное время и разрешить низкий процент с более длительным интервалом, если только реальные и непоколебимые требования не диктуют подругому.
Цели, к которым нужно стремиться в области производительности системы хранения данных, следующие. Последовательная полоса пропускания для файлов данных основной базы данных SQL Server должна быть не менее 400–800 Мб/сек в зависимости от требований. Рекомендованная для этих целей конфигурация приведена для систем хранения на базе SCSI, SAS и FC.
Хранилище, подсоединенное напрямую, на базе технологии U320 SCSI
• 2–8 дисков во внутренних системных отсеках на встроенном контроллере SCSI.
• 1–4 внешних дисковых модулей (14–15 отсеков) с двухканальным SCSI.
• 4–7 дисков на каждом канале внешнего модуля хранения, всего 8–14 дисков на модуль.
• 1 PCIX или PCIExpress двухканальный RAIDконтроллер на модуль хранения.
Целесообразность использования внутренних дисковых отсеков в том, что они уже оплачены вместе со встроенным контроллером. Отдельно купленный диск обойдется дешевле по сравнению с полной стоимостью внешнего хранилища, которая включает стоимость диска, внешнего модуля и контроллера. Даже в кластерной среде, где ресурсы кластеров должны быть общими, никогда не помешает обеспечить дополнительную полосу пропускания для неразделяемого ресурса.
Разумно использовать внешнее хранилище по следующим причинам. Каждый канал U320 SCSI с номинальной полосой пропускания 320 Мб/сек может в действительности поддерживать примерно 240–260 Мб/сек при последовательном перемещении больших блоков на диске. Чтобы полностью загрузить один канал U320, понадобятся 3 диска текущего поколения. При этом не всегда возможно использовать самую быструю часть каждого диска или добиться полностью последовательного перемещения. Внешние модули также имеют минимум по 7 отсеков на канал. Поэтому по всем этим причинам практичным будет использовать на одном SCSIканале от 4 до 7 дисков. Внешние модули хранения 3U SCSI доступны с одним или двумя каналами SCSI. Конфигурирование более 7 дисков на одном канале — пустая трата последовательной полосы пропускания, поэтому избегайте использования модулей с одним каналом, если только вам не требуется очень большое число дисков, поскольку при конфигурировании более 7 дисков на одном канале пропускная способность будет превышена. Устаревшие технологии продолжают встречаться в продуктах для хранения данных, поэтому избегайте модулей U160.
На рис. 5 представлены характеристики последовательного дискового чтения и записи для 15K SCSIдиска объемом 36 Гб текущего поколения. Начальная часть 15K диска может перемещать данные со скоростью более 90 Мб/сек. Производительность внутренней части все еще превышает 50 Мб/сек. Размещение данных может повлиять на производительность. Как правило, распространено размещение в начале диска данных, наиболее критичных к производительности, в середине — менее критичных, а в конце — резервных копий и вспомогательного хранилища.
Выбирая RAIDконтроллер, следует рассмотреть двух или четырехканальные контроллеры. 64разрядная шина PCIX с частотой 133 МГц имеет номинальную полосу пропускания 1 Гб/сек, что может показаться достаточным для четырех каналов U320, способных поддерживать примерную скорость 250 Мб/сек каждый. Тем не менее пока неочевидно, что любой из имеющихся в наличии четырехканальных контроллеров PCIX SCSI действительно может поддерживать более 500–600 Мб/сек. Поэтому лучше всего выбрать двухканальную модель, если только вам не требуется очень большое число дисков, когда пропускная способность двухканальных контроллеров будет превышена.
Fiber Channel/хранилище SAN
Fiber Channel был спроектирован для рынка устройств в целях хранения данных класса highend. По некоторым причинам производители FC/SAN не спешили повышать пропускную способность FC с 2 до 4 Гбит/сек. Между тем U320 SCSI постепенно вытесняется 3 Гб/сек SAS, и даже оригинальный интерфейс SATA 1,5 Гбит/сек заменяется улучшенной версией 3 Гбит/сек. Можно поспорить, что FC на 4 Гбит/сек, который наконецто выходит после долгой паузы со времени выпуска версии на 2 Гбит/сек, теперь быстрее, чем SAS и SATA. Однако интерфейсы SAS и SATA 3 Гбит/сек позволяют подключать от 1 до 4 дисков, тогда как системы SAN созданы для подключения 14–28 дисков по единственной линии связи 2–4 Гбит/сек, серьезно ограничивая последовательную пропускную способность.
Другая проблема с SANсистемами среднего уровня в том, что большинство из них строится на базе компонентов давно существующих серверных систем, таких как процессор Xeon с чипсетом ServerWorks GCLE или RISCпроцессоры с чипсетами, имеющими еще более низкую производительность. В то время ни один из существовавших чипсетов не мог предоставить хорошую полосу пропускания вводавывода, как это в состоянии сделать большинство чипсетов сегодняшнего дня. Поэтому SANсистемы среднего уровня в 2003–2005 гг. не были особенно практичным решением для достижения высокой последовательной полосы пропускания по разумной цене по сравнению с хранилищами, подсоединенными напрямую.
• Предпочтительно использовать Fiber Channel на 4 Гбит/сек, а не 2 Гбит/сек FC.
• Следует применять двухканальные контроллеры с 2 Гбит/сек FC на PCIX и 4 Гбит/сек FC на PCIX 2.0 или PCIExpress.
• Необходимо использовать 1–2 FCпорта на 14дисковый внешний модуль хранения.
Например, в линейке EMC Clarion CX 700 поддерживает 8 портов FC к хостам и 8 портов к хранилищу. Конфигурирование 8 стоек по 14 дисков на 8 портах FC от хранилища к SAN и к хосту должно практически обеспечить максимальную поддерживаемую CX 700 скорость передачи в 1,3 Гб/сек. Для линейки HP EVA соответствующие контроллеры системы хранения — HSV110/210, которые имеют 2 порта к хостам и 4 к хранилищу. Каждая стойка из 14 дисков, подключенная к единственному контроллеру HSV, может предоставить последовательную полосу пропускания 300 Мб/сек, но для высокой пропускной способности на запись требуется больше дисков. С точки зрения общей производительности и практичности, 2 стойки дисков на HSVконтроллер обеспечат лучший баланс, чем 1 стойка на HSVконтроллер.
Serial Attached SCSI (SAS)
Рекомендованная конфигурация для дисков на основе новой технологии SAS пока неясна. Из всех крупных производителей только HP в настоящий момент предлагает SAS с внешним модулем хранения, 10 SFFдисков в одном модуле 1U. SAS RAIDконтроллер имеет 8 портов на 3 Гбит/сек. Для современных дисков, вероятно, будет разумным использовать 2–3 диска на порт, если будет подтверждено, что единственный адаптер сможет обслуживать комбинированную последовательную пропускную способность 12–18 дисков. В противном случае рассчитывайте на 1–2 диска на порт. Два 6портовых адаптера, 2 модуля хранения 1U и внутренние отсеки должны соответствовать базовому уровню производительности системы хранения данных SQL Server 2000. При конфигурации более высокой последовательной скорости передачи протестируйте полосу пропускания, возможную в каждой конфигурации, чтобы подобрать лучшее сочетание контроллера и диска.
Контроллеры и диски SATA
Многие сегодня интересуются контроллерами и дисками SATA, особенно теперь, когда ими наконец поддерживается технология NCQ (native command queuing). Низкая цена и высокий объем SATAдисков особенно привлекает. Основной проблемой является то, что большинство SATAдисков имеет скорость 7200 об./мин и нацелено на рынок настольных систем. Проектируемая продолжительность жизни диска в настольной системе — 12 года при нагрузке в 20%, в то время как большинство серверных дисков спроектировано для работы со 100%ной нагрузкой в течение 5 лет. В основном по этой причине SATAдиски должны применяться в первую очередь в средах разработки, возможно, некоторых средах хранилищ данных и потенциально для хранения резервных копий, пока мы не узнаем больше об их надежности. Диски SATA на данный момент не следует использовать в рабочих средах обработки транзакций.
Выводы
Итак, 64разрядная версия Windows Server 2003 обладает расширенными возможностями по использованию памяти даже в версии Standard Edition. В версии SQL Server 2005 Standard ограничения к памяти были сняты. 64разрядная версия имеет полный доступ к огромному адресному пространству, в то время как 32разрядная должна использовать сочетание PAE/AWE. Двухъядерные процессоры в большинстве случаев предпочтительнее процессоров с одним ядром благодаря более благоприятным условиям лицензирования. Конфигурация системы хранения данных должна учитывать производительность случайного и последовательного вводавывода как основной фактор. Это значит, что для системы будет практичным распределить нагрузку между возможно большим числом дисков и каналов вводавывода. Как всегда, протестируйте реальные характеристики производительности в окончательной конфигурации.
1 Имеется ввиду 15 тыс. оборотов в минуту. — Прим. ред.
Табл. 1
Количество гнезд для процессоров |
Одно |
Два |
Четыре |
Чипсет |
E7230 |
E7520 |
E8500 |
Количество двухъядерных процессоров |
1 |
2 |
4 |
Количество гнезд для памяти |
4 |
6–8 |
16–32 |
Поддерживаемая конфигурация PCIExpress |
1´8, 1´4 |
3´8 |
3´8, 1´4 |
Встроенные контроллеры; |
SATA |
SCSI |
SCSI |
Каналы SCSI |
Внутр. SATA |
2 внутренних |
2 внутренних |
Внешние модули хранения данных |
1 |
2 |
4 |
Дисковые накопители — внутренние и внешние |
2–4 |
4–6 |
4–8 |
Последовательная полоса пропускания |
Не менее 600 Мб/сек |
Не менее 1,2 Гб/сек |
Не менее 2 Гб/сек |
* Один слот x8 может быть сконфигурирован как два слота x4 или преобразован в 2 шины PCIX.
Табл. 2
Поддержка процессоров и памяти Windows Server 2003 R2 в зависимости от версии |
Standard Ed. 32bit / 64bit |
Enterprise Ed. 32bit / 64bit |
Datacenter Ed. |
Максимальное число процессоров (гнезд) |
4 / 4 |
8 / 8 |
32 / 64 |
Максимальный объем памяти |
4 Гб / 32 Гб |
64 Гб / 1 Тб |
64 Гб / 1 Тб |
Табл. 3
Поддержка процессоров и памяти SQL Server 2000 в зависимости от версии |
Standard Ed. |
Enterprise Ed. |
Максимальное число процессоров (гнезд) |
4 |
Не ограничено |
Максимальный объем памяти |
2 Гб |
64 Гб / 512 Гб |
Табл. 4
Поддержка процессоров и памяти SQL Server 2005 в зависимости от версии |
Workgroup |
Standard Ed. |
Enterprise Ed. |
Максимальное число процессоров (гнезд) |
2 |
4 |
Не ограничено |
Максимальный объем памяти |
3 Гб |
Максимальный, поддерживаемый ОС |
Максимальный, поддерживаемый ОС |
Табл. 5
Процессор |
Количество гнезд |
Комментарии |
AMD Opteron |
1–4 |
Для любых целей, лучшие характеристики в среднем |
Intel Pentium D |
1 |
Начальный уровень |
Intel Core Duo |
1 |
Начальный уровень, низкое энергопотребление, только 32разрядная версия |
Intel Xeon |
2 |
Средний уровень, прекрасная производительность при сканировании таблиц, для приложений, активно использующих сеть, предпочтительно наличие технологии Hyperthreading |
Intel Xeon MP |
4–32 |
То же |
Itanium |
2–64 |
Класс highend, отлично подходит для полностью 64разрядной масштабируемой среды. Двухъядерная версия выйдет в середине 2006 г. |
Табл. 6
Процессор |
Чипсет |
Количество гнезд для процессоров |
Количество гнезд DIMM |
Максимальных объем памяти |
Opteron |
8000 |
2 |
8 |
16–32 Гб |
Opteron |
|
4 |
32 |
32–128 Гб |
Pentium D |
E7230 |
1 |
4 |
8 Гб |
Xeon |
E7520 |
2 |
6–8 |
12–16 Гб |
Xeon MP |
E8500/8501 |
4 |
16–32 |
32–64 Гб |
Табл. 7
Объем |
Цена (март 2006 г.) |
512 Мб |
$100 |
1 Гб |
$190 |
2 Гб |
$1000/550 |
Новые конечные точки HTTP создают Web-службы SQL Server 2005. Часть 2*
Питер Дибетта (Peter DeBetta)
Клиент, применяющий Web-службу
Применение Webслужбы, созданной в SQL Server 2005 в качестве конечной точки HTTP аналогично применению Webслужбы, созданной на C#. Это достоинство Webслужб и SOAP. Начните новое приложение Windows и Visual Studio.NET и добавьте в форму следующие элементы управления (ТипЭлемента: имя):
• Button: btnExecSP;
• DataGridView: dgvProduct;
• ListBox: lstProducts;
• PictureBox: picProduct.
Вам понадобится добавить ссылку на Web до написания кода. Для этого можно перейти по адресу http://server/awproducts?wsdl. Помните, что объект, на который ссылаются в сети, называется server_AWProducts (имя моего компьютера win2k301, так что в обозревателе я увижу http://win2k301/awproducts?wsdl, а ссылочным объектом служит win2k301_AWProducts). Следует поправить код, чтобы он соответствовал созданному вами имени.
XML в SQL Server 2000 и SQLXML. Часть 2*
Даршан Сингх (Darshan Singh)
В первой части статьи рассказывалось, как применять FOR XML для преобразования реляционного набора строк в XML. Функция OPENXML имеет прямо противоположное назначение и может использоваться для преобразования XML в реляционный набор строк. Например, она пригодится в том случае, если у вас есть XML и вы хотите получить представление в виде набора строк поверх него, которое вы могли бы применять для изменения реляционных табличных данных.
Процесс применения OPENXML состоит из трех шагов.
Воспользуйтесь sp_xml_preparedocument, чтобы загрузить XMLдокумент и создать его представление в памяти. Эта хранимая процедура возвращает описатель (handle), который можно задействовать только в рамках данного подключения. Если ваш XMLдокумент содержит пространства имен (по умолчанию или с именемпрефиксом), нужно указать их данной хранимой процедуре.
Вызовите OPENXML, передав ей описатель документа (полученный на предыдущем шаге), выражение XPath и другие параметры, сообщающие ядру базы данных, как нужно сопоставлять элементы/атрибуты со столбцами.
Когда вы закончили работу и вам больше не нужен XMLдокумент в памяти, вызовите sp_xml_removedocument.
Быстрая обработка текстов в SQL Server
Алекс Козак (Alex Kozak)
Обработка текстов или длинных строк обычно превращает SQL в обычный процедурный язык. Изучите несколько методик, позволяющих облегчить и ускорить этот процесс. Обработка текстов или длинных строк в SQL никогда не была простой задачей. Язык SQL — мощное средство для быстрой обработки наборов данных, но здесь его возможности находятся на уровне прозаичного процедурного языка. В этой статье рассказывается о нескольких методиках, которые позволяют облегчить быструю обработку текста в SQL. Хотя это демонстрируется на примере SQL Server, вы можете применять основные идеи и в других СУБД — с небольшими корректировками. Кроме того, никакие средства третьих фирм, расширенные хранимые процедуры, пользовательские функции или объекты, написанные на других языках программирования, не используются — только SQL (или TransactSQL).
С помощью этих методик вы сможете без применения циклов:
• определить количество слов в тексте;
• определить длину и позицию любого слова в тексте;
• определить число повторений символа (маски символов) и их позиции в тексте;
• определить частоту использования любого отдельного слова или символа в тексте;
• устранить дубликаты символов;
• устранить лишние пробелы между словами или строками текста;
• преобразовать текст согласно заданному формату (например, задать длину строк в тексте или применить более сложное форматирование).