Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Частота процессора, кол-во ядер,... ? What the f**k :)) Help please. / 25 сообщений из 39, страница 1 из 2
27.10.2018, 12:05
    #39723853
YuriySu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Привет, всем.

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

Рабочий ПК
ОС: 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


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

Спасибо всем.
...
Рейтинг: 0 / 0
27.10.2018, 13:04
    #39723866
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Т.е. доподлинно установлено, что узкое место - процессор?
...
Рейтинг: 0 / 0
27.10.2018, 14:00
    #39723880
YuriySu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Привет, invm

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

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

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

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

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


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

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

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

Наиболее простым способом вижу приобретение "нового ПК", но даст ли мне эта покупка прирост хотя бы в 50% я не знаю.
...
Рейтинг: 0 / 0
27.10.2018, 14:17
    #39723881
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySuВот у меня и стал вопрос, а насколько вырастет производительность моего SQL Server, если построить новую машину на основе этих процессоров?Если ваши запросы не распараллеливаются, то лучше меньше ядер, больше чсастота.
И наоборот, если распараллеливаются.

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

Самое правильное - не покупать случайное железо, и смотреть, что получится, а запустить профайлер, и смотреть конкретные узкие места, запросы, в целом выполнение этой вашей процедуры, и далее делать выводы.
Что бы как минимум подобрать оптимальное железо и настройки, и как максимум - оптимизировать саму процедуру.
...
Рейтинг: 0 / 0
27.10.2018, 14:50
    #39723884
YuriySu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
alexeyvgЕсли ваши запросы не распараллеливаются, то лучше меньше ядер, больше чсастота.
И наоборот, если распараллеливаются.

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

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

Привет, alexeyvg

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

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

Вопрос: я запущу один и тот же скрипт на этих двух ПК и время выполнения этого скрипта будет одинаковым на 2-х ПК?
Т.е. на 2-м ПК будет задействовано только 6 ядер, а 24 будут не задействованы?
...
Рейтинг: 0 / 0
27.10.2018, 16:03
    #39723901
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySu1. Какой процессор для моих задач будет лучше?
2. Какой прирост производительности можно ожидать от использования новых процессоров?
3/ Где можно почитать информацию по данному вопросу?


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

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

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

ЗЫ. Хотя оптимизация говнокода дешевле и дает прирост не в разы, а в сотни раз.
...
Рейтинг: 0 / 0
27.10.2018, 16:38
    #39723906
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
+100500 , пересмотр логики в сторону оптимизации в приоритетах должно быть,
т.к. наиболее вероятный и более продуктивный сценарий
(в т.ч. поиск других альтернатив/инструментов, кроме SQL)

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

глянуть настройки SQL сервера (там очень и очень много чего {паралелизм, Temp...}),
потанцевать вокруг оптимизации OS (что там ещё делает),
хотя с курсорами не очень помогает - но между делом посмотреть планы.
...
Рейтинг: 0 / 0
27.10.2018, 16:46
    #39723907
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Хотя-бы TaskManager / ResourceMonitor / PerfMonitor смотрел или Трейс писал по ходу выполнения для оценки загрузки?
Т.к. без предварительного анализа ("просто долго") - это из пушки по воробьям..
...
Рейтинг: 0 / 0
27.10.2018, 18:56
    #39723920
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySuСпасибо за информацию.
Изучу распаралеливание и определение "узких мест".

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

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

Нет распараллеливания, или оно есть, глазами в скрипте вы не увидите, сервер же сам запросы распараллеливает, поэтому надо смотреть планы выполнения.
aleks222400 Гб и 1 месяц => диск, батенька. Копи на SSD.Или отсутствие индексов. Может, там в курсорах циклы по таблицам, а потом по записям делаются запросы в других таблицах, и там уже сканы?
Но в диски упираться тоже может, само собой.
vikkivХотя-бы TaskManager / ResourceMonitor / PerfMonitor смотрел или Трейс писал по ходу выполнения для оценки загрузки?Да, вот в PerfMonitor-е сразу будет прекрасно видно, упирается всё в диск или нет.
...
Рейтинг: 0 / 0
27.10.2018, 20:14
    #39723927
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
дешевле и продуктивнее один раз пригласить спеца, что бы тот пофиксил хранимку.
особенно когда время выполнения 1 месяц - вы ж явно никуда не спешите
...
Рейтинг: 0 / 0
27.10.2018, 22:57
    #39723957
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySuНа данный момент наиболее простой способ сократить время выполнения хранимки - это покупка нового ПК.

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

Хранимка...месяц. у нас когда отчёт больше минуты работает, это уже проблемой считается. :)
...
Рейтинг: 0 / 0
28.10.2018, 09:03
    #39723995
YuriySu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Всем спасибо за участие.

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

Описание задачи.
По сути - это система принятия решений.
Шесть месяцев БД наполняется данными. После этого (один раз в пол года) запускается хранимая процедура, задача которой - проверить гипотезы.
Гипотеза - это различные варианты весов для ряда ключевых показателей. Всего 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 месяца.

С тех пор технологии пошли вперед и я, все же не без оснований (оглядываясь на предыдущий опыт по замене ПК), ожидаю серьезного :) прироста производительности.
...
Рейтинг: 0 / 0
28.10.2018, 10:01
    #39724001
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySu,

Арендуйте в облаке вам подходящую конфигурацию. Залейте туда данные и запустите вашу процедуру. Вот так будет более менее адекватная прикидка того, что вам нужно будет купить.
Начните например с 64 ядер. Если это будет хотя бы в два раза уменьшение времени выполнения, то уже дальше можно решать, стоит ли несколько тысяч долларов потратить на процессор или на программиста.
...
Рейтинг: 0 / 0
28.10.2018, 10:25
    #39724003
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySuШесть месяцев БД наполняется данными. После этого (один раз в пол года) запускается хранимая процедура, задача которой - проверить гипотезы.

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

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

За 6 (шесть) месяцев можно хоть предобработку данных выполнить. И уложиться с финальным расчетом в часок-другой.
...
Рейтинг: 0 / 0
28.10.2018, 10:31
    #39724005
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySu,

По двум точкам судить не очень верно, но можно заметить, что время выполнения сократилось с повышением скорости памяти (почти пропорционально) - можно смотреть в этом направлении. Кроме этого, можно заметить, что на вычисление одного варианта тратится примерно секунда, т.е. результат зависит примерно от 30 Gb данных (это спекулятивное утверждение, почти пальцем в небо, т.е. требует проверки), поэтому я бы попробовал запустить 2 экземпляра хранимки (возможно, на небольшой модельной базе) - одна расчитывает одну половину, вторая - другую и посмотрел результат.
...
Рейтинг: 0 / 0
28.10.2018, 22:32
    #39724173
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Железо, безусловно, играет роль. Но все же лучше делать апгрейды железа на оптимизированных запросах.

Вот мой кейс. Переехали планов на новый сервер. Админ накинул оперативы с 12 до 20 гб. В большинстве своём ничего не изменилось, большинство запросов итак оптимизированы. Но вот джобы на реибилд индексов по каждой из 5ти основных баз вместо 6-8ч стали выполняться 1-2ч. Польза, безусловно, есть. Но повлияло это на узкий круг запросов.
...
Рейтинг: 0 / 0
29.10.2018, 01:04
    #39724209
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
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]
...
Рейтинг: 0 / 0
29.10.2018, 01:23
    #39724212
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
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.
...
Рейтинг: 0 / 0
29.10.2018, 01:28
    #39724213
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Andy_OLAPВыбирайте AMD Ryzen Threadripper 2990WX - потому что 64 Мбайта из кэша L3 пойдут на работу по пересчету одним ядром и пересылке по шине памяти32 Мб кэша, и пол-шины памяти. Одно ядро не сможет использовать ресурсы обоих модулей.

Впрочем, разговор о железе считаю бессмысленным, пока автор (или ещё кто то) не посмотрит на систему.
Может, там при выполнении всё ядра задействованы, или созданием одного индекса можно будет ускорить выполнение с месяца до часа, кто знает?
...
Рейтинг: 0 / 0
29.10.2018, 09:35
    #39724276
YuriySu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Ребята, спасибо всем Вам.

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

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-у неделю )), то в любом случае нужно переходить к глобальной оптимизации всего алгоритма. К тому же кол-во гипотез будет расти.
...
Рейтинг: 0 / 0
29.10.2018, 10:30
    #39724315
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySuТеперь буду оптимизировать код для замены конструкций, которые принудительно убирают параллелизм.Нужно просто получить трейсом детали выполнения вашей большой процедуры, с сохранением его в таблицу, потом с этой таблицей поработать, получив некий отчёт по выполнению, с полями вида:
имя процедурыномер строкитекст запросаданные о выполнении (Duration, CPU, Reads, Wrtites и т.д.)
Отсортируйте по Duration, и вы сразу увидите узкие места (ну, и по другим полям, что бы смотреть по другим критериям).

Далее вы работаете только с этими стейтментами, блоками кода (допустим, их будет десяток) - наверное, сложно оптимизировать весь код, с изменением алгоритмов и т.д., но не так сложно поправить несколько узких мест.
...
Рейтинг: 0 / 0
29.10.2018, 11:34
    #39724362
AlanDenton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
Может вначале покажете какие у вас задержки на сервере:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
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
...
Рейтинг: 0 / 0
29.10.2018, 12:08
    #39724395
YuriySu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
AlanDenton,

Привет, AlanDenton

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
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



К моему сожалению я пока слабо понимаю информацию в этой выборке.
...
Рейтинг: 0 / 0
29.10.2018, 12:09
    #39724396
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
YuriySu,

Судя по числам, вы сервер каждый день перегружаете?
...
Рейтинг: 0 / 0
29.10.2018, 12:11
    #39724397
YuriySu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частота процессора, кол-во ядер,... ? What the f**k :)) Help please.
TaPaK,

Привет, TaPaK

У меня не сервер, а "рабочий ПК" :))
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Частота процессора, кол-во ядер,... ? What the f**k :)) Help please. / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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