powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
15 сообщений из 15, страница 1 из 1
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583792
dbyyb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть два сервера.

Слабый:
Dell T30
Xeon E3-1225 v5 @ 3.30GHz, ОЗУ 32Гб
Windows Server 2016 Standart 64-bit
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
SSD 240Гб - система + tempdb
HDD01 4Тб - data
HDD02 4Тб - log

Более мощный:
Dell R910
Xeon E7-8837 @ 2.67GHz, ОЗУ 64Гб
Windows Server 2016 Standart 64-bit
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
RAID PERC-H700, 10 SSD INTEL 200Гб
RAID1 2*200Гб - система
RAID1 2*200Гб - tempdb
RAID0 3*200Гб - data
RAID0 3*200Гб - log
Нулевые рейды пока нет дополнительных дисков, будет RAID10.

Есть запрос, который выполняет SELECT. В результе, T30 выполняет запрос за 00:02:40, а R910 за 00:07:50. Базы одни и те же.

CrystalMarkDisk показывает скорость чтение и записи SSD в RAID1 и SSD в RAID0 на R910 выше в 5-6 раз, чем HDD и SSD на T30.

Никак не могу понять, почему более слабый сервер выполняет запросы быстрее.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583798
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у вас проблема с запросом, то начинать нужно с сиквел сервера, а не с дисков
план запроса сравните
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583799
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbyybДобрый день.

Есть два сервера.

Слабый:
Dell T30
Xeon E3-1225 v5 @ 3.30GHz, ОЗУ 32Гб
Windows Server 2016 Standart 64-bit
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
SSD 240Гб - система + tempdb
HDD01 4Тб - data
HDD02 4Тб - log

Более мощный:
Dell R910
Xeon E7-8837 @ 2.67GHz, ОЗУ 64Гб
Windows Server 2016 Standart 64-bit
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
RAID PERC-H700, 10 SSD INTEL 200Гб
RAID1 2*200Гб - система
RAID1 2*200Гб - tempdb
RAID0 3*200Гб - data
RAID0 3*200Гб - log
Нулевые рейды пока нет дополнительных дисков, будет RAID10.

Есть запрос, который выполняет SELECT. В результе, T30 выполняет запрос за 00:02:40, а R910 за 00:07:50. Базы одни и те же.

CrystalMarkDisk показывает скорость чтение и записи SSD в RAID1 и SSD в RAID0 на R910 выше в 5-6 раз , чем HDD и SSD на T30.

Никак не могу понять, почему более слабый сервер выполняет запросы быстрее.
Верю, что для SSD тесты на новом что-то показали. Не верю в то, что Вы правильно трактовали результаты этих тестов. И не верю, что после проведению их Вы в боевом режиме все так же настроили.

Потому что даже при том, что в старом T40 диск SSD скорее всего имеет характеристики 550MB/s Read / 490MB/s Write (если это не старый 330/330), а в новом диск наверняка Intel S3700 имеет характеристики 500/365. А Вы упираетесь в сортировку внутри tempdb. И чем быстрее запишет SQL данные в tempdb, тем лучше.
Плюс к этому Вы могли или батарейку BBU не вставить в PERC-H700 ну или таки криво его настроить.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583800
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP,

То есть в старом T30, опечатался. Ну или MSSQL на новом делает merge join, а на старом hash join.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583869
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbyybЕсть запрос, который выполняет SELECT. В результе, T30 выполняет запрос за 00:02:40, а R910 за 00:07:50. Базы одни и те же.

CrystalMarkDisk показывает скорость чтение и записи SSD в RAID1 и SSD в RAID0 на R910 выше в 5-6 раз, чем HDD и SSD на T30.

Никак не могу понять, почему более слабый сервер выполняет запросы быстрее.

1. Патаму, что если MS SQL решит прочитать таблицы на новом сервере в 100 раз больше раз (каламбурчик), скорость чтения " выше в 5-6 раз" - тупо не спасет.

2. Спасет обновление статистики.

3. Если обновление статистики не спасет - радикальное средство - написать запрос правильно.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583925
dbyyb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,
оба сервера работают в тестовом режиме. Про трактовку результатов тестов поясните, пожалуйста. Банальная скорость копировать файла 50Гб показывает скорость 300Мб/с на R910 против 85Мб/с на Т30. Или это ничего не значит?


aleks222,
база данных одинаковая на обоих серверах (из одного бэкапа), запрос используется один и тот же. Статистику обновлял.

На Zabbix есть темплейт по MSSQL2012. Сейчас сравнил оба сервера при выполнение запроса. Получил вот какие данные:
Average SQLServer:Access Methods: Workfiles Created/sec {MS SQL 2012:perf_counter["\SQLServer:Access Methods\Workfiles Created/sec",30].last()}>20 поднимается до 70 (против 0,8 на T30)
Average SQLServer:Access Methods: Worktables Created/sec {MS SQL 2012:perf_counter["\SQLServer:Access Methods\Worktables Created/sec",30].last()}>20 поднимается до 180 (против 6,5 на Т30)
Average SQLServer:Access Methods Page Splits / Sec {MS SQL 2012:perf_counter["\SQLServer:Access Methods\Page Splits/sec",30].last()}>{MS SQL 2012:perf_counter["\SQLServer:SQL Statistics\Batch Requests/sec",30].last()}/5 поднимается до 60 (против 2,3 на Т30)

Это имеет какое-то значение?
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583944
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наивный чукотский вьюноша.

Запусти свой запрос

Код: sql
1.
2.
3.
SET STATISTICS IO ON;

select [чаво там у тебя]...



И, может быть, просветление наступит.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583969
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разницу в три раза это не объясняет , но тем не менее :
процессор на старом сервере на 25% быстрее
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39583996
Tauzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для чистоты эксперимента делаю простой запрос из таблицы
Код: sql
1.
SELECT * FROM table


результат возвращает примерно 8,5 млн. строк

Вот статистика:
на Т30

на R910 все то же самое, только время выполнения не 120077 , а 194322
В остальном статистика идентичная.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39584007
04cf9f9576a6f15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо смотреть план конкретного запроса. Если все необходимые данные уже загружены в кеш, то скорость ввода-вывода с диска значения не играет. Зато играет значение производительность процессора, системной шины, оперативной памяти. Именно так и происходит в хорошо сбалансированных системах, где памяти достаточно и Page Life Expectancy зашкаливает.

З.Ы. Оценивать производительности системы по отдельно взятому запросу не очень правильно. Например, если в системе много простых запросов (например, веб магазин), то хорошо будут работать многоядерные процессоры, где будут работать параллельные планы. А бывают задачи с очень тяжёлыми транзакциями. Типа ERP. Где планы редко распараллеливаются. Там высокая тактовая частота процессора играет значительную роль. А количество ядер можно поменьше.

#Хэш=
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39584011
04cf9f9576a6f15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauzerдля чистоты эксперимента делаю простой запрос из таблицы
Код: sql
1.
SELECT * FROM table


результат возвращает примерно 8,5 млн. строк

Вот статистика:
на Т30

на R910 все то же самое, только время выполнения не 120077 , а 194322
В остальном статистика идентичная.Неверное представление о чистоте эксперимента. Во-первых, данные могли читаться не с физического диска, а из кэша. Во-вторых я вижу количество байтов полученных с сервера и понимаю, что у Вас тут передача данных по сети в основном задействована и скорость вывода на консоль.

Не надо делать SELECT * FROM table.
Надо SELECT SUM() FROM table, например.

Чтобы вычисления проводились внутри сервера, а на клиента по сети кидалось всего несколько десятков байт результата.

Ну и SET STATISTICS IO ON; надо, чтобы понять, что там реально с дисковыми операциями происходит. Тогда будет понятно, физические это чтения или логические. Есть ли запись во временные таблицы и т.д.

#Хэш=
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39584034
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TauzerВот статистикаЗачем вам это, что тут можно понять?
Посмотрите SET STATISTICS IO ON, и не на SELECT * FROM table, а на вашем запросе, который "Есть запрос, который выполняет SELECT. В результе, T30 выполняет запрос за 00:02:40, а R910 за 00:07:50."
Если это и есть тот самый запрос, тогда у вас просто разное сетевое подключение, и больше ничего.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39584057
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04cf9f9576a6f15Надо смотреть план конкретного запроса. Если все необходимые данные уже загружены в кеш, то скорость ввода-вывода с диска значения не играет. Зато играет значение производительность процессора, системной шины, оперативной памяти. Именно так и происходит в хорошо сбалансированных системах, где памяти достаточно и Page Life Expectancy зашкаливает.

З.Ы. Оценивать производительности системы по отдельно взятому запросу не очень правильно. Например, если в системе много простых запросов (например, веб магазин), то хорошо будут работать многоядерные процессоры, где будут работать параллельные планы. А бывают задачи с очень тяжёлыми транзакциями. Типа ERP. Где планы редко распараллеливаются. Там высокая тактовая частота процессора играет значительную роль. А количество ядер можно поменьше.

#Хэш=
Таки самое смешное, что в старом T30 у него стоят планки памяти DDR4 Unbuffered DIMMs (варианты 1600 MT/s, 1866 MT/s, 2133 MT/s, 2400 MT/s, скорее всего, самые скоростные), а в новом R910 на чипсете Intel 7500 стоят планки DDR3 низковольтовые, а по официальной спеке "Supported DDR3L are 2 GB x8, 4 GB x8, 8 GB x8, and 16 GB x4 DRAM RDIMMs. RDIMMs rated at 1333 MT/s operate at maximum of 1066 MT/s". И получается, что данные по шине между оперативной памятью и CPU в старом прокачиваются 2400, а в новом 1333. Делим 00:02:40 (160 секунд) на 1333 и умножаем на 2400 - и получаем 288 секунд (4 минуты 48 секунд). А если делим на 1066 и умножаем на 2400, то получаем 360 секунд (уже 6 минут). А плюс большой размер кэша L3 на новом, но в 24 Мбайта размер считанных строк для select не помещается - и тут вступает в работу частота 3.3 Гц против 2.67 Гц.
И берем 360 секунд, делим на 2.67 и умножаем на 3.3 - и получаем 445 секунд (7 минут 25 секунд).

Ну а учитывая то, что скорее всего на R910 включен режим не максимальной производительности для Windows, а адаптивной - ему еще нужно раскачаться и выйти на частоту 2.67. Отсюда получаем 7 минут 50 секунд. При одинаковом плане выполнения...
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39584152
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPТаки самое смешное, что в старом T30 у него стоят планки памяти DDR4 Unbuffered DIMMsВообще, слишком мало деталей.
При выполнении одного запроса, понятно, старый сервер с малым количеством высокочастотных ядер, читая данные из памяти, закономерно будет выполнять запрос быстрее, если в запросе нет распараллеливания.
А может запрос вида select * from [большая таблица], тогда многое определяется клиентом и сетью.
В общем, непонятно из предоставленных данных.
...
Рейтинг: 0 / 0
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
    #39584159
04cf9f9576a6f15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP04cf9f9576a6f15Надо смотреть план конкретного запроса. Если все необходимые данные уже загружены в кеш, то скорость ввода-вывода с диска значения не играет. Зато играет значение производительность процессора, системной шины, оперативной памяти. Именно так и происходит в хорошо сбалансированных системах, где памяти достаточно и Page Life Expectancy зашкаливает.

З.Ы. Оценивать производительности системы по отдельно взятому запросу не очень правильно. Например, если в системе много простых запросов (например, веб магазин), то хорошо будут работать многоядерные процессоры, где будут работать параллельные планы. А бывают задачи с очень тяжёлыми транзакциями. Типа ERP. Где планы редко распараллеливаются. Там высокая тактовая частота процессора играет значительную роль. А количество ядер можно поменьше.

#Хэш=
Таки самое смешное, что в старом T30 у него стоят планки памяти DDR4 Unbuffered DIMMs (варианты 1600 MT/s, 1866 MT/s, 2133 MT/s, 2400 MT/s, скорее всего, самые скоростные), а в новом R910 на чипсете Intel 7500 стоят планки DDR3 низковольтовые, а по официальной спеке "Supported DDR3L are 2 GB x8, 4 GB x8, 8 GB x8, and 16 GB x4 DRAM RDIMMs. RDIMMs rated at 1333 MT/s operate at maximum of 1066 MT/s". И получается, что данные по шине между оперативной памятью и CPU в старом прокачиваются 2400, а в новом 1333. Делим 00:02:40 (160 секунд) на 1333 и умножаем на 2400 - и получаем 288 секунд (4 минуты 48 секунд). А если делим на 1066 и умножаем на 2400, то получаем 360 секунд (уже 6 минут). А плюс большой размер кэша L3 на новом, но в 24 Мбайта размер считанных строк для select не помещается - и тут вступает в работу частота 3.3 Гц против 2.67 Гц.
И берем 360 секунд, делим на 2.67 и умножаем на 3.3 - и получаем 445 секунд (7 минут 25 секунд).

Ну а учитывая то, что скорее всего на R910 включен режим не максимальной производительности для Windows, а адаптивной - ему еще нужно раскачаться и выйти на частоту 2.67. Отсюда получаем 7 минут 50 секунд. При одинаковом плане выполнения...Вот это скорее всего наиболее правдоподобное объяснение. Ради любопытства можно на рабочей системе под нагрузкой фиксировать показатели "page lookups / sec" и процент загрузки процессора. Скорее всего обнаружится хорошая корреляция. То есть, запросы, вызывающие большое количество логических чтений, вызывают высокую загрузку процессора. Соответственно, если в наличии огромный размер памяти, вся база туда целиком помещается, обращения к диску по нулям, то узким местом становится процессор и шина.

Выход здесь только в оптимизации запроса. Надо стремится, чтобы для получения результата требовалось минимальное количество логических чтений страниц.

З.Ы. Особенно обидно, когда есть 8 ядер, а запрос не параллелится. То есть, до предела загружено одно ядро. Остальные стоят. На графике загрузка процессора, соответственно, 12%. И это предел. Объяснить админу, что при загрузке процессоров 12% именно они являются узким местом, бывает непросто.

#Хэш=
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]