Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
YuriySu
Member

Откуда:
Сообщений: 19
Привет, всем.

Помогите, пожалуйста, в моей проблеме.

Рабочий ПК
ОС: Microsoft Windows 10 Pro
Процессор: QuadCore Intel Core i7-6820HK 3700 MHz (8 ядер, Кэш: L1-32Кб per core, L2-256Кб per core, L3-8Мб)
Оперативная память: 64 Гб
Дисковый накопитель: Intel Raid 0 Volume (476 Гб)

Версия SQL Server
Microsoft SQL Server 2012 (SP1) - 11.0.3368.0 (X64)
May 22 2013 17:10:44
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)


Вся работа проводится в SQL Server Management Studio
Есть локальная БД. Пользователей нет. Триггеров нет.
В SQL-скриптах довольно много: "cursor local forward_only static", insert, update, select.

База постоянно дополняется новыми данными и алгоритмами их обработки.

Два раза в год запускается хранимка. И тут есть 2-е проблемы:
1. БД разрастается до 400 Гб
2. Время выполнения хранимки около 1-го месяца.

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

Я хочу собрать новый рабочий ПК для работы с данной БД
Для этого я отобрал 3-и топовых процессора:

1. Intel Core i9-7980XE
Число ядер ЦП: 18
Число потоков: 36
Базовая частота: 2.60GHz
Макс. частота: 4.2GHz
Объем кэш-памяти первого уровня:
Объем кэш-памяти второго уровня:
Объем кэш-памяти третьего уровня: 24,75MB
Техпроцесс: 14nm
Тип памяти: DDR4
Каналы памяти: 4
Макс. быстродействие памяти: 2666MHz


2. AMD Ryzen Threadripper 2990WX
Число ядер ЦП: 32
Число потоков: 64
Базовая частота: 3GHz
Макс. частота: 4.2GHz
Объем кэш-памяти первого уровня: 3MB
Объем кэш-памяти второго уровня: 16MB
Объем кэш-памяти третьего уровня: 64MB
Техпроцесс: 12nm
Тип памяти: DDR4
Каналы памяти: 4
Макс. быстродействие памяти: 2933MHz

3. AMD Ryzen Threadripper 2950X
Число ядер ЦП: 16
Число потоков: 32
Базовая частота: 3.5GHz
Макс. частота: 4.4GHz
Объем кэш-памяти первого уровня: 1.5MB
Объем кэш-памяти второго уровня: 8MB
Объем кэш-памяти третьего уровня: 32MB
Техпроцесс: 12nm
Тип памяти: DDR4
Каналы памяти: 4
Макс. быстродействие памяти: 2933MHz


Теперь вопросы:
Какой процессор для моих задач будет лучше?
Какой прирост производительности можно ожидать от использования новых процессоров?
Где можно почитать информацию по данному вопросу?

Спасибо всем.
27 окт 18, 12:05    [21716770]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
invm
Member

Откуда: Москва
Сообщений: 9125
Т.е. доподлинно установлено, что узкое место - процессор?
27 окт 18, 13:04    [21716792]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
YuriySu
Member

Откуда:
Сообщений: 19
Привет, invm

Узкое место не установлено.
Оптимизацией БД занимался. Много курсоров убрал, много индексов добавил. В силу своих познаний я сделал что мог. Дальше нужно много перелопачивать инфы. Этим я займусь обязательно, но позже.

На данный момент наиболее простой способ сократить время выполнения хранимки - это покупка нового ПК.

И этот "новый ПК" я хочу собрать на основе какого-то из 3-х процессоров.

Я много перечитал информации в интернете, но так и не нашел внятного ответа на вопрос.
На сколько вырастет производительность SQL Server?
И что наиболее важно в рабочем ПК для разработчика SQL Server: тактовая частота, кэш, оперативка?

То, что я понял из прочитанного в интернете:
Чем больше пользователей, тем более важно кол-во ядер.
Если пользователей нет, что важна тактовая частота процессора, а кол-во ядер не важно.


Вот у меня и стал вопрос, а насколько вырастет производительность моего SQL Server, если построить новую машину на основе этих процессоров?

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

Можно конечно же и за счет оптимизации кода значительно сократить время выполнения, но на это пока не хватает мозгов.

Наиболее простым способом вижу приобретение "нового ПК", но даст ли мне эта покупка прирост хотя бы в 50% я не знаю.
27 окт 18, 14:00    [21716826]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30806
YuriySu
Вот у меня и стал вопрос, а насколько вырастет производительность моего SQL Server, если построить новую машину на основе этих процессоров?
Если ваши запросы не распараллеливаются, то лучше меньше ядер, больше чсастота.
И наоборот, если распараллеливаются.

Скорее всего, для вашей процедуры верно первое, соотв., быстрее всего будет десктопный проц на 4-6 ядер
Но это всё очень приблизительно, важна же ещё память, может, её элементарно не хватает, и сиквел читает постоянно с дисков?

Самое правильное - не покупать случайное железо, и смотреть, что получится, а запустить профайлер, и смотреть конкретные узкие места, запросы, в целом выполнение этой вашей процедуры, и далее делать выводы.
Что бы как минимум подобрать оптимальное железо и настройки, и как максимум - оптимизировать саму процедуру.
27 окт 18, 14:17    [21716827]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
YuriySu
Member

Откуда:
Сообщений: 19
alexeyvg
Если ваши запросы не распараллеливаются, то лучше меньше ядер, больше чсастота.
И наоборот, если распараллеливаются.

Скорее всего, для вашей процедуры верно первое, соотв., быстрее всего будет десктопный проц на 4-6 ядер
Но это всё очень приблизительно, важна же ещё память, может, её элементарно не хватает, и сиквел читает постоянно с дисков?

Самое правильное - не покупать случайное железо, и смотреть, что получится, а запустить профайлер, и смотреть конкретные узкие места, запросы, в целом выполнение этой вашей процедуры, и далее делать выводы.
Что бы как минимум подобрать оптимальное железо и настройки, и как максимум - оптимизировать саму процедуру.


Привет, alexeyvg

Спасибо за информацию.
Изучу распаралеливание и определение "узких мест".

Скажите, пожалуйста.
Есть такие входные данные:
1. Нет распараллеливания.
2 Есть 2-а идентичных компьютера в которых различие только в процессорах по кол-ву ядер (в первом 6 ядер, а во втором 32)

Вопрос: я запущу один и тот же скрипт на этих двух ПК и время выполнения этого скрипта будет одинаковым на 2-х ПК?
Т.е. на 2-м ПК будет задействовано только 6 ядер, а 24 будут не задействованы?
27 окт 18, 14:50    [21716842]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
aleks222
Member

Откуда:
Сообщений: 855
YuriySu
1. Какой процессор для моих задач будет лучше?
2. Какой прирост производительности можно ожидать от использования новых процессоров?
3/ Где можно почитать информацию по данному вопросу?


1. Абсолютно пофиг.

2. Никакой прирост вам не светит.

3. Головой работать надо.
400 Гб и 1 месяц => диск, батенька. Копи на SSD.

ЗЫ. Хотя оптимизация говнокода дешевле и дает прирост не в разы, а в сотни раз.
27 окт 18, 16:03    [21716868]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
vikkiv
Member

Откуда: London
Сообщений: 2624
+100500 , пересмотр логики в сторону оптимизации в приоритетах должно быть,
т.к. наиболее вероятный и более продуктивный сценарий
(в т.ч. поиск других альтернатив/инструментов, кроме SQL)

железо - так облака есть, наращивается довольно гибко,
хотя всё равно с диалектом подшаманить придётся.
ну и да - выше уже перечислили: сначала искать узкие места в первую очередь,
скорость процессора (Ядра/Инструкции/Кэш) против скорости
обмена данными (диск M.2 PCIe-NVMe / память DDR4)

глянуть настройки SQL сервера (там очень и очень много чего {паралелизм, Temp...}),
потанцевать вокруг оптимизации OS (что там ещё делает),
хотя с курсорами не очень помогает - но между делом посмотреть планы.
27 окт 18, 16:38    [21716886]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
vikkiv
Member

Откуда: London
Сообщений: 2624
Хотя-бы TaskManager / ResourceMonitor / PerfMonitor смотрел или Трейс писал по ходу выполнения для оценки загрузки?
Т.к. без предварительного анализа ("просто долго") - это из пушки по воробьям..
27 окт 18, 16:46    [21716890]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30806
YuriySu
Спасибо за информацию.
Изучу распаралеливание и определение "узких мест".

Скажите, пожалуйста.
Есть такие входные данные:
1. Нет распараллеливания.
2 Есть 2-а идентичных компьютера в которых различие только в процессорах по кол-ву ядер (в первом 6 ядер, а во втором 32)

Вопрос: я запущу один и тот же скрипт на этих двух ПК и время выполнения этого скрипта будет одинаковым на 2-х ПК?
Т.е. на 2-м ПК будет задействовано только 6 ядер, а 24 будут не задействованы?
Если "1. Нет распараллеливания.", то, очевидно, на каждом из ПК будет задействовано только одно ядро, а 5 и 31 соответственно будут простаивать.

Нет распараллеливания, или оно есть, глазами в скрипте вы не увидите, сервер же сам запросы распараллеливает, поэтому надо смотреть планы выполнения.
aleks222
400 Гб и 1 месяц => диск, батенька. Копи на SSD.
Или отсутствие индексов. Может, там в курсорах циклы по таблицам, а потом по записям делаются запросы в других таблицах, и там уже сканы?
Но в диски упираться тоже может, само собой.
vikkiv
Хотя-бы TaskManager / ResourceMonitor / PerfMonitor смотрел или Трейс писал по ходу выполнения для оценки загрузки?
Да, вот в PerfMonitor-е сразу будет прекрасно видно, упирается всё в диск или нет.
27 окт 18, 18:56    [21716937]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
дешевле и продуктивнее один раз пригласить спеца, что бы тот пофиксил хранимку.
особенно когда время выполнения 1 месяц - вы ж явно никуда не спешите
27 окт 18, 20:14    [21716972]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4885
YuriySu
На данный момент наиболее простой способ сократить время выполнения хранимки - это покупка нового ПК.

При прочтении сего плакал...от смеха. )))

Хранимка...месяц. у нас когда отчёт больше минуты работает, это уже проблемой считается. :)
27 окт 18, 22:57    [21717047]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
YuriySu
Member

Откуда:
Сообщений: 19
Всем спасибо за участие.

Подкину, так сказать, еще дровишек...

Описание задачи.
По сути - это система принятия решений.
Шесть месяцев БД наполняется данными. После этого (один раз в пол года) запускается хранимая процедура, задача которой - проверить гипотезы.
Гипотеза - это различные варианты весов для ряда ключевых показателей. Всего 2 661 703 комбинаций (на данный момент).
Результатом выполнения хранимой процедуры является определение 8-ми лучших гипотез.

Так что - это Вам не отчеты за 1-у минуту :))

Но опять же. Там определенно есть чего оптимизировать.

Я хочу сказать о предыдущем своем опыте по замене "рабочего ПК" в 2015 году.

"Старый ПК" | "Мой рабочий ПК"

Процессор
Номер i7-3770K | i7-6820HK
Литография 22 nm | 14 nm
Количество ядер 4 | 4
Количество потоков 8 | 8
Базовая тактовая частота процессора 3,50 GHz | 2,70 GHz
Максимальная тактовая частота с технологией Turbo Boost 3,90 GHz | 3,60 GHz
Кэш-память 8 MB SmartCache | 8 MB SmartCache
Частота системной шины 5 GT/s DMI | 8 GT/s DMI3

Оперативная память
Спецификации модулей памяти
Объем памяти 32 GB | 64 GB
Тип памяти DDR3-1600 | DDR4-2133
Макс. пропускная способность памяти 25,6 GB/s | 34,1 GB/s

Диски Samsung SSD 840 PRO | Какой-то SSD Intel ))

Так вот, переход на новую машину сократил время выполнения хранимой процедуры ...
(дробь барабанных палочек)
...
ВНИМАНИЕ!
...
(дробь барабанных палочек)
...

НА 2-Е НЕДЕЛИ )))

Сам ржу с данного факта, но что есть - то есть. Да, раньше хранимка выполнялась 1.5 месяца.

С тех пор технологии пошли вперед и я, все же не без оснований (оглядываясь на предыдущий опыт по замене ПК), ожидаю серьезного :) прироста производительности.
28 окт 18, 09:03    [21717119]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
PizzaPizza
Member

Откуда:
Сообщений: 309
YuriySu,

Арендуйте в облаке вам подходящую конфигурацию. Залейте туда данные и запустите вашу процедуру. Вот так будет более менее адекватная прикидка того, что вам нужно будет купить.
Начните например с 64 ядер. Если это будет хотя бы в два раза уменьшение времени выполнения, то уже дальше можно решать, стоит ли несколько тысяч долларов потратить на процессор или на программиста.
28 окт 18, 10:01    [21717128]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
aleks222
Member

Откуда:
Сообщений: 855
YuriySu
Шесть месяцев БД наполняется данными. После этого (один раз в пол года) запускается хранимая процедура, задача которой - проверить гипотезы.

С тех пор технологии пошли вперед и я, все же не без оснований (оглядываясь на предыдущий опыт по замене ПК), ожидаю серьезного :) прироста производительности.


Даже не смешно.
Придурки какие-то.
Выполняют неизвестную процедуру, которая считает неведомо что месяц.
На что тратиться время - выяснять неохота.
Зато есть бабки на японский суперкомпутер.
Будем надеяться, что это не наше доблестное правительство...

За 6 (шесть) месяцев можно хоть предобработку данных выполнить. И уложиться с финальным расчетом в часок-другой.
28 окт 18, 10:25    [21717130]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
x1ca4064
Member

Откуда:
Сообщений: 1076
YuriySu,

По двум точкам судить не очень верно, но можно заметить, что время выполнения сократилось с повышением скорости памяти (почти пропорционально) - можно смотреть в этом направлении. Кроме этого, можно заметить, что на вычисление одного варианта тратится примерно секунда, т.е. результат зависит примерно от 30 Gb данных (это спекулятивное утверждение, почти пальцем в небо, т.е. требует проверки), поэтому я бы попробовал запустить 2 экземпляра хранимки (возможно, на небольшой модельной базе) - одна расчитывает одну половину, вторая - другую и посмотрел результат.
28 окт 18, 10:31    [21717133]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4885
Железо, безусловно, играет роль. Но все же лучше делать апгрейды железа на оптимизированных запросах.

Вот мой кейс. Переехали планов на новый сервер. Админ накинул оперативы с 12 до 20 гб. В большинстве своём ничего не изменилось, большинство запросов итак оптимизированы. Но вот джобы на реибилд индексов по каждой из 5ти основных баз вместо 6-8ч стали выполняться 1-2ч. Польза, безусловно, есть. Но повлияло это на узкий круг запросов.
28 окт 18, 22:32    [21717485]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
YuriySu

Теперь вопросы:
Какой процессор для моих задач будет лучше?


Intel Core i9-7980XE - умрет через 1-6 месяцев. Не стоит так делать. Объем L2 18MB, L3 24MB, 2.6 Гц опорная и 4.2 в турбобусте. Это горячий процессор.

Выбирайте AMD Ryzen Threadripper 2990WX - потому что 64 Мбайта из кэша L3 пойдут на работу по пересчету одним ядром и пересылке по шине памяти, а у интела это будет затыкаться уже на 24 Мбайтах.

YuriySu

Какой прирост производительности можно ожидать от использования новых процессоров?
Где можно почитать информацию по данному вопросу?

А это зависит исключительно от производителя материнской платы. Снимайте стоковый кулер, ставьте что-нибудь кошерное.


Когда будете читать, обратите внимание, что AMD имеет больший кэш L2, однако кэш AMD L3 — это не инклюзивный victim-кэш, что означает, что он не может использовать предвыборку (prefetching) в отличие от кэша Intel L3.
[/quot]
29 окт 18, 01:04    [21717565]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
vikkiv
Member

Откуда: London
Сообщений: 2624
YuriySu,

очевидно что тема-то становится всё больше и больше железная..

всё-таки советую разбить алгоритм процедуры на части
хотя-бы рази наблюдения за прогрессом
(какая стадия и по какой {железной?} причине тормозит)

там может быть шагов по алгоритму с десяток (для части из которых
RDBMS и предназначен, для части - может другие средства подойдут)
и процедуры выполнять последовательно (или какой там поток в схеме)

инвестировать стоит туда где это наиболее вероятно приведёт к максимальному результату.
тут советуют вложиться в разные компоненты железа без понимания что именно влияет на производительность.
если вывод о канале памяти как узком месте подтвердится - то рекомендация:
процессор: SkyLake-X (это i7 начиная с 7800 или i9 типа 9960X,
потому что 4х-канальная память, ну и по ядрам они от 6ти до 18ти)
разьём: 2066 (потому что розничные процессора такие)
чипсет: х299 (то что есть на рынке для этого типа процессоров/слота)

материнские (черырёхканальная память, i9 / х299) под всё это есть на рынке.
естественно с поддержкой PCIe / NVMe / M.2 (т.к. SATA SSD уже такое-же
прошлое как и CD/DVD диски, не говоря уже о FDD и пр. антиквариате)


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


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

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

не стоит забывать что начиная с SQL Server 2016 - внутри идёт встроенный R
а с SQL Server 2017 - R + Python , и какое-то время назад
смотрел SQL Server 2019 CTP2.0 - там ещё добавляют и Java.
29 окт 18, 01:23    [21717568]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30806
Andy_OLAP
Выбирайте AMD Ryzen Threadripper 2990WX - потому что 64 Мбайта из кэша L3 пойдут на работу по пересчету одним ядром и пересылке по шине памяти
32 Мб кэша, и пол-шины памяти. Одно ядро не сможет использовать ресурсы обоих модулей.

Впрочем, разговор о железе считаю бессмысленным, пока автор (или ещё кто то) не посмотрит на систему.
Может, там при выполнении всё ядра задействованы, или созданием одного индекса можно будет ускорить выполнение с месяца до часа, кто знает?
29 окт 18, 01:28    [21717569]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
YuriySu
Member

Откуда:
Сообщений: 19
Ребята, спасибо всем Вам.

Почерпнул для себя очень нужную информацию, которую теперь изучаю.

alexeyvg - натолкнул на мысли о параллелизме. Теперь буду оптимизировать код для замены конструкций, которые принудительно убирают параллелизм.

vikkiv - дал направление в необходимости внедрения подхода workflow, а так же изучения инструментов оптимизации и поиска "узких мест". Буду переходить на более новую версию SQL Server.

x1ca4064 - Благодаря Вам, появились мысли о возможности "насильного распараллеливания" путем ухода от последовательного выполнения алгоритма в хранимой процедуре к разбиению алгоритма на несколько хранимых процедур, которые могут запускаться на выполнение одновременно.

Andy_OLAP - спасибо за информацию о процессоре от AMD. Именно большое кол-во ядер и перспектива максимального распараллеливания моего алгоритма наталкивает меня на мысль о том, что это именно тот процессор, что мне нужен.

Единственное, что меня сейчас смущает - это узкое место в архитектуре процессора при работе с памятью и PCIe - это шина Infinity Fabric, которая дает некоторые задержки. У процессора от Intell таких задержек нет.

Но AMD работает с более быстрой памятью и что самое важное - имеет в 2-а раза больше ядер. Оглядываясь на то, что нужно идти в сторону максимального распараллеливания (ведь SQL Server способен работать одновременно с 64 ядрами), скорее всего мой выбор AMD. Но я еще все же более подробно изучу задержки, связанные с шиной Infinity Fabric и как это может повлиять на производительность SQL Server.

По поводу того, что переход на новое железо ничего не даст - это просто смешно.
Только лишь приблизительно сравнив характеристики "железа", что у меня есть на данный момент и характеристики того, что можно приобрести сейчас, то разница как в "скорости процессора (Ядра/Инструкции/Кэш) так и в скорости обмена данными (диск M.2 PCIe-NVMe / память DDR4)" настолько велика! Ну это приблизительно как велосипед и суперкар: оперативная память стала быстрее в разы, процессоры стали производительнее в разы, SSD c подключением по M.2 - быстрее в разы)

Переход на новое железо - однозначно даст значительный прирост.

И даже если скрипт после покупки нового железа будет считаться за 1-у неделю )), то в любом случае нужно переходить к глобальной оптимизации всего алгоритма. К тому же кол-во гипотез будет расти.
29 окт 18, 09:35    [21717672]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30806
YuriySu
Теперь буду оптимизировать код для замены конструкций, которые принудительно убирают параллелизм.
Нужно просто получить трейсом детали выполнения вашей большой процедуры, с сохранением его в таблицу, потом с этой таблицей поработать, получив некий отчёт по выполнению, с полями вида:
имя процедурыномер строкитекст запросаданные о выполнении (Duration, CPU, Reads, Wrtites и т.д.)

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

Далее вы работаете только с этими стейтментами, блоками кода (допустим, их будет десяток) - наверное, сложно оптимизировать весь код, с изменением алгоритмов и т.д., но не так сложно поправить несколько узких мест.
29 окт 18, 10:30    [21717726]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Может вначале покажете какие у вас задержки на сервере:

SELECT TOP(20) wait_type
             , wait_time = CAST(wait_time_ms / 1000. AS DECIMAL(18,4))
             , wait_resource = CAST((wait_time_ms - signal_wait_time_ms) / 1000. AS DECIMAL(18,4))
             , wait_signal = CAST(signal_wait_time_ms / 1000. AS DECIMAL(18,4))
             , wait_time_percent = CAST(100. * wait_time_ms / NULLIF(SUM(wait_time_ms) OVER (), 0) AS DECIMAL(18,2))
             , waiting_tasks_count
             , max_wait_time = CAST(max_wait_time_ms / 1000. AS DECIMAL(18,4))
             , avg_wait = CAST(wait_time_ms / 1000. / waiting_tasks_count AS DECIMAL(18,4))
             , avg_wait_resource = CAST((wait_time_ms - signal_wait_time_ms) / 1000. / waiting_tasks_count AS DECIMAL(18,4))
             , avg_wait_signal = CAST(signal_wait_time_ms / 1000. / waiting_tasks_count AS DECIMAL(18,4))
FROM sys.dm_os_wait_stats
WHERE waiting_tasks_count > 0
    AND wait_time_ms > 0
    AND wait_type NOT IN (
        N'BROKER_EVENTHANDLER', N'BROKER_RECEIVE_WAITFOR',
        N'BROKER_TASK_STOP', N'BROKER_TO_FLUSH',
        N'BROKER_TRANSMITTER', N'CHECKPOINT_QUEUE',
        N'CHKPT', N'CLR_AUTO_EVENT',
        N'CLR_MANUAL_EVENT', N'CLR_SEMAPHORE',
        N'DBMIRROR_DBM_EVENT', N'DBMIRROR_EVENTS_QUEUE',
        N'DBMIRROR_WORKER_QUEUE', N'DBMIRRORING_CMD',
        N'DIRTY_PAGE_POLL', N'DISPATCHER_QUEUE_SEMAPHORE',
        N'EXECSYNC', N'FSAGENT',
        N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'FT_IFTSHC_MUTEX',
        N'HADR_CLUSAPI_CALL', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
        N'HADR_LOGCAPTURE_WAIT', N'HADR_NOTIFICATION_DEQUEUE',
        N'HADR_TIMER_TASK', N'HADR_WORK_QUEUE',
        N'KSOURCE_WAKEUP', N'LAZYWRITER_SLEEP',
        N'LOGMGR_QUEUE', N'ONDEMAND_TASK_QUEUE',
        N'PWAIT_ALL_COMPONENTS_INITIALIZED',
        N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',
        N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',
        N'REQUEST_FOR_DEADLOCK_SEARCH', N'RESOURCE_QUEUE',
        N'SERVER_IDLE_CHECK', N'SLEEP_BPOOL_FLUSH',
        N'SLEEP_DBSTARTUP', N'SLEEP_DCOMSTARTUP',
        N'SLEEP_MASTERDBREADY', N'SLEEP_MASTERMDREADY',
        N'SLEEP_MASTERUPGRADED', N'SLEEP_MSDBSTARTUP',
        N'SLEEP_SYSTEMTASK', N'SLEEP_TASK',
        N'SLEEP_TEMPDBSTARTUP', N'SNI_HTTP_ACCEPT',
        N'SP_SERVER_DIAGNOSTICS_SLEEP', N'SQLTRACE_BUFFER_FLUSH',
        N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
        N'SQLTRACE_WAIT_ENTRIES', N'WAIT_FOR_RESULTS',
        N'WAITFOR', N'WAITFOR_TASKSHUTDOWN',
        N'WAIT_XTP_HOST_WAIT', N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG',
        N'WAIT_XTP_CKPT_CLOSE', N'XE_DISPATCHER_JOIN',
        N'XE_DISPATCHER_WAIT', N'XE_TIMER_EVENT'
    )
ORDER BY wait_time_ms DESC
29 окт 18, 11:34    [21717796]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
YuriySu
Member

Откуда:
Сообщений: 19
AlanDenton,

Привет, AlanDenton

wait_type	wait_time	wait_resource	wait_signal	wait_time_percent	waiting_tasks_count	max_wait_time	avg_wait	avg_wait_resource	avg_wait_signal
CXPACKET	3913.1950	2871.1540	1042.0410	90.61	3943476	3.1550	0.0010	0.0007	0.0003
LATCH_EX	193.9710	168.4670	25.5040	4.49	424771	0.0690	0.0005	0.0004	0.0001
WRITELOG	70.6920	60.9140	9.7780	1.64	592727	0.0230	0.0001	0.0001	0.0000
PAGELATCH_EX	40.7730	6.8140	33.9590	0.94	13941655	0.0220	0.0000	0.0000	0.0000
ASYNC_NETWORK_IO	33.7440	32.6750	1.0690	0.78	20427	0.1450	0.0017	0.0016	0.0001
SOS_SCHEDULER_YIELD	32.9960	0.7180	32.2780	0.76	542149	0.0250	0.0001	0.0000	0.0001
MSQL_XP	4.3430	4.3430	0.0000	0.10	215	0.1350	0.0202	0.0202	0.0000
ASYNC_IO_COMPLETION	2.9950	2.9580	0.0370	0.07	31	0.1970	0.0966	0.0954	0.0012
LCK_M_S	2.9710	2.9610	0.0100	0.07	19	1.0650	0.1564	0.1558	0.0005
PREEMPTIVE_OS_FILEOPS	2.5930	2.5930	0.0000	0.06	289	0.0320	0.0090	0.0090	0.0000
LATCH_SH	2.5490	2.1120	0.4370	0.06	22672	0.0230	0.0001	0.0001	0.0000
PAGEIOLATCH_EX	2.2220	2.1650	0.0570	0.05	8348	0.0140	0.0003	0.0003	0.0000
PREEMPTIVE_OS_LIBRARYOPS	1.5440	1.5440	0.0000	0.04	1	1.5440	1.5440	1.5440	0.0000
IO_COMPLETION	1.4380	1.3530	0.0850	0.03	7680	0.0100	0.0002	0.0002	0.0000
PREEMPTIVE_OS_GENERICOPS	1.3570	1.3570	0.0000	0.03	22	1.2160	0.0617	0.0617	0.0000
PREEMPTIVE_OS_AUTHENTICATIONOPS	1.3020	1.3020	0.0000	0.03	10123	0.0180	0.0001	0.0001	0.0000
PAGELATCH_UP	1.2810	0.8980	0.3830	0.03	8608	0.0160	0.0001	0.0001	0.0000
PREEMPTIVE_OS_PIPEOPS	1.2250	1.2250	0.0000	0.03	1	1.2250	1.2250	1.2250	0.0000
QUERY_EXECUTION_INDEX_SORT_EVENT_OPEN	1.1950	1.1770	0.0180	0.03	301	0.0170	0.0040	0.0039	0.0001
PAGEIOLATCH_SH	1.0860	1.0010	0.0850	0.03	2151	0.0170	0.0005	0.0005	0.0000


К моему сожалению я пока слабо понимаю информацию в этой выборке.
29 окт 18, 12:08    [21717842]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
YuriySu,

Судя по числам, вы сервер каждый день перегружаете?
29 окт 18, 12:09    [21717843]     Ответить | Цитировать Сообщить модератору
 Re: Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.  [new]
YuriySu
Member

Откуда:
Сообщений: 19
TaPaK,

Привет, TaPaK

У меня не сервер, а "рабочий ПК" :))
29 окт 18, 12:11    [21717844]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить