Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть два сервера. Слабый: 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. Никак не могу понять, почему более слабый сервер выполняет запросы быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2018, 21:48 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
если у вас проблема с запросом, то начинать нужно с сиквел сервера, а не с дисков план запроса сравните ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2018, 22:22 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
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 ну или таки криво его настроить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2018, 22:28 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, То есть в старом T30, опечатался. Ну или MSSQL на новом делает merge join, а на старом hash join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2018, 22:33 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
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. Если обновление статистики не спасет - радикальное средство - написать запрос правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 11:00 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
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) Это имеет какое-то значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 14:41 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
Наивный чукотский вьюноша. Запусти свой запрос Код: sql 1. 2. 3. И, может быть, просветление наступит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 15:36 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
разницу в три раза это не объясняет , но тем не менее : процессор на старом сервере на 25% быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 16:59 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
для чистоты эксперимента делаю простой запрос из таблицы Код: sql 1. результат возвращает примерно 8,5 млн. строк Вот статистика: на Т30 на R910 все то же самое, только время выполнения не 120077 , а 194322 В остальном статистика идентичная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 18:52 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
Надо смотреть план конкретного запроса. Если все необходимые данные уже загружены в кеш, то скорость ввода-вывода с диска значения не играет. Зато играет значение производительность процессора, системной шины, оперативной памяти. Именно так и происходит в хорошо сбалансированных системах, где памяти достаточно и Page Life Expectancy зашкаливает. З.Ы. Оценивать производительности системы по отдельно взятому запросу не очень правильно. Например, если в системе много простых запросов (например, веб магазин), то хорошо будут работать многоядерные процессоры, где будут работать параллельные планы. А бывают задачи с очень тяжёлыми транзакциями. Типа ERP. Где планы редко распараллеливаются. Там высокая тактовая частота процессора играет значительную роль. А количество ядер можно поменьше. #Хэш= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 19:26 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
Tauzerдля чистоты эксперимента делаю простой запрос из таблицы Код: sql 1. результат возвращает примерно 8,5 млн. строк Вот статистика: на Т30 на R910 все то же самое, только время выполнения не 120077 , а 194322 В остальном статистика идентичная.Неверное представление о чистоте эксперимента. Во-первых, данные могли читаться не с физического диска, а из кэша. Во-вторых я вижу количество байтов полученных с сервера и понимаю, что у Вас тут передача данных по сети в основном задействована и скорость вывода на консоль. Не надо делать SELECT * FROM table. Надо SELECT SUM() FROM table, например. Чтобы вычисления проводились внутри сервера, а на клиента по сети кидалось всего несколько десятков байт результата. Ну и SET STATISTICS IO ON; надо, чтобы понять, что там реально с дисковыми операциями происходит. Тогда будет понятно, физические это чтения или логические. Есть ли запись во временные таблицы и т.д. #Хэш= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 19:35 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
TauzerВот статистикаЗачем вам это, что тут можно понять? Посмотрите SET STATISTICS IO ON, и не на SELECT * FROM table, а на вашем запросе, который "Есть запрос, который выполняет SELECT. В результе, T30 выполняет запрос за 00:02:40, а R910 за 00:07:50." Если это и есть тот самый запрос, тогда у вас просто разное сетевое подключение, и больше ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 22:00 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
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 секунд. При одинаковом плане выполнения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2018, 23:11 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPТаки самое смешное, что в старом T30 у него стоят планки памяти DDR4 Unbuffered DIMMsВообще, слишком мало деталей. При выполнении одного запроса, понятно, старый сервер с малым количеством высокочастотных ядер, читая данные из памяти, закономерно будет выполнять запрос быстрее, если в запросе нет распараллеливания. А может запрос вида select * from [большая таблица], тогда многое определяется клиентом и сетью. В общем, непонятно из предоставленных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 08:50 |
|
||
|
Почему скорость выполнения запроса на слабом сервере выше, чем на более мощном?
|
|||
|---|---|---|---|
|
#18+
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% именно они являются узким местом, бывает непросто. #Хэш= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 09:00 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39583800&tid=1690509]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 407ms |

| 0 / 0 |
