У нашей компании есть несколько сред 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 ГБ.
для переиндексации
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