Назад | Перейти на главную страницу

Производительность SQL Server Express Edition

У нашей компании есть несколько сред SQL Server, некоторые из них работают с MS-SQL Server 2005 Express Edition, другие - с Standard или Enterprise Edition.

В ходе сегодняшней дискуссии администратор баз данных сказал, что MSSQL Express Ed. будет менее производительным, чем Standard Edition.

Я знаю, что существуют следующие ограничения: Сервер использует только 1 ГБ памяти. Сервер использует только 1 ЦП.

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

Одно исправление к предыдущим ответам - SQL Server Express поддерживает только один сокет ЦП, но если сокет имеет несколько ядер, Express будет использовать их, и вы получите параллелизм. Малоизвестный факт ...

Нет никаких «искусственных» ограничений на стандартные запросы - например, «select * from tableFoo» не будет работать медленнее, за исключением очевидных случаев, когда более 1 ядра ЦП было бы полезно.

Есть некоторые другие отсутствующие функции, которые в определенных случаях повышают производительность, например, индексированные представления, полнотекстовое индексирование и т. Д.

Как и большинство вопросов, это действительно зависит от конкретного приложения (приложений). Если ваше приложение использует какие-либо функции, отсутствующие в Express Edition (см. Таблицу сравнения Microsoft: http://www.microsoft.com/sqlserver/2005/en/us/compare-features.aspx ) тогда да пострадает производительность. Если нет, то нет.

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

SQL Server Express не будет работать медленнее, чем другие выпуски, за исключением того факта, что он поддерживает только 1 ЦП и 1 Гб оперативной памяти.

SQL Server 2000 MSDE поддерживал только 5 одновременных выполняемых операторов, и все остальное должно было ждать, пока не появится свободный слот, но это было удалено в выпуске SQL 2005 Express.

Одна из проблем с SQL Express заключается в том, что он отключается после ~ 15 минут простоя и освобождает кеш. Это вызовет задержку, когда пользователи снова начнут нажимать на нее. В зависимости от вашей модели использования это может быть проблемой. Подробности читайте здесь: http://blogs.msdn.com/sqlexpress/archive/2008/02/22/sql-express-behaviors-idle-time-resources-usage-auto-close-and-user-instances.aspx

Основное ограничение, кроме использования ЦП и ОЗУ, которое вы уже определили, заключается в том, что общий размер любых файлов данных базы данных не может быть больше 4 Гб. Общая сумма для БД может быть больше, поскольку файлы журнала транзакций не учитываются при 4 Гб.

В MSDE2000 (эквивалент SQL 200 Express Edition) ограничение на размер составляло 2 ГБ.

  1. переиндексировать
  2. обрезать
  3. сокращаться

для переиндексации

USE {DB NAME}

DECLARE @TableName varchar(255)

DECLARE TableCursor CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_type = 'base table'

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN 
if @tablename='DUAL' or @tablename='IMPORT_CONTROL_TRN'
    begin
    print 'skipping ' +@tablename
    FETCH NEXT FROM TableCursor INTO @TableName
    continue
    end
else
    begin
    if @TableName='calltrak'
      begin
      print 'reindexing calltrak'
      DBCC DBREINDEX(@TableName,' ',50)
    end
    else
    begin
      print 're-indexing ' + @TableName
      DBCC DBREINDEX(@TableName,' ',70)
    end
    end
FETCH NEXT FROM TableCursor INTO @TableName
END

CLOSE TableCursor

DEALLOCATE TableCursor
exec sp_updatestats