Книги и статьи по SQL Rambler's Top100 Switch language to: English 29 марта 2024 г. 13:31:05


www.sql-ex.ru
Skip Navigation Links  

 

Print  Версия для печати

На главную страницу

"Развенчиватели" мифов SQL - MSDE/SQL Express имеет ограничение на 5 одновременно подключенных пользователей.

Euan Garden (оригинал: SQL MythBusters – MSDE/SQL Express has a 5 concurrent user limit)
Перевод Моисеенко С.И.

О, человек! Если бы я имел фунт за каждый ответ по этому поводу в новостных группах или конференциях, я бы наверняка ушел в отставку! Утверждение этого мифа не требует никакого другого урока истории, который был бы столь полезен.

MSDE 1.0

Первая версия MSDE была запущена на TechEd в Далласе в 1999. Назначением MSDE в то время было обеспечение замены для JET (широко используемая версия которого осуждалась. У Microsoft имеется 2 механизма jet: тот, который используется и связывается с Access, и второй, используемый Exchange и другими), а также для поддержки бесшовной стратегии для ISV, где мы могли обеспечить единственный программный интерфейс приложений (API) и их хранение, поддерживая перевод настольных приложений на уровень масштаба предприятия (на тот уровень, где имеется возможность присоединить/отсоединить (detach/attach), сделать резервную копию/восстановить (backup/restore) базы данных MSDE к SQL Server Enterprise Edition).

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

Этот регулятор был разработан, чтобы выйти на сцену, когда больше 5-ти операций выполняются на сервере. Что такое операция? Это просто единица работы, что-то вызывающее чтение/запись и т.д. Если операций становилось более пяти, вводился режим ожидания, который эффективно замедлял механизм доступа к данным. (Ниже дана ссылка на намного лучшее объяснение).

В теории MSDE поддерживает то же самое число подключений, что и SQL Server - 32 767. ОДНАКО почти наверняка в этом случае сервер исчерпает память (помните, что есть предел памяти) прежде, чем распределит ее между таким большим числом подключений, и благодаря регулятору они все не смогут быть запущены одновременно. Так сколько можно запустить? Это то же самое, что спросить, какой длины является часть строки. Я слышал о плохо ведущих себя приложениях с одним подключением, попадающих на регулятор, а также о 100 подключенных пользователях. В действительности все это зависит от приложения, и как оно использует сервер. Для хорошо написанного приложения, которое быстро вводит и выводит информацию из базы данных, подходящим числом было бы 10-15 подключений, однако, это значение действительно варьируется.

Я скажу, что не каждый человек в Microsoft ясно сможет это объяснить. Объяснение "5-ти операций" было бы немного сложней для понимания, поэтому многие люди говорили о 5-ти подключениях, поскольку это было легче объяснить. Так начинается миф …

MSDE 2000

В то время как MSDE 1.0 был введен после выхода SQL 7.0, MSDE 2000 был выпущен в то же самое время с некоторыми замечательными новыми/уникальными возможностями.

Мы написали новую установку, которая была основана на MSI (Darwin), а не на установщике Installshield, который мы использовали для других SKU сервера SQL 2000. Это было сделано, прежде всего, по требованию команды офиса, поскольку они поддерживали установку компонент только через базовые технологии MSI/MSM. Это также предоставило более простой способ внедрения MSDE в установку ISV (об этом ниже).

Кроме того, мы реализовали простой способ обнаружения включения регулятора (через DBCC CONCURRENCYVIOLATION), чтобы помочь Вам решить, не пришло ли время обновления до более полного по возможностям SKU. Уникальной особенностью здесь является показ исторических значений, которые берутся из журнала событий и журнала ошибок, что, естественно, дает более реальные значения времени.

Мы также внесли изменения в регулятор, который приводил к еще большей путанице …, Одной из проблем с ограничением на 5 операций в MSDE 1.0 была репликация. Если Вы использовали MSDE, чтобы реплицировать данные на сервер из MSDE, то репликация использовала (приблизительно) 3 операции для собственной поддержки, оставляя только 2 для других приложений. Теперь это вызвало проблемы, и было совсем не тем, что мы подразумевали. Поэтому в MSDE 2000 мы повысили предел операций до 8, обеспечивая первоначальную функциональность, рассчитанную на 5 ПОЛЬЗОВАТЕЛЬСКИХ операций. Но мы оказались перед проблемой, как сообщить об этом. В конце концов, мы решили вообще не упоминать об этом, поскольку мы оставались в рамках наших прежних обещаний, однако техническая корректность отвергла маркетинговые выкрутасы, и разработчик, который реализовал эту возможность, изменил запись в журнал событий и команду DBCC, основанную на числе 8. В результате люди, фактически превышающие порог, продолжали видеть ссылки на 8, а не на 5 и были в недоумении. Это недоумение, накладываемое на путаницу между операциями и подключениями, а также отсутствие нашей документации/формального объяснения привело к увековечиванию мифа. Как побочный эффект, переход на 8, как я подозреваю, обусловил увеличение предела подключений до 15-20 по сравнению с 10-15 для MSDE 1.0.

Несмотря на это, MSDE2000 ДЕЙСТВИТЕЛЬНО летал, и, как я полагаю, частично это было обусловлено возможностью множественности экземпляров и изоляцией, с помощью которой это достигалось. В результате множество народа утвердилось в своей вере, особенно ISV. Скоро мы имели 100 на 1000 приложений, использующих MSDE. Однако был еще один смущающий фактор помимо регулятора. Он был связан с вопросом о том, кто фактически имел право на поставку MSDE и при каких условиях. К сожалению, это оказалось значительно более сложно, чем мы предполагали, и более ограничительно, чем мы надеялись, т.к. условия варьировались в зависимости от того, как вы получили свою копию MSDE (в основном через SQL Server, Office или Visual Studio, соглашения для которых отличались друг от друга).

Итак, мы решили пробовать внести ясность в эти заблуждения относительно MSDE.

1) Мы написали официальное объяснение (White Paper), как работает регулятор, как его использовать и т.д. Вы можете найти здесь этот отчет.

2) Мы изменили права на распространение, позволяющие любому загружать, использовать и распространять MSDE по желанию. Мы лишь требуем, чтобы Вы зарегистрировались у нас, если Вы хотите распространять продукт, но если Вы хотите только использовать его, то для этого не требуется никакой регистрации.

Другая вещь, которую мы изменили отчасти во время существования 2000 MSDE, было то, что мы прекратили поставку как набор MSM, так же как и MSI. Теперь я знаю, что это вызвало проблемы для некоторых людей, но это действительно сделано из лучших побуждений. Причина уже отчасти известна (в той же мере, как объяснение регулятора), однако, вот простое объяснение.

MSI никогда не предназначался для использования множественных экземпляров (фактически, насколько я знаю, нет никакого другого приложения в Microsoft, которое поддерживает то же самое понятие множественности экземпляров, что и мы). И поскольку это должно было стать одной из главных возможностей MSDE 2000, мы должны были найти способ реализации. Механизм весьма сложен, но он проявляется как 16 файлов sqlrunxx.msi, которые существуют для MSDE2000. Каждый из них отображается на экземпляр (SQL Server 2000 имеет ограничение на 16 экземпляров) с уникальным кодом продукта. Теперь, если Вы решили не использовать один из этих MSI для включения/установки с вашим приложением, и вместо этого пойти на использование собственного MSI со встроенными MSM и собственным кодом продукта, то тогда возникала проблема. В соответствии с объяснением, эта проблема решается и обслуживается на уровне проектирования, хотя это действительно не желательно, и может явиться реальной проблемой. Следовательно, мы больше не выпускаем MSM для MSDE и не будем делать этого также для SQL Server Express.

Выпуск SQL Server Express

Когда мы начали смотреть, что сделать для "MSDE" в SQL Server 2005, то изменили наш подход и некоторые из наших фундаментальных предположений. Прежде всего, мы создали постоянную команду, собранную, главным образом, из команды SQL Server Mobile в Редмонде (до настоящего времени MSDE была виртуальной /временной командой). Эта команда сделала всесторонний анализ всего пространства, а также пожеланий наших партнеров по этому пространству, главным образом ISV и Visual Studio.

Одним из первых решений этой группы стало то, что Регулятор должен уйти. Это просто вызывало слишком большие недоразумения, однако, мы должны были найти способ ограничить "MSDE 2005", отсюда появились ограничения на память и процессоры. Мы подняли потолок на размер базы данных с 2 до 4 Гб, поскольку это только отражало, какой объем данных может быть сгенерирован, и было полезно для клиентов.

Позвольте мне повториться для ясности: В SQL SERVER EXPRESS EDITION НЕТ НИКАКОГО РЕГУЛЯТОРА РАБОЧЕЙ НАГРУЗКИ.

Теперь началась часть более сложной работы, сначала это было название, MSDE имел некоторый известный бренд, как хороший, так и плохой. В результате решили порвать с ним, но сделать это можно было разными способами. Решение было принято легкое, т.к. мы знали, что поскольку команда VS работала над своим решением для конечного пользователя, и "MSDE, 2005" должен был стать его ключевым компонентом, то они выбрали название Express, которое оказалось хорошим примером для подражания.

Затем был размер/место на диске, что стало серьезным вызовом. Если Вы еще не обратили внимания, SQL Server 2005 является обширным продуктом, имеется много всего, включая требования к дисковому пространству. Основанными на обследовании пользователей исходными ориентирами для SQL Server Express являлись 35 МБ загрузки. Ну, когда мы строили первую версию, мы имели кое-что шоковое, моя память может подвести, но я, кажется, припоминаю загрузку в 150 МБ и занимающую 400 МБ на диске! Таким образом, посадив SQL Express на диету, во главе с Дейвом Неттлетоном мы искали все, что могло быть вынуто из Экспресса. Мы исследовали оптимизацию, новые алгоритмы сжатия, Вы и сами знаете, как это называется. Это была нелегкая задача, в SQL Server 2000 sqlserv.exe занимает под 9 МБ, а в SQL Server 2005, его наследник превышает 28 МБ. Таким образом, мы должны были быть очень и очень агрессивными, в частности, были удалены SQL Agent и DTS наряду с некоторыми другими аспектами продукта.

Спустя многие месяцы мы подобрались очень близко к нашим целям относительно размера и места на диске, при этом в течение данного времени наши ожидания изменились незначительно. Таким образом, мы почувствовали, что мы преуспели.

Предпоследнее большое изменение было в аспектах GUI. Поскольку MSDE первоначально предназначался в качестве встроенного хранилища ISV, мы не предоставляли графического интерфейса. И вот те на, мы получили много нареканий по этому поводу … В результате мы захотели пересмотреть наше решение и сделать кое-что в области GUI, но опять таки мы смотрели на проблему с точки зрения сокращения, поэтому наши варианты были, в основном, такими:

1. Ориентированный на Web инструмент, который мог бы запускаться локально под Cassini как Web Matrix, и типовой Web инструмент уже сделан.
2. Построить обрезанный вариант Студии Управления (Management Studio).
3. Построить новый инструмент (Express Manager).

Мы остановились на 3 варианте по многим причинам, но 2 ключевых были размером (пожелания пользователей в то время были такими, чтобы загрузка не превышала 5 МБ), и мы могли обеспечить более подходящее решение по сравнению с SSMS, которая очень серьезно сосредоточена на Enterprise-продукте.

В конечном счете, мы предложили CTP XM, который, по большей части, получил хорошие отзывы, но я чувствую, получил выговор. Этот начальный CTP делал все, что мы хотели, чтобы он делал; мы показали новый концептуальный диалог (сравните число опций в диалоге SSMS Create DB с 3-мя у диалога XM Create Database). Мы поменяли приоритеты редактора запросов так, чтобы люди могли сделать "все", используя выпадение скрипта. Однако много людей думало, что это было все, чем XM собирался быть, и, основываясь на этом и других факторах, команда переключилась на план поставки SSMS-E (SQL Server Management Studio - Express Edition).

Сделав все это, только единственная действительно большая часть обратной связи оставалась без адреса, и это был JET, который поддерживал очень простое развертывание - единственный файл, который мог быть расположен где угодно. Это был настоящий вызов, поскольку база данных на основе файла и база данных на основе службы две совершенно РАЗНЫЕ вещи. Однако команда нашла решение в том, что мы называем Пользовательскими экземплярами. Они достойны нескольких блогов сами по себе, поэтому я не буду повторять здесь их содержание.

Все вышеупомянутое привело нас сегодня к SQL Server 2005 RTM, но команда не прекратила слушать и думать об этом. Не упустите Express Advanced Services, которые ожидаются в ближайшие недели, больше приложений для запуска и больше информации об экспрессе.

Хорошо, теперь назад к источнику этого потока сознания …

Заключение: Развенчанный Миф! Но мы (Microsoft) берем вину на себя за недоразумения в этих вопросах.

09/03/2006

На главную страницу

Print  Версия для печати


Использование любых материалов данного сайта возможно только
при условии обязательного размещения прямой ссылки на сайт
http://www.sqlbooks.ru
на каждой странице, где размещены используемые материалы.

 Начало   Статьи    Книги 
Рейтинг@Mail.ru Rambler's Top100 Alt Упражнения по SQL: обучение, тестирование, сертификация по языку SQL Copyright c 2002-2006. All rights reserved.