powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллельные вычисления для TSQL.
52 сообщений из 52, показаны все 3 страниц
Параллельные вычисления для TSQL.
    #37193897
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был недавно на семинаре посвященному ЦОД-ам, облакам. Было много рекламы и т.п. Многие утверждали что некоторые ЦОД-ы предоставляют практически безграничные возможности по масштабируемости систем. Лишь один из участников обмолвился о том что для некоторых задач ограничивающим фактором является частота одного процессора.
Действительно пообщавшись с некоторыми участниками я сделал вывод что понимания в этом вопросе нет. Есть отдельные задачи(чаще регламентные) как правило работающие в одном потоке которые если изначально не написать "правильным" образом с использованием параллельных вычислений то серверные ресурсы эффективно использоваться не будут.
У меня возникает вопрос, никто не в курсе как там с планами Microsoft в этом направлении?
Разумеется можно сказать что существующего инструментария для подобных задач хватает. Можно самому открыть нужное количество сессий(потоков), реализовать между ними взаимодействие и т.п. К сожалению не, всегда это применимо.Например когда определенное действие необходимо сделать параллельно в рамках единой транзакции.
К тому же это неудобно.
Итак, у меня несколько вопросов. Кто нибудь сталкивался с подобными проблемами? Есть ли какие то сведения на эту тему от вендора?(если этот вопрос закрытый то могу повторить тему в MSSQL club)
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37193969
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понятно о какой параллельности в рамках одной транзакции вы говорите...
чем не устраивает параллельный план выполнения от оптимизатора DBEngine?
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194012
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не едиными планами выполнения живы:) Хотя в этом плане тоже есть над чем поработать.(насколько я знаю паралелятся только операции со scan)
К примеру есть обработка в которой в цикле выполняются определенные запросы. Выполняются они последовательно а я хочу что бы выполнялись они параллельно(в разных потоках) и допустим логика задачи это позволяет. Т.е. что бы сессия сама открывала связанные с ней дополнительные потоки. Что бы обмен осуществлялся через общую память, что бы выполнение происходило в рамках единой транзакции.
С точки зрения синтаксиса не так много операций нужно добавить.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194025
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуУ меня возникает вопрос, никто не в курсе как там с планами Microsoft в этом направлении?Позиция такая - делать распаралеливание средствами Database Engine, а не давать программистам инструменты.

На мой взгляд, такая задача слишком сложна, кроме того, для эффективного распаралеливания необходима поддержка со стороны, как бы это сказать, языка программирования. То есть парадигма разработки должна давать возможность исполнительной системе выполнять это распаралеливание.

Для существующего T-SQL есть распаралеливание в запросе, ещё можно себе представить распаралеливание для батча (хотя о конкретных планах Microsoft в этом направлении мне ничего неизвестно), но трудно представить распаралеливание средствами Database Engine в случае многих батчей или для многих вызовов хранимых процедур.
МуМуИтак, у меня несколько вопросов. Кто нибудь сталкивался с подобными проблемами? Есть ли какие то сведения на эту тему от вендора?(если этот вопрос закрытый то могу повторить тему в MSSQL club)Нужно формулировать потребности и говорить об этом Microsoft-у

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

Дедушкачем не устраивает параллельный план выполнения от оптимизатора DBEngine?Это же пока возможно только для одного запроса :-(
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194026
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуК примеру есть обработка в которой в цикле выполняются определенные запросы. Выполняются они последовательно а я хочу что бы выполнялись они параллельно(в разных потоках) и допустим логика задачи это позволяет. Т.е. что бы сессия сама открывала связанные с ней дополнительные потоки. Что бы обмен осуществлялся через общую память, что бы выполнение происходило в рамках единой транзакции.

А результаты клиенту как будут возвращаться ? В произвольном порядке ? Что делать с сайд-эффектом ?
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194064
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GloryА результаты клиенту как будут возвращаться ? В произвольном порядке ? Что делать с сайд-эффектом ?Результаты в порядке их возникновения. Ну, конечно, вменяемый программист не будет выводить результаты в паралельных блоках, если это не надо для программы.

Сайд-эффекты нужно рассматривать конкретно.

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

Никто не говорит, что это сделать просто и это будет добавлено в очередном серрвич-паке :-) , но идея, по моему, хорошая.

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

Т.е. когда на сокете будет сотня ядер, а на сервере тысяча, то выйграет та СУБД, которая к этому будет готова.

Сейчас проблему загрузки пытаются решить, например, переносом логики работы с данными на сервер приложения и использования key-value СУБД

А распаралеливание потоков выполнения (а не только выполнения одного запроса) на урове сервера СУБД позволит оставить работу с данными на нём.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194109
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Glory. Во первых есть ряд задач которые вообще не требуют последовательного выполнения а в результате важно знать выполнились они или нет. Например нужна реструктуризация, или какой нибудь регламентный пересчет огромной БД с большим обилием индексов. Необходимо выполнить апдейт по 200 таблицам. Мне в данном случае важно что бы они выполнились - это первое. А второе что бы выполнились максимально параллельно. Я могу конечно сам разбить их по сессиям. Но если бы можно было включить параллелизм(указать размер пула) и менеджер задач сам бы начал для каждого батча создавать новый поток и выполнять в нем новую конструкцию. Вы скажете блокировки, деадлоки в рамках многопоточности? Варианты есть, решаются в рамках стандартной парадигмы.

Но это конечно несколько надуманный пример. Если интересно могу привести другие примеры, пофантазировать на тему того каким образом можно было бы все это реализовать.
Есть конечно задачи более актуальные. Мне кажется что в TSQL реализовать многопоточность гораздо проще чем в том же фортране. Потому как это язык СУБД ориентированные на данные. К тому же в MSSQL уже есть механизм блокировок.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194134
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет результатов возвращаемых клиенту - здесь все как в классической теории параллельных вычислений. Есть задачи которые могут выполняться параллельно а есть задачи которые выполняются строго последовательно. Результат клиенту должен возвращать один поток. Другое дело что в TSQL можно ставить точки по которым система будет понимать какие операции можно выполнять параллельно а какие нет. Т.е. например параллельно выполняются три запроса заполняя данные в темповые таблицы, затем когда все три выполнились эти данные соединяются посредством четвертого запроса и уже этот результат выводится в виде рекордсета клиенту. Разумеется для решения данной задачи необходимо продумать систему интерфейсов взаимодействия. Будь это переменные или темповые таблицы.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194148
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Основная сейчас проблема это то что подобный код нельзя писать централизованно. Это ухудшает восприятие.(например джоб в котором N задач в каждой из которых я прописываю взаимодействие и т.п.) Второй момент для меня более важный. Нельзя осуществлять многопоточность в рамках одной транзакции- вот это уже никак не обойти.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194431
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуА второе что бы выполнились максимально параллельно.
Я могу конечно сам разбить их по сессиям. Но если бы можно было включить параллелизм(указать размер пула) и менеджер задач сам бы начал для каждого батча создавать новый поток и выполнять в нем новую конструкцию. Вы скажете блокировки, деадлоки в рамках многопоточности? Варианты есть, решаются в рамках стандартной парадигмы.

И чем это будет отличаться от пула коннектов в том же ADO с его асинхронным выполнением множества запросов ?
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194433
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуОсновная сейчас проблема это то что подобный код нельзя писать централизованно. Это ухудшает восприятие.(например джоб в котором N задач в каждой из которых я прописываю взаимодействие и т.п.) Второй момент для меня более важный. Нельзя осуществлять многопоточность в рамках одной транзакции- вот это уже никак не обойти.
CLR, которая использует стандартный пул коннектов ?
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194484
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Glory. Я же уже написал. Удобство написания, простота кода. То есть не хочет программист использовать использовать многопоточность - пускай пишет все по старинке. А если хочет то использует допустим расширенный синтаксис. Но я подозреваю что это текущий трэнд ну или таковым станет через 3-и года максимум.
Ну и чего не хватает из функционала - это выполнять все параллельно в единой транзакции.
Насчет использования распределённой транзакции уже по-моему как то обсуждали.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194505
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То alexeyvg. Я пожалуй подготовлю несколько примеров о том как приходится выкручиваться сейчас и о том как можно было бы сделать. Предложения по синтаксису тоже подготовлю.
Мое мнение что время уже настало. Раньше как то не сильно ощущалось. А теперь когда к примеру на регламентной задаче у клиента на 32-ядерном серваке не используется и 7-и процентов ресурсов уже сильно задумываешься на эту тему. Даже не смотря на то что гипотеза минского толком не работает на большом количестве процессоров все равно ускорение для некоторых задач в разы очень и очень ценно.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194616
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GloryИ чем это будет отличаться от пула коннектов в том же ADO с его асинхронным выполнением множества запросов ?Хочу пояснить.

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

Подход, который сейчас является общепринятым, классическим - переносить всю работу с данными на сервер приложений. Это как бы современный тренд - вплоть до того, что предпочитают запустить много запросов вместо одного: получают список ИД и делают по запросу на каждый ИД.

Мне такой подход кажется неверным - СУБД и разрабатывали как раз для задач обработки данных.

Вот и хочется изменить работу с данными и с потоком управления на СУБД так, чтобы помочь серверу распаралелить обработку.

Ну и хочется всё это делать не из внешней программы, а на сервере. Клиент вызывает интерфейс (хранимую процедуру), сервер обрабатывает (эффективно, с распаралеливаниями), и возвращает результат. Без вынесения логики на сервер приложений.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37194619
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуТо alexeyvg. Я пожалуй подготовлю несколько примеров о том как приходится выкручиваться сейчас и о том как можно было бы сделать. Предложения по синтаксису тоже подготовлю.
Мое мнение что время уже настало. Раньше как то не сильно ощущалось. А теперь когда к примеру на регламентной задаче у клиента на 32-ядерном серваке не используется и 7-и процентов ресурсов уже сильно задумываешься на эту тему. Даже не смотря на то что гипотеза минского толком не работает на большом количестве процессоров все равно ускорение для некоторых задач в разы очень и очень ценно.Спасибо. Надо над этой темой работать!
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195212
AlexCzech
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуНе едиными планами выполнения живы:) Хотя в этом плане тоже есть над чем поработать.(насколько я знаю паралелятся только операции со scan)
К примеру есть обработка в которой в цикле выполняются определенные запросы. Выполняются они последовательно а я хочу что бы выполнялись они параллельно(в разных потоках) и допустим логика задачи это позволяет. Т.е. что бы сессия сама открывала связанные с ней дополнительные потоки. Что бы обмен осуществлялся через общую память, что бы выполнение происходило в рамках единой транзакции.
С точки зрения синтаксиса не так много операций нужно добавить.

Теоретически для распаллеливания SQL-задач создан Service Broker. Практически для каждой задачи надо смотреть, стОит ли огород городить, или стоимость реализации схемы распаллеливания будет дороже, чем выигрыш от ее использования
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195291
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexCzechТеоретически для распаллеливания SQL-задач создан Service Broker. Практически для каждой задачи надо смотреть, стОит ли огород городить, или стоимость реализации схемы распаллеливания будет дороже, чем выигрыш от ее использованияВот в этом и проблема - огород городить. Про обходные варианты понятно - можно Service Broker использовать, джобы, разработать свою систему транзакций...

Но это не будут использовать всегда и везде - слишком сложно.

Вот не зря придумывают всякие OpenMP и Параллельный С++ - это ответ на меняющийся мир :-)
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195382
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик: рассматривание сферического коня в вакууме.

МуМуК примеру есть обработка в которой в цикле выполняются определенные запросы.
Imperative half brain detected.

бла-бла-блаPM flying in Clouds detected.
[CENSORED]
Ссори, возражения есть на все многие предложения. Но скорее всего будет мегасрач.
Да и в написанных словах может быть не то, что хотел передать их автор.

Программировать всегда сложно, серебрянных пуль не найти.
А чё никто не упомянул о Parallel Data Warehouse ?
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195430
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал по ссылке расписывать, к сожалению "реконнект". Извините но,не стану опять повторяться.Сразу скажу,мне не стыдно признаться в незнании чего нибудь. Тем не менее, обвинить кого нибудоь в "оффтопе" или "сферическом коне в вакуме" и кинуть просто ссылку затем- это как минимумм не вежливо! Потрудитесь ответить хотя бы на один вопрос из переписки, желательно насчет распаралелливания в транзакции. Я, извините меня ,практик. Мне не важны парадигмы - мне важен результат. Впрочем как всегда, после длительного разбирательства - все уйдет в архив:(
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195549
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MniorТопик: рассматривание сферического коня в вакууме.Это как?

MniorА чё никто не упомянул о Parallel Data Warehouse ?PDW к данной теме имеет отношение только по совпадению одного слова :-)
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195790
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуЯ, извините меня, практик. Мне не важны парадигмы - мне важен результат.В том то и дело, мне видеться из выше написанного ровно всё наоборот.

alexeyvgMniorТопик: рассматривание сферического коня в вакууме.Это как?Очень просто, много абстрактных слов, мало конкретики.
МуМу говорит "я практик", б.м. так давайте говорить о конкретной задаче, или точнее наборе конкретных задач.
Если их обсуждение уйдёт в срач (в разные подходы и т.п.) значит "проблема надуманная", если нет то тогда "я плохо понял тему/вы плохо описали".
При надуманной В абстрактной проблеме можно уйти в схоластику и множественный подмен понятий.
С ваших же слов:alexeyvgНужно формулировать потребности и говорить об этом Microsoft-у

alexeyvgPDW к данной теме имеет отношение только по совпадению одного слова :-)Хорошо, хорошо. Допустим. Но я продолжаю не фтыкать, в чём суть топика?
В чем отличие напрмиер от того же PDW?

МуМуПотрудитесь ответить хотя бы на один вопрос из переписки, желательно насчет распаралелливания в транзакции.Зачем всё валить в одну транзакцию?! Транзакциомания? Это всеголишь механизм из тысячи.
Только не надо говорить что так проще думать. Если разработчик знает и использует мало механизмов - он убог, настоящий профессионал обязать знать всё и обязан постоянно использовать всё. Тогда ему будет легко использовать любой механизм. И только тогда он объективен.
MS улучши микроскоп, т.к. молотком я пользоваться не умею
- И скорее всего Транзакциомания возникает от непонимания как транзакционность реализована физически. Если понимать, то начинаешь понимать её место среди всех механизмов.
- С другой стороны транзакции бывают как физического так и логического уровня.
- С третьей - транзакция это наплевательское отношение к определению места данного процесса во всей системе.Заверни процесс в транзакцию и плевать на другие процессы, что там они хотят и хрен мы скажем им, что мы хотим.


Ваши параллельные С++ это уже реализовано как раз в параллелизации запросов. Это именно оно и ничего другого. Если считаете механизм убогим скажите MS где и в чём конкретно . Это многого-процессорная масштабируемость.
PDW это многого-серверная масштабируемость. Если задачу можно порезать вдоль, режьте и получайте профит. (Могу ошибаться в PDW, верю абстрактным словам и как Я их понимаю, ещё не щупал )


Зачем всю проблематику задач сводить к разделению на множества процессов?
Задача не может требовать, есть просто несколько вариантов реализаций. Используйте оптимальный на данный момент. Изменяйте при смене условий.

И вообще, не должно быть вычислительных проблем ч.в., БД это не аппликейшн сервер. Мы обязаны всегда уметь распределять задачу во времени и пространстве. Нефиг всё подсчитывать в последний момент/в самом начале, никаких пиковых нагрузок.

Кароче, сферического коня канкретную задачу в студию.

PS: Никого ни в чём не обвиняю, это такой стиль повествования, в воздух, всем и никому конкретно. О сраче предупреждал.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195807
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Mnior. Ну например задача ускорения репликатора(самописного). Есть большая входящая очередь состоящая из простейших конструкций(insert,update,delite). Что бы система отставала минимально от рабочей необходимо применение изменений на подписчике максимально ускорить. В один поток это происходит значительно медленне чем в N потоков. Отсутсвие возможности распараллелить эти процессы в рамках единой транзакции не позволяет это сделать эффективно.
Ну для начала так.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195809
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только предлагаю, не нужно обвинять сразу в отсутствии опыта, знаний и т.п.:) Попытайтесь вникнуть сначала в проблематику прежде чем обвинять. Эта задача уже решена, только вот решение могло бы быть проще если бы такая возможность была.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195815
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл предупредить. Обсуждать буду задачу, а не как оптимально реализовать одно решение.
Не могу говорить о решении, совершенно не понимая почему именно оно было выбрано в решении задачи.

МуМуНу например задача ускорения репликатора(самописного).штошто?
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195831
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создана система репликации, некий аналог транзакционной репликации от микрософт. Цель задачи - ускорить процесс обмена.
Есть таблица, очередь в которой хранится большое количество записей. Эти записи означают Insert,Update,Delite по первичному ключу определенной таблицы(таких таблиц много). Есть программка которая берет из этой таблицы записи, и на основании их начинает применять изменения. К каждой такой записи соответсвует номер транзакции. Важно что бы изменения применялись в рамках транзакции. Попадаются иногда очень большие транзакции, и хочется ускорить процесс их применения на подписчике. Решение уже готово, но есть недостатки обуслвленные сабжем.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195881
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы будете смеяться, но репликация это механизм, решение некоторой задачи, которая стоит выше. Давайте сразу поднимемся как можно выше.
Данный механизм, как и любой механизм имеет свой набор преимуществ и недостатков - такова его природа, заложенная создателем.
Буквально вчера я расписывал одному разработчику его ошибку, это когда взял N вещей смешал в одну кучу (по обще-коренному слову), а потом применял разделяя по признакам. Запрос работал чертовски долго, запрос был чертовски сложный. Когда задача была расписана и всё разделено всё стало чертовки просто, быстро и кода меньше.
Да, тяжело видеть всю картину вцелом. Но это обязательно.


МуМуК каждой такой записи соответсвует номер транзакции. Важно что бы изменения применялись в рамках транзакции.Вот, есть логическая часть - считать набор изменений единым, а есть физическая TRANSACTION. С чего вы взяли что это единые/неделимые вещи?!
Транзакции работают всё равно через состояния. Можно пометить состоянием любую логическую сущность, разделяя во времени процессы и меняя состояния. Остальная часть системы должна на эти состояния адекватно реагировать.

Почему записи имеющие единую "транзакцию" лежат разделено?
Почему записи просты (только I/U/D по одной строке)?

МуМуПопадаются иногда очень большие транзакцииПочему и откуда?
Почему они используют именно этот механизм?

МуМуService Broker использовать - слишком сложноДа задача вообще прям по нему плачет. Не?
SB - чертовски простая вещь.

Ещё не могу понять, у MS уже есть репликация. Возможно (скорее всего) она не к месту для этой задачи, с её текущими возможностями. Может стоит сформулировать вопрос именно в этом направлении.
MS - больше интерфейсов к системе репликаций!Только опять, это пока абстрактно.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37195893
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, ну конечно можно говорить часами, как можно ускорить этот процесс " репликации " и какие заложить в него эвристики (их куча). Решая туже задачу:
Как оптимально распределить решение в пространстве и времени.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196113
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас я занимаюсь больше стратегией и управлением, а раньше в " полях" работал на проектах связанных с повышением производительности и с онлайн обменами большими данными(лично я курировал более 50-и проектов). Эти проекты были у клиентов. То есть системы разрабатывались не мной. Чего и как было исторически меня интересовало мало. Нужно было как правило получить здесь и сейчас результат, в нужный срок и нужный бюджет. Поэтому рассуждения на тему как распределить решения в "пространстве и времени" это оставляем для чистых теоретиков. Я могу так сказать что для системы репликации важен вопрос унификации. Не было как правило времени(бюджета) анализировать как можно изменить функционал клиента или тем более бизнеспроцессы клиента. Система должна быть надежной , легко управляемой и производительной. Есть вполне измеряемые вещи к которым при разработки мы стремились. Например скорость обмеена,время задержки - многопоточность в этом варианте просто жизненно необходима. Я понимаю что можно обойтись другими способами - но это извините, бизнес. Насчет того почему не используем стандартные механизмы? - на это есть своя причина. Но могу сказать так - вели переписку с разработчиками из рейдмонда(некоторые ошибки скидывали). Решение стандартное было разложено просто до винтиков. В том числе я выступал не раз на конференциях и втом числе на MSSQL club на тему типовой репликации. Поэтому не хотелось бы вдаваться в дискуссию почему мы используем свой механизм. Это тема немного другая.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196120
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это была предистория. Теперь по существу.
Во первых по поводу транзакции. Я вам скажу с практической точки зрения. Пускай система работает надежно 99 процентов времени, но потом происходит перезагрузка сервера и т.п. В этом случае есть шанся того что определенная часть "разделенной" транзакции окажется не примененной. Есть конечно свой "лог", есть инструменты для автоматического наката, есть верификация и т.п. но они имеют ряд недостатков. Сервис может почему то не запуститься, "накат" может не пройти потому что уже произошел конфликт и автоматичеки это сделать нельзя и т.д. и т.п. Рассказывать клиенту о всех этих особенностях поверьте дело неблагодарное. Для клиента все просто. На одном севрере данные одни а на другом другие(на некоторый интеравл времени). Все остально его не волнует.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196122
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что касается записей.Почему они находятся в разных записях? Принцип простой. Автоматически генерируются триггеры. Эти триггеры добавляют записи в таблицы об измененных данных.Можно было бы писать в блоб поля и т.п.(вплоть до того что даже сжимать сразу) но это влияло бы на основную систем что не допустимо.(система репликации должна отбирать производительности не более 10%). Для создания своей транзакционной репликации других инструментов от микрософт нет.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196129
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь что касается длинных транзакций.
У клиента есть мониторинг как производительности, так и репликации. Система постоянно оптимизируется. Но тем не менее иногда у него возникают действительно "большие" транзакции. Т.е. допустим происходит в транзакции куча апдейтов за длительный интервал времени. На основную систему это не влияет потому как блокировок не создает. В ряде случае апдейты идут массовые а репликатор их иногда применяет по записи в силу объективных причин(и давайте на эту тему хотя бы не спорить а то спор вообще уйдет в другую тему). Если эти изменения применять в одном потоке - подобная транзакция введет большое время рассинхронизации. Что разумеется не приемлимо.
В общем почему длинные транзакции ? - Так сложилось, объективно нужно и самое главное я на это влиять не могу!
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196141
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет Service Broker. Извините, но я нигде не говорил что применять его сложно! Посмотрите переписку , эта фраза принадлежит не мне.
Давайте рассмотрим следующий пример.
Обращается ко мне клиент. Вот система тормозит. Включаем мониторинга и т.п. Проводим линейную оптимизацию(индексы, запросы и т.п.) Сразу скажу, что структуру как правило менять существенно нельзя- нет времени, нет бюджета.
Затем видим что основной вариант для оптимизации это распараллеливание(как правило для регламентных задач).
Предположим что весь код на T-SQL. На данный момент после этого необходимо бить код на части после чего он становиться не читабельным и плохо споровождаемым. Реализовывать координатор соединений. Реализовывать интерфейсы взаимодействия. Предусматривать вопросы некорректной обработки, аварийных отключений и т.п.
Что было бы идеально. Для этого кода включаем специальный режим. Далее использую синтаксис от MSSQL указываем в коде что можно паралеллить а что нельзя, прописываем интерфейсы(но они будут более унифицированными), указываем параметры для координатора потоков.(сколько максимально потоков открывать, и т.п.). Вообщем была бы большая унификация а также вопросы связанные с координацией потоков мог бы для ряда задач взять на себя MSSQL. Ну и про транзакции не забываем, все накатывал-откатывал бы автоматом сервер. Подобные проблемы редко - но выстреливают.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196242
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуПоэтому рассуждения на тему как распределить решения в "пространстве и времени" это оставляем для чистых теоретиков.Вы совершенно неправы. Это ежедневная, ежесекундная кропотливая работа. Работа практически из этого и состоит без отлагательств.

А вот теоретики пусть и занимаются унификацией и мага-универсальными монстрами системами. Неспеша, за чашечкой.

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

МуМуЯ понимаю что можно обойтись другими способами - но это извините, бизнес.А вы, как обычный менеджер, хотите всё из ничего. Простая идея, топорная реализация. Старая песня. Лопату ему подавай, понимаешь.

Боже сколько воды, соплей, кичась налево и направо, мать родная.
И пока мы видим один лишь невразумительный пример.
МуМуЭто была предистория. Теперь по существу.Сразу бы.

МуМуВо первых по поводу транзакции. ... но потом происходит перезагрузка сервера и определенная часть "разделенной" транзакции окажется не примененной.О боже, не держите нас за идиотов. Уже 120% понятно что вы нифига не врубились. Не верится что вы написали такое.
После перезагрузки состояние системы будет ровно такой же, как до падения сервера - полностью. И части этих кусочков продолжатся сначала восполняя всю мозаику до конца.
Меня больше всё ужасает то, что вы приводите аргументы которые применимы к любому подходу. Какая разница, не прошла одна транзакция и ста или ваша одна единственная.
Пост пролетел как фанера. Перейдём к следующему.

МуМуЧто касается записей.[censored]
Что вы скажете об этом .
Надеюсь я правильно понял, читая между строк.
Ощущение, что вы пытаетесь конкурировать с самим MS на их же поле. Зачем?! Если вас не устраивает какая-то мелочь в их продуктах (репликация/зеркалирование/нотификации и т.п.) - требуйте её, а не эти непонятные "параллельные вычисления".

МуМуТеперь что касается длинных транзакций.
.. (и давайте на эту тему хотя бы не спорить а то спор вообще уйдет в другую тему)Баттхёрт детектед. Предупреждал же в начале. Кароче объективностью пример не страдает.МуМуВ общем почему длинные транзакции ? Так сложилось, объективно нужно и самое главное я на это влиять не могу!Именно! Не стоит теперь требовать физически невозможного, при заявленных условий. Слава богу MS не шла по этому пути. Их механизм работает приемлемо. Хотя конечно же есть свои ограничения, но это уже к спецам.

Ставим линию разрыва, из-за бесполезности всего выше сказанного.
------------------------------------------------------------------------------------------------------------

МуМуСразу скажу, что структуру как правило менять существенно нельзя- нет времени, нет бюджета.
Затем видим что основной вариант для оптимизации это распараллеливание(как правило для регламентных задач).Старая песня:
Две крайности: существенные изменения <-> надуманные оптимизации. И ничего между ними. А между ними то бесконечность.
Вы что эти 50 проектов в режиме copy-paste делали?
Нет, я конечно могу понимать реалии корпоративной убогости систем, но если проект не имеет шансов, туда ему и дорога.
Ведение проектов это вам не в приферанс играть. Хотите выжить, думайте заранее, какие проблемы могут возникнуть заранее известно ещё на стадии проектирования.

МуМуНа данный момент после этого необходимо бить код на части после чего он становиться не читабельным и плохо споровождаемым...Говно-менеджмент?

МуМуЧто было бы идеально.
Указываем в коде что можно паралеллить, указываем параметры для координатора потоков.Воду вырезал. Хотя опять нет конкретики.
Эм. И к чему пришли.
MS уже параллелит что можно, остально нельзя физически (или обращайтесь к оптимизаторам генератора планов).

Если поднятся на уровне блоков, SB работает именно так, как вы там пишете э... "интерфейсы/координаторы"

Слово Указываем в коде означает что логика проекта поднята, т.е. разрабы понимают модель системы, проблемные места. (Не?) Тогда зачем растрачивать буджет и время на оттягивание неизбежного , а не тупо решить проблему?!

Слишком абстрактно представляете, наделяя магической силой. Вот распишите прям тут этот ваш параллелизованный интерфейс. Почемуто уверен, что в в 80% случаев он будет совершенно неприменим на практике. Вам то не знать реалии говно-кода. Ключевая фраза: критерии параллелизации . Им негде взяться в конкретном месте кода, иначе см. 1.п.

Если я правильно понял вашу задачу, как автоматизация продления жизни говно-кода . Могу сказать, смотря в эту абстрактность, что написать такую обёртку использующую SB со всеми транзакциями вроде не сложно, и будет вам унификально. Но требовать это из каропки от MS идиотизм. Вы можете это попросить у оракакла, но мелкие на это не поддадутся (во всяком случае так было до этого), тем более что никакого профита. Они не будут рыть яму себе, повышая уровень мелких некомпетентных клиентов. Нет денег на нормальный IT - сдохни, но мы не благотворительная компания.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196298
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Mnior
Извините но на демагогию у меня нет времени. Вы говорите про конкретику, но ваши сообщения сводятся к тому что не нужно писать говнокод и т.п, я привильно понимаю? То есть вы смотрите со стороны исключительно разработчика которого вопросы бизнеса а в частности рентабельности и прибыли не интересуют абсолютно. У нас работают специалисты высокого уровня, тем не менее в некоторых программных продуктах пишется код мягко говоря не самый "оптимальный". В большинстве случаев это делается сознательно, потому как еще есть сроки за которые спрашивают. Есть еще бизнесплан с предпологаемой жизнью продукта. Поэтому утверждение о том что каждый разработчик должен писать "идеалный" код оставим для идеалистов. В тех же штатах очень много устаревших и тем не менее крупных и работающих ИТ систем. Их почему то никто не торопиться менять. Потому как затраты очень и очень большие, и простои от остановки ИТ системы в переходный период период могут вообще закрыть бизнес.
Я вам привел конкретные аргументы, от вас таковых не получил. Поэтому предлагаю вам в моей ветке больше не дискутировать. Будем считать что я вам не смог объяснить. А примеры кода с своими предложениями, как я уже говорил, обязательно выложу, Если будет интересно потом почитаете.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196321
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MniorПри надуманной В абстрактной проблеме можно уйти в схоластику и множественный подмен понятий.
С ваших же слов:alexeyvgНужно формулировать потребности и говорить об этом Microsoft-уНу да, нужно формулировать (описывать бизнес сценарии и т.п.) Мы же только начали, пока есть только есть ощущения о том, что всё это необходимо, но больше ничего нет. Вот и начинаем формулировать.

MnioralexeyvgЭто как?Очень просто, много абстрактных слов, мало конкретики.
МуМу говорит "я практик", б.м. так давайте говорить о конкретной задаче, или точнее наборе конкретных задач.
Если их обсуждение уйдёт в срач (в разные подходы и т.п.) значит "проблема надуманная", если нет то тогда "я плохо понял тему/вы плохо описали".Не все согласны с вашим тезисом о том, что работа с бизнес-логикой должна быть обязательно вынесена из СУБД. Собственно, все ваши возражения по теме относятся только к этому.

Конечно, если БЛ выносить наружу, то проблем нету - на сервер СУБД посылаются только одиночные запросы, сервер их прекрасно распаралеливает, всё остальное (основное) распаралеливание берёт на себя сервер приложений.

Но если логика работы с данными лежит в СУБД, то ситуация другая.
К серверу идут запросы (вызовы ХП). Запросы средней сложности, ракспаралеливаются не всегда, к тому же распаралеливание ограничено теоретически (не всегда запрос можно будет эффективно распаралелить на тыщу потоков).

Вполне можно расщепить потоки ещё в несколько раз.

MniorВ чем отличие напрмиер от того же PDW?Как минимум, почему тут не рассматривается PDW - потому что это не специальная паралельная версия сиквела. PDW - это программно-аппаратный комплекс, сделанный под конкретную область применения на конкретном оборудовании.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196327
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуЯ вам привел конкретные аргументы, от вас таковых не получил. Поэтому предлагаю вам в моей ветке больше не дискутировать.Как я понял, аргумент Mnior такой - не нужно программировать на сиквеле.

Сиквер должен выполнять только одиночные запросы, всё остальное должен делать клиент или сервер приложений.

При таком подходе действительно ничего менять не надо, всё и так хорошо.

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

И вот как раз совершенствование средств работы с БЛ (не только распараллеливание) я считаю важной задачей для разработчиков сиквела.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196586
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу... но ваши сообщения сводятся к тому что не нужно писать говнокод и т.п, я привильно понимаю?Нет!
Есть говно-код написанный недо-программистом и говно-код написанный профессионалом (неоптимальный). Разница в том, что во втором случае известно где и куда и как копать в сторону оптимизации и у него "остаётся место для разворота".
Т.е. ПМ управляет будущей архитектурой системы согласно составленным планам и срокам. Если этого нет, то значит даже и тупой говно-код скорее всего пишется не в сроки.
Планы и сроки не заканчиваются сдачей проекта, туда включены и планы и сроки и методы по его допиливанию. Этим бизнес и управляет.

А когда ВНЕЗАПНО прибегают, у нас бяда, Houston, we have a problem. А если ещё при этом бюджет нулевой. То повторяю - ничего не поможет, хоть имея 100500 механизмов включая этот. Это было конкретно описано в конце моего предыдущего поста.

МуМуИх почему то никто не торопиться менять. Потому как затраты очень и очень большие, и простои от остановки ИТ системы в переходный период период могут вообще закрыть бизнес.Это что агрумент по теме? Даже если появится этот конь, то только в следующей версии. А у них системы далеко не на 2000х серверах, если ваабще на MS-е.

МуМуЯ вам привел конкретные аргументы, от вас таковых не получил.Вот давайте не надо. Вы привели аргументы. Они все контр-аргументами отброшены. Хотя я почемуто замечаю, что вы их словно не читаете или боитесь признать.
На какой аргумент не отвечено конкретно?

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

МуМуБудем считать что я вам не смог объяснить.Нет, дорого мой, это значит вы никому не объяснили. Этот топик прочитают тысячи, не надо отводить каждого к частному случаю.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alexeyvgНу да, нужно формулировать (описывать бизнес сценарии и т.п.) Мы же только начали, пока есть только есть ощущения о том, что всё это необходимо, но больше ничего нет. Вот и начинаем формулировать.Хоть вы понимаете, что мы имеем реально на руках. Спасибо хоть за это.
Считаем аргумент с конём засчитан?

Нужно не просто предполагать что что-то там можно распараллелить и мечтать об этом, нужно чётко знать как это можно сделать во всех встреченных местах кода. Это раз. И чётко высчитать, что затраты на изменение кода в параллельность дешевле чем изменение кода в оптимальность или другие имеющиеся N подходов, притом с затратами бизнеса и на будующее. Это два.

alexeyvgMniorЕсли их обсуждение уйдёт в срач (в разные подходы и т.п.) значит "проблема надуманная", если нет то тогда "я плохо понял тему/вы плохо описали".Не все согласны с вашим тезисом о том, что работа с бизнес-логикой должна быть обязательно вынесена из СУБД. Собственно, все ваши возражения по теме относятся только к этому.Вы совсем не угадали. Уж скорее ярый фанат оставлять всё на сервере.
Но не люблю крайности. Да, сейчас модно вообще всё выносить из СУБД, и меня крайне бесит, когда это пропагандируется как единственный верный путь. Просто постоянно встречаются случаи когда пихают в сервер всё подряд и логику конкретного клиента.
Архитектура системы требует расслоений. И в сиквеле должна быть сосредоточена бизнес-логики логической модели, т.е. отражение логической модели на физическую (схему данных). Всё что выше интерфейса логической модели системы должно быть вынесено в сервер аппликейшн и клиент, там сосредоточена логика взаимодействия и отображения.

Так что ваши дальнейшие предположения были не верны.

alexeyvgк тому же распаралеливание ограничено теоретическиИменно.
Давайте я за вас сформулирую:
Существую вещи которые можно распараллелить, но автоматизировать это нельзя. Замечательно. Но я привёл аргументы выше:
Это вопрос к оптимизаторам планов

Это всё абстрактно, нужна конкретика и знание модели, бла-конь-бла тут не помогут

Решение ограниченно и плохо применимо. Ключевое слово: критерии параллелизации .

alexeyvgMniorВ чем отличие напрмиер от того же PDW?Как минимум, почему тут не рассматривается PDW - потому что это не специальная паралельная версия сиквела. PDW - это программно-аппаратный комплекс, сделанный под конкретную область применения на конкретном оборудовании.Ну я понял уже, что всё сводится к препарированию трупов.

Повторю ещё одну вещь, которую я вижу постоянно. Если вы что-то делаете очень много раз, вы в итоге это делаете в 100500 раз быстро и качественно. Что до этого считалось немыслимо дорого по сравнению с другими вариантами, после считается наоборот - непомерно дёшево. Поэтому нет одинаковых бизнес планирований. Поэтому чаще выступаю за оптимизацию кода, а не за закрытие на это глаза.
Если вам надо выиграть время, SB должен помочь, как временное решение.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196611
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То minor. Я понял ваши аргументы но меня они не убедили, как впрочем и мои видимо вас. Еще раз повторюсь, если приложение легко оптимизируется линейно - это самый правильный путь. Я говорю про класс задач в которых только линейной оптимизацией не справиться. Сейчас такие задачи решаем и решаем успешно, правда как правило управление распараллеливанием реализовывается на уровне приложения. Чего не хватает? Один из примеров я уже написал и напишу его еще раз ниже.(насчет распараллеливания в одной транзакции)
Что еще не хватает? Того что бы прийти к клиенту посмотреть только T-SQL код - линейно оптимизировать его а если уже дальше не получается взять и с минимальными трудозатратами изменить таким образом что бы использовалось распараллеливание. Причем целиком и полностью на T-SQL, что бы это было читабельно и что бы можно было бы легко сопровождать клиенту. Вы скажете что слишком вообщем? - Я уже сказал что чуть позже(думаю в течении недели) я напишу конкретные предложения с конкретными примерам.

Напишу один из примеров - конкретно что мне нужно.
Есть открытых N сессий. Я указываю конструкцию по которой говорю что все эти сессии нужно связать(например spid-ы передаю, и какой нибудь уникальный идентификатор "обобщенной сессии"). После этого все блокировки в рамках сессий воспринимаются как общие, все изменения этих сессий идут в единой транзакции(т.е. если откатывается одна то откатываются все остальные) и что самое важное - они могут выполняться параллельно.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196620
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 99% случаев желание "распараллелить" проистекает от нежелания оптимизировать, в частности - хотя бы немного подумать об индексах, о формальной оптимальности кода и т.д.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196624
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MnioralexeyvgНу да, нужно формулировать (описывать бизнес сценарии и т.п.) Мы же только начали, пока есть только есть ощущения о том, что всё это необходимо, но больше ничего нет. Вот и начинаем формулировать.Хоть вы понимаете, что мы имеем реально на руках. Спасибо хоть за это.
Считаем аргумент с конём засчитан?Об этом и говорили с самого начала - да, сейчас только первый этап.

Что, если возникает идея, то её нельзя озвучить, пока не появился нормальный востребованный продукт, её реализующий???

Кстати, непонятно, почему вы так-же яростно не выступаете против других внедрений распараллеливания, например в PDW или в SQL Azure??? Видимо, просто ничего уже не поделать, продукты продаются и остаётся только горько рыдать? :-)

И зачем покупают этот PDW за 10 лимонов, нужно просто сделать "изменение кода в оптимальность или другие имеющиеся N подходов" :-)

MniorНужно не просто предполагать что что-то там можно распараллелить и мечтать об этом, нужно чётко знать как это можно сделать во всех встреченных местах кода. Это раз. И чётко высчитать, что затраты на изменение кода в параллельность дешевле чем изменение кода в оптимальность или другие имеющиеся N подходов, притом с затратами бизнеса и на будующее. Это два.Есть совершенно конкретное предложение по повышению производительности путём распаралеливания потока выполнения.

Этот путь не заменят никакие другие подходы (кроме распараллеливания на уровне сервера приложений). Нету никаких "другие имеющиеся N подходов". Точнее, может и есть, но как быть, если всё что можно уже сделано?

MniorПовторю ещё одну вещь, которую я вижу постоянно. Если вы что-то делаете очень много раз, вы в итоге это делаете в 100500 раз быстро и качественно. Что до этого считалось немыслимо дорого по сравнению с другими вариантами, после считается наоборот - непомерно дёшево. Поэтому нет одинаковых бизнес планирований. Поэтому чаще выступаю за оптимизацию кода, а не за закрытие на это глаза.
Если вам надо выиграть время, SB должен помочь, как временное решение.Теперь, значит, ваше предложение - просто нужно писать код оптимальнее, а выпуск многоядерных серверов прекратить :-)

Бывает, знаете, люди пишут код не хуже вас (представляете???), и он вполне оптимальный.
Но вот беда - потоков выполнения от клиента только 10 (ну просто пользователей столько), а ядер 100, и загружается только десятая часть ресурсов.

А через 10 лет ядер в типичном дешёвом сервере будет 1000, и будет ещё хуже. Сейчас то обычно для потока тяжёлых запросов делается распаралеливание на уровне запроса, но при увеличении ядер это будет работать всё хуже и хуже.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196626
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То locky. Поверьте это не про меня. У компании более 250-и проектов по оптимизации у крупных корпоративных клиентов. Задача линейной оптимизации поставлена на поток. Есть свои средства мониторинга которые показывают сколько дает вклад в нагрузку конкретная строчка кода(это поверьте не так уж тривиально) и многое,многое другое. Есть люди которые занимают отдельно вопросами оптимизации индексов и запросов, есть которые занимаются вопросами разработки оптимальной структуры, блокировочными механизмами, моделирования нагрузки и т.д. и т.п. (Есть даже экспертная система который парсит переданные из мониторинга тяжелые запросы после чего предлагает возможные варианты оптимизации запросов автоматом.) Просто есть класс задач который после линейной оптимизации кроме как распараллеливанием эффекта существенного не дает.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196638
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyв 99% случаев желание "распараллелить" проистекает от нежелания оптимизировать, в частности - хотя бы немного подумать об индексах, о формальной оптимальности кода и т.д.Ну может и не в 99%, вы всё таки немного преувеличиваете :-)

И главное, (МуМу тоже писал) - сиквел покупают и используют совершенно не для написания оптимизированного кода, а для получения бабла. Только! для получения денег, больше ни для чего.

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

И тот, кто поступит по другому - будет последний непрофессионал. Профессионал принимает решения исходя из требований бизнеса, а не исходя из красивости кода.
А тот, кто предоставит для этого инструменты, и будет лидировать на рынке СУБД :-)

Это не значит, что весь код должны писать студенты и что обязательно они сделают плохо, но очень часто бывает именно так и часто это правильно.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196642
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

значит нужно развивать инструменты для формального анализа кода для t-sql, коих увы на рынке нет
для того же шарпа есть решарпер, который мала-мала, но кривые и косые места (да, не все) показывает и подсказывает.
Да и, если мне не изменяет маразма, для си/шарпа/паскаля было много тулов по статическому анализу кода
а для скуля последним был MSBPA, для 2000, кажется.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196901
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyзначит нужно развивать инструменты для формального анализа кода для t-sql, коих увы на рынке нетНе поможет. Потому что скульный код - это не только код сам по себе, но и все те данные, которые он обрабатывает.

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

Вот тут и начинаешь думать, нужна ли эта целостность с этой общей транзакцией, или может ну ее, джобами параллельно зафигачим?..
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196943
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

скажем так.
тот факт, что нельзя однозначно и гарантированно покрыть 100%, и даже 90% кодо-случаев вовсе не означает, что не надо стараться/пробовать покрыть хотя-бы 30-40% случаев.
потому как случаи бывают крайне разные, иногда даже вопиющие.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37196981
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyзначит нужно развивать инструменты для формального анализа кода для t-sql, коих увы на рынке нетС этим не спорю - думаю, такие средства помогут очень многим.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37197122
Mnior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
от МуМуМуМуЕще раз повторюсь, если приложение легко оптимизируется линейно - это самый правильный путь. Я говорю про класс задач в которых только линейной оптимизацией не справиться.
Вы опять не догоняете. Проблема не в параллелизации, не надо сводить из-за эмоций к простому за-против. Наоборот, я за параллелизацию.
Проблема не в этом. Самое главное достижение бизнеса, это формализация. Да именно бизнеса, вы не ослышались! Чем более формализован код, тем более он управляем. MS в отличие от оракакла это понимает и не даёт (скажем так - ставит палки в колёса) писать не формализованный код и не даёт ему шансов для выживания. Формализованный код можно распараллелить автоматизированно т.к. формальность даёт получить критерии парралелизации, и вообще управляем. Вот соответственно уже есть механизмы в генераторе планов и таком инструменте как PDW.

Если вам дать написать неправильно, императивно (аля ASM) этот код мёртвый, его нельзя будет оптимизировать без его изменений и без разбирательства в нём. А если он формализован, и не размазан миллионами микрокоманд по тысячам процедур, а собран в единые запрос, то скуль составит более оптимальный план чем это сделает средний программист со всеми параллельностями на любом уровне. Только одна бяда - средний программист не умеет писать формализованно, как и мыслить. Но другого пути просто нет.

МуМус минимальными трудозатратами изменить таким образом что бы использовалось распараллеливание.Да хватит вам мечтать. Оставьте это нобелям, как нужно строить системы. Вы что спец по компиляторам и архитектурным решениям?!

МуМуЕсть открытых N сессий. Я указываю конструкцию по которой говорю что все эти сессии нужно связать(например spid-ы передаю, и какой нибудь уникальный идентификатор "обобщенной сессии"). После этого все блокировки в рамках сессий воспринимаются как общие, все изменения этих сессий идут в единой транзакции(т.е. если откатывается одна то откатываются все остальные) и что самое важное - они могут выполняться параллельно.Вы что специалист по ядру скуля, по кешированию планов, по оптимизатору блокировок. Явно видно что нет, так что не морочьте голову.

То что вы привели полный идиотизм. Зачем гдето что-то разделять, чтоб потом мучатся это собирать воедино. И бред и запутывание километрами ненужного кода. Передайте данные целиком логически, а там провайдер и сервер пусть сами параллелят. Кстати вы о технологии MARS что-то знаете? Это так к слову.

МуМуПоверьте это не про меня. ...Сладки речи их ...
Да хоть семь пядей во лбу. Аргумент есть истина. А "авторитет" это этажом выше.
Можно сказать, что "слишком сказачно, чтобы быть правдой". Но если был бы спец, уже бы всё по полкам разжевал, а вы тупо проигнорировали все аргументы, и ни на один не ответили. Вы что засланец, продвигаете ложные направления.
locky, спасибо что присоединились.

от alexeyvgalexeyvg, я не выступаю против. У меня просто на кое что аллергия.

alexeyvgЭтот путь не заменят никакие другие подходы (кроме распараллеливания на уровне сервера приложений). Нету никаких "другие имеющиеся N подходов". Точнее, может и есть, но как быть, если всё что можно уже сделано?
Это называется просто -непрофессионализм. Любая посильная проблема решаема, потолка нет.
Если система не параллелится, это либо невозможно физически, либо ваш код настолько убог что система не делает это сама.
Из моего опыта десятков корпоративных систем я не видел практически ни одной нормальной, они убоги на столько, что пути оптимизаций миллионы. И стоит проблема не в оптимальности, а низком уровне современных програмиздов и наплевательском отношении бизнеса.
Код можно совершенствовать бесконечно, было бы время и деньги, инструментов хватает, даже более того их настолько много, что это начинает многих путать. И кидаются на новое как красную тряпку.
Инструменты параллелизации уже есть и ещё будут, но данный вид это шаг назад.
Повторяю ещё раз, чтобы там говорить о новых механизмах, нужно понимать всё до уровня ядра и всей системы вцелом. В этом топике этим даже не пахнет.

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

alexeyvgИ главное, (МуМу тоже писал) - сиквел покупают и используют совершенно не для написания оптимизированного кода, а для получения бабла. Только! для получения денег, больше ни для чего.Вот нинада ля-ля. У вас не будет аргументов на это.
Оракакл намного дороже и менее пристрастен к формализации. А если говорить про бизнес, то вокруг тысячи контор впаривающие говнокод на нём. Для MS систем такого намного меньше, и спасибо ему за это. Ой, ща такой срач начнётся.
Только не надо обобщать, у кого руки растут из правильного места уже неважно оракл это или MS. Просто пишу что вижу у себя в регионе, и мысли почему это так.

Гавриленко Сергей Алексеевичlockyформального анализа кода для t-sql... две большие таблицы лежат в разных файлгруппах ...Спеца видно издалека, хоть Сергея Алексеевича не знать нельзя. Ха-ха, теперь будем думать его мозгами.

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

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

дополнительные направления в оптимизации блокировок

дополнительные направления в оптимизации запросов

По сути мы то и делаем в коде, что логический набор режем в последовательность команд по физических данным (таблицам). Зачем?!
Гавриленко Сергей Алексеевич, вы гений. Сразу видно что конкретно делать. Для начала (будем подводить мелкими шажками ) предложить MS такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
WITH PARALLEL Statement1 AS (
	INSERT ...
), Statement2 AS (
	UPDATE ...
), StatementN AS (
	DELETE ...
);
Естетственно, что с кучами ограничений.
С другой стороны, а нафиг менять код, уже пусть параллелят имеющийся. Факторы ограничений известны: изменяемые переменные ...
Но нижеследующее повествование отлагает.
С другой стороны если на эти две таблы навешаны триггеры, то их логика может зависеть от последовательности изменений. Т.е. код потенциально может вести себя неадекватно.
Только если эти изменения раздельны, то данные будут разные от случая, а если изменения связаны одной командой, то данные всегда есть в наличии - цельные (см MERGE), но нет инструментов регулирования последовательности запуска триггеров, а это очень старая больная тема (см ещё OUTPUT).
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37368656
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что такое большая транзакция?
это сотня мегабайт данных или миллион строк или её длительность час.
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37368699
_r2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #37368701
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Параллельные вычисления для TSQL.
    #39883860
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgА через 10 лет ядер в типичном дешёвом сервере будет 1000... Интересно, порой, читать старые топики...
...
Рейтинг: 0 / 0
Параллельные вычисления для TSQL.
    #39883880
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracs,

Еще полтора года ждать
...
Рейтинг: 0 / 0
52 сообщений из 52, показаны все 3 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллельные вычисления для TSQL.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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