SQL Server Express для производственных баз данных?

14

Мы собираемся развернуть двойное веб / внутреннее транзакционное приложение, где каждый клиент имеет свою собственную базу данных. Каждая база данных очень мала - менее 50 МБ каждая, поэтому нам было интересно, имеет ли смысл использовать SQL Express 2008 вместо полноценного SQL Server.

Похоже, что в этом есть преимущества распределения дискового ввода-вывода по серверам при сохранении огромных $$$ (поскольку небольшие диски по 15 КБ и используемые двухъядерные серверы стоят недорого). Если в какой-то момент нам понадобится слишком много серверов, мы можем перейти на SQL Server ... но с десятками внутренних пользователей это просто кажется слишком дорогим сейчас (особенно потому, что нам нужен блок аварийного переключения).

1 ГБ памяти и использование 4 ядер на одном процессоре не звучат слишком жестко, учитывая размеры наших небольших баз данных. У нас никогда не будет более ~ 200 одновременно работающих пользователей, и большинство операций будут более транзакционными (что, похоже, предпочтительнее для большого количества высокоскоростных дисков, чем для большой оперативной памяти / процессора, верно?)

Я упускаю какие-либо преимущества SQL Server Standard, которые изначально могли бы оправдать дополнительные вложения в 5–20 тысяч долларов?

Beep Beep
источник

Ответы:

17

В других выпусках SQL Server вы получаете такие вещи, как агент SQL, поэтому вы можете планировать обслуживание базы данных и другие задания.

Пока ваша база данных может соответствовать ограничениям Express Edition, все будет в порядке.

SQL-сервер любит много оперативной памяти. Чем больше, тем лучше. Поскольку SQL Server не может загружать данные в кэш, это создает дополнительную нагрузку на диски. Вам следует взглянуть на версию SQL Server для веб-версии или рабочей станции. Эти издания имеют более высокие лимиты, чем Express Edition, но стоят меньше, чем Standard Edition.

Если вы начнете с Express Edition, вы всегда сможете обновить ее до Standard Edition после приобретения лицензии.

mrdenny
источник
+1 не может добавить ничего к этому ответу
Ник Кавадиас
Я не думаю, что рабочую группу и веб-версию лицензии можно использовать для внешних размещенных бизнес-приложений.
Акаш Кава
1
Лицензии на ЦП доступны для всех редакций (кроме Express, для которой не требуется лицензия на ЦП), что означает, что вы можете использовать ее для общедоступного веб-сайта. Вот ссылка на лицензию ЦП рабочей группы bit.ly/KDLDR . Я не мог легко найти Web Edition, но любой VAR мог бы предоставить его, не оглядываясь по сторонам.
Мрденни
Я также предлагаю начать с чего-то выше Express, и переход от экспресса к любому другому изданию иногда может быть трудным.
DanBig
3
SQL Express - это тот же движок, что и другие редакции, только с ограничениями по размеру. Переход от Express к другому изданию - это просто вопрос отсоединения базы данных от Express Edition и присоединения ее к другому экземпляру, на котором выполняется другое издание.
Мрденный
15

Несколько производственных проблем и обходных путей, которые у меня были с выпуском Express:

Запланированные резервные копии

SSIS

  • SQL Express 2008 имеет Мастер импорта / экспорта данных, но среда выполнения dtsexec Express Edition не будет запускать все пакеты служб SSIS.
  • Обходной путь: вы можете разрабатывать пакеты служб SSIS с версией для разработчиков. Если у вас есть одна стандартная версия в сети, вы можете планировать и запускать пакеты SSIS из нее. Вы даже можете запускать пакеты служб SSIS из редакции разработчика, если это не противоречит лицензии
  • См. Также:
    Можно ли запускать пакеты служб SSIS с SQL Server 2008 Express / Web или SSIS рабочей группы
    с Sql Server 2005 express

Профилирование

Mika
источник
2
  1. Если вы читаете лицензию SQL Server, вам не нужно покупать дополнительную лицензию для пассивного сервера, если он используется исключительно для восстановления после отказа и не обслуживает запросы до тех пор, пока не произойдет сбой вашего первого сервера.

  2. Мы использовали SQL Server Express довольно долго, и он хорош и намного лучше, чем предыдущий MSDE, у нас более 200 одновременных соединений, но у нас есть только одна база данных размером 2 ГБ, и все гладко. У нас никогда не было проблем при условии, что мы избегаем дорогих объединений и делаем хорошую индексацию. Сейчас мы используем стандарт SQL, но пока размер вашей базы данных не превышает 4 ГБ, а количество пользователей не превышает 200-500, вы, безусловно, можете жить с SQL Express.

  3. SQL Server Express использует чуть меньше памяти - ~ 200 МБ, тогда как в стандартной версии - ~ 1,5 ГБ, возможно, потому что стандартная версия будет выполнять много операций кэширования. Ваши запросы будут медленнее в Express в течение нескольких миллисекунд по сравнению со стандартной версией. К сожалению, Express Edition не использует многоядерный процессор (это ограниченная функция), поэтому он не очень поможет, если у вас есть 2 или 4 ядра.

Акаш Кава
источник
Я думал SSE 2008 использовал многоядерные (до 4)?
звуковой сигнал
@LuckyLindy Standard будет использовать до 4 сокетов, с большим количеством ядер на каждый сокет.
Мрденни
«но пока размер вашей базы данных не превышает 4 ГБ» 4 ГБ - это ограничение на один экземпляр. Я не могу вспомнить, что есть ограничение на количество используемых экземпляров
Геннадий Ванин Геннадий Ванин
2

LuckyLindy - я бы посоветовал вам остановиться на секунду и убедиться, что вам не нужен агент SQL. Вы написали:

Мы собираемся развернуть двойное веб / внутреннее транзакционное приложение, где каждый клиент имеет свою собственную базу данных. Каждая база данных очень мала - менее 50 МБ каждая, поэтому нам было интересно, имеет ли смысл использовать SQL Express 2008 вместо полноценного SQL Server.

Какой у вас план по резервному копированию? Вам не нужно использовать агент SQL, но он, несомненно, облегчает жизнь администратора БД. Вы можете написать сценарии T-SQL / SMO / PowerShell / любой другой, которые выполняют резервное копирование, а затем выполняются через sqlcmd или PowerShell с помощью запланированной задачи.

Каков ваш план обслуживания базы данных? Со временем эти базы данных необходимо будет дефрагментировать и проверить на согласованность. В Standard Edition есть все возможности, чтобы упростить эту задачу, тогда как в Express вам придется работать (опять же со сценариями и запланированными задачами).

Как вы будете уведомлены о проблемах на сервере? Агент помогает здесь с оповещениями, чтобы уведомить вас о заполнении журнала, заполнении диска и т. Д.


Это критически важные задачи типа SQL Server DBA. Одно дело запустить Express для внутреннего приложения, но как только вы начинаете говорить нам, что вы размещаете их для клиентов, я начинаю волноваться :)


Вторая часть этого вопроса спрашивает вас, сколько клиентов вы планируете поддержать в этом - как при запуске, так и через год? Если вы скажете «100 клиентов», то в Express не хватит 100 баз данных по 50 МБ - вам просто не хватит памяти. Черт возьми - в зависимости от того, сколько у вас дельты, вы можете увеличить до 15 БД, я не знаю.

У нас никогда не будет более ~ 200 одновременно работающих пользователей, и большинство операций будут более транзакционными (что, похоже, предпочтительнее для большого количества высокоскоростных дисков, чем для большой оперативной памяти / процессора, верно?)

Транзакционные операции, такие как INSERT, по-прежнему записываются в память, поэтому не ожидайте, что вам потребуется меньше поддержки памяти. Фактически, в зависимости от того, сколько INSERT вы делаете, вам может потребоваться больше памяти, чем большинству с таким количеством пользователей. Если вы загружаете много данных, которые люди на самом деле не используют, они все равно занимают память. Вы можете столкнуться с конфликтными проблемами между «данными, которые пользователи часто запрашивают» и «данными, которые пользователи загружают, которые никто не будет запрашивать некоторое время». SQL защищает нас, сохраняя данные, которые люди чаще запрашивают в памяти, но у вас все равно будет конфликт.

На данный момент, я бессвязный LOL. И 200 одновременно работающих пользователей не согласны со мной и для Express. Допустим, 64 КБ - это среднее требование к памяти подключений. Сколько подключений будут устанавливать ваши приложения? Будете ли вы использовать пул соединений?

В общем, мое внутреннее чувство после прочтения вашего описания говорит: «Нет - Express Edition просто недостаточно мощен». И я ненавижу издание Workgroup Edition - думаю, что это плохая сделка - поэтому Standard кажется мне правильным.

Скотт Вигхам
источник
2
Скотт - Отличный ответ. На ваш взгляд ... SQL Server Express фактически не имеет ограничений по размеру хранилища для разных баз данных, вы просто не можете иметь одну базу данных с более чем 4 ГБ данных. В качестве теста я создал 10 000 баз данных по 100 МБ (1 ТБ) на одном сервере, и SQL Server Express работал нормально. Кроме того, память, относящаяся к каждому соединению, не учитывается в общем объеме 1 ГБ. Я согласен, что управление всеми этими базами данных может быть немного трудным, но, поскольку у нас на самом деле будет 1000 баз данных, нам, вероятно, все равно понадобятся сценарии (я не могу вручную коснуться базы данных, если она не станет коррумпированной).
Звуковой сигнал
+1, я согласен, что это был ответ gr8, но я также проголосовал за него
Геннадий Ванин Геннадий Ванин
1

Рассматривали ли вы использование одной из бесплатных СУБД (MySQL, PostreSQL ...)? Это облегчит ваши проблемы с лицензированием?

Если это не вариант, SQL Server Express кажется хорошим решением.

sleske
источник
2
В прошлом году мы фактически провели тесты производительности для всех основных баз данных - MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express и SQL Desktop. Мы обнаружили, что DB2, Oracle и SQL Server (и Express, но не Desktop) взорвали MySQL и PostgreSQL под Windows для наших транзакций - в 2,5 раза производительность означает вдвое больше серверов. При размещении на Linux MySQL и PostgreSQL работали немного лучше, но все же не на должном уровне.
Звуковой сигнал
1

Это, безусловно, может быть использовано для значительных производственных приложений. Мы использовали его в более чем 1500 медицинских учреждениях, в каждом из которых были установлены отдельные экземпляры SQL Server Express для обработки миллионов транзакций каждый день. Вы можете легко обойти недостаток Агента SQL Server, используя одно из следующего:

  1. Сторонний продукт, такой как SQLAutomate
  2. Планировщик заданий Windows
  3. Выпуск SQL Server Standard или Enterprise Edition с возможностью установки основного и первого серверов 1 и 2 очень дешев или бесплатен. 3 стоит дорого, если у вас его уже нет в вашей среде.

Посмотрите отличную презентацию Майкла Оти (google it) на тему «Использование SQL Server Express в производстве».

pacificwinter
источник
Это был 7-летний пост на самом деле :)
BaronSamedi1958