Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ling2sql vs dynamicStored procedures  [new]
xDemoSphen
Member

Откуда:
Сообщений: 24
Здравствуйте,

есть таблица в базе, в которой десятки миллионов записей.

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

Заранее спасибо.
3 апр 12, 12:52    [12356408]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
xDemoSphen
Member

Откуда:
Сообщений: 24
Имеется ввиду именно с точки зрения производительности. Спасибо.
3 апр 12, 12:54    [12356434]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
xDemoSphen, поглядите что получается в кодогенераторе ling2sql, ну а дальше принимайте решение. Для сферического запроса в вакууме ling2sql годится вполне.
3 апр 12, 13:47    [12356909]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
xDemoSphen
оставить linq запросы или написать динамические хранимки в базе


А почему динамические? Имеется ввиду динамический SQL?
3 апр 12, 14:35    [12357414]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
xDemoSphen
Member

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

SELECT TOP <number of rows>
<list of selected columns>
FROM
dbo.[table1]
WHERE
[Column1] <operator> '<some text>'
AND [Column2] <operator> '<some text>'
AND [Column3] = '<some text>'
AND [Column4] like '%<some text>%'
AND [Column5] like '%<some text>%'
AND ([ColumnData] > <start> and [ColumnData] < <end>)
ORDER BY [<selected column>] <desc if ticked in UI>;


Jovanny,

да, динамический sql
3 апр 12, 15:02    [12357704]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
xDemoSphen
В приложении динамически формируются linq запросы к таблице.
То есть прямо формируется текст на C#, компилится и выполняется? Или приложение формируюет T-SQL запросы? Наверное, второе.

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

Для нагруженного приложения предпочтительней процедуры, больше можно влиять на результат.
3 апр 12, 15:04    [12357724]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
tunknown
Member

Откуда:
Сообщений: 776
xDemoSphen
таблица в базе, в которой десятки миллионов записей.

Число записей не так важно
xDemoSphen
оставить linq запросы или написать динамические хранимки в базе

Параметризация у linq слабовата. Если не включать Forced Parameterization на базе, то непараметризованные запросы могут повлиять на кеш запросов.

Тема довольно обширна, подводных камней много, linq to sql сыроват. На мой взгляд, linq to sql только для мелких (по разным факторам) и ненагруженных (по разным факторам) баз. Зато linq to всё остальное- замечательный синаксический сахар.
3 апр 12, 15:06    [12357758]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
tunknown
linq to sql только для мелких (по разным факторам) и ненагруженных (по разным факторам) баз.

Полностью согласен.
3 апр 12, 15:12    [12357824]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
И думаю, маловероятно, что понадобится динамический SQL.
3 апр 12, 15:14    [12357847]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
xDemoSphen
SELECT TOP <number of rows>
     <list of selected columns>
FROM
     dbo.[table1]
WHERE
     [Column1] <operator> '<some text>'
     AND [Column2] <operator> '<some text>'
     AND [Column3] = '<some text>'
     AND [Column4] like '%<some text>%'
     AND [Column5] like '%<some text>%'
     AND ([ColumnData] > <start> and [ColumnData] < <end>)
ORDER BY [<selected column>] <desc if ticked in UI>;

Мне не нравятся только выделенные строки, т.к. они не используют индексов. В остальном не вижу ничего такого уж выдающегося в запросе.
* Но всеж-таки лучше глядеть запрос который прилетает на сервер (профайлером или трассировкой), потому как не факт, что вышеприведенный запрос не будет еще каким-то образом оптимизирован или преобразован.
** Собственно я не любитель кодогенерации и вского рода ORM, но тем не менее вынужден признать, что в ряде случаев работа с объектами может быть попроще и вполне даже эфективна. Единственное, что нужно в сложных случаях внимательно глядеть на то, что делаете.
3 апр 12, 18:15    [12359615]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
tunknown
Member

Откуда:
Сообщений: 776
kDnZP
* Но всеж-таки лучше глядеть запрос который прилетает на сервер (профайлером или трассировкой), потому как не факт, что вышеприведенный запрос не будет еще каким-то образом оптимизирован или преобразован.

Да, это единственное, что может хоть как-то прояснить, что вообще происходит. Правда, повлиять всё равно ни на что не получится. Например, до хинтов не так просто добраться, только косвенным образом.
kDnZP
** Собственно я не любитель кодогенерации и вского рода ORM, но тем не менее вынужден признать, что в ряде случаев работа с объектами может быть попроще и вполне даже эфективна. Единственное, что нужно в сложных случаях внимательно глядеть на то, что делаете.


ORM в стиле linq to sql очень эффективен пока программист один и весь бизнес код на клиенте, в одной сборке. Если нужно повторное использование sql кода, то ничего лучше view, процедур, функций пока не придумали.
3 апр 12, 23:55    [12361120]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
tunknown
ORM в стиле linq to sql очень эффективен пока программист один и весь бизнес код на клиенте, в одной сборке. Если нужно повторное использование sql кода, то ничего лучше view, процедур, функций пока не придумали.

Вы че-нить слышали про Dynamics AX (Axapta)? Там как раз в X++ linq-подобный синтаксис. Скажем так система не на одного программиста. И в ней нет ни единой процедуры или функции на уровне сервера БД. Создать-то конечно можно, только это будет бантик сбоку. Вся бизнес-логика крутится на Application Object Server. Для отчетов я предпочитаю прямой доступ к БД, но вот для остального 100 раз подумаю, прежде чем писать в обход стандартных механизмов, т.к. можно огрести серьезных проблем.
4 апр 12, 00:05    [12361162]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
tunknown
Member

Откуда:
Сообщений: 776
kDnZP
Вся бизнес-логика крутится на Application Object Server. Для отчетов я предпочитаю прямой доступ к БД, но вот для остального 100 раз подумаю, прежде чем писать в обход стандартных механизмов, т.к. можно огрести серьезных проблем.

Application Object Server- это довольно хорошо, ибо централизация. В принципе, под слова "одна сборка" подходит. Но про Microsoft Dynamics AX пишут
Wikipedia
The LINQ library was first used in Microsoft Dynamics AX 2009 for out-of-the-box SSRS reporting.


PS ссылку про внутренности без процедур интересно бы увидеть
4 апр 12, 00:40    [12361280]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
tunknown
Member

Откуда:
Сообщений: 776
kDnZP
Вы че-нить слышали про Dynamics AX (Axapta)? Там как раз в X++ linq-подобный синтаксис.


Почему-то начиная со слов три примера повышения производительности системы Dynamics AX упоминается "создание на сервере SP".
4 апр 12, 00:49    [12361303]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
tunknown
PS ссылку про внутренности без процедур интересно бы увидеть

Ну я кагбы с Dynamics AX 2009 ежедневно ковыряюсь. Вы таки думаете я не вижу че у нее унутрях?
Окромя таблиц, индексов, чуть вьюх можно найти ровно 1 триггер, который предназначен для взаимодействия с внешним миром, и который хитрым макаром пересоздается в зависимости от того какая СУБД используется.

* Linq-подобный синтаксис в X++ появился давным давно. Ничуть не удивлюсь, что наработки были затем поиспользованы в создании linq.
4 апр 12, 00:54    [12361310]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
tunknown
kDnZP
Вы че-нить слышали про Dynamics AX (Axapta)? Там как раз в X++ linq-подобный синтаксис.


Почему-то начиная со слов три примера повышения производительности системы Dynamics AX упоминается "создание на сервере SP".

Ну немного изысканий и вы поймете чем грозит использования прямого доступа к БД. Можете сразу почитать про номерные серии (sequence) и как они огранизованы в AX.


* Ну и окромя всего прочего, лучше читайте про AX2009 или AX2012, т.к. в приведенной вами статье речь идет о версиях Dynamics AX до 3.0 SP5 включительно.
4 апр 12, 01:00    [12361323]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
tunknown
Member

Откуда:
Сообщений: 776
kDnZP
Ну я кагбы с Dynamics AX 2009 ежедневно ковыряюсь. Вы таки думаете я не вижу че у нее унутрях?
Окромя таблиц, индексов, чуть вьюх можно найти ровно 1 триггер, который предназначен для взаимодействия с внешним миром, и который хитрым макаром пересоздается в зависимости от того какая СУБД используется.


Здесь почему-то говорится про "Существенное снижение производительности после перехода на AX 2009 с Axapta 3.0". Хотя, микрософт может себе позволить тормозной софт, это же не sql server. Покупному софту(и его внедренцам) руководство предприятия многое прощает, зато самописным разработчикам- нет.
4 апр 12, 01:03    [12361332]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
tunknown
kDnZP
Ну я кагбы с Dynamics AX 2009 ежедневно ковыряюсь. Вы таки думаете я не вижу че у нее унутрях?
Окромя таблиц, индексов, чуть вьюх можно найти ровно 1 триггер, который предназначен для взаимодействия с внешним миром, и который хитрым макаром пересоздается в зависимости от того какая СУБД используется.


Здесь почему-то говорится про "Существенное снижение производительности после перехода на AX 2009 с Axapta 3.0". Хотя, микрософт может себе позволить тормозной софт, это же не sql server. Покупному софту(и его внедренцам) руководство предприятия многое прощает, зато самописным разработчикам- нет.

Я не совсем врубаюсь, что вы мне хотите доказать? Не считаете ли вы что несколько странно расказывать разработчику под AX2009 чего система умеет, а чего нет и т.д.?

Про то что руководство прощает, а чего не прощает мне кагбы тоже рассказывать не надобно, потому как это даже не смешно. На всяк случай уточню - я штатный программер, внедренцы были совсем другая контора. И мне терь с тем что есть - жить и работать долго, посему вариант "Главное сдать, а дальше хоть трава не расти" в моем случае совершенно не работает.
4 апр 12, 01:14    [12361356]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
tunknown
Member

Откуда:
Сообщений: 776
kDnZP
Не считаете ли вы что несколько странно расказывать разработчику под AX2009 чего система умеет, а чего нет и т.д.?

Я не знаю, что именно умеет эта система. Однако, поверхностный поиск по интернету выдаёт негативные отзывы о производительности. Это произошло при переходе на новую версию, в которой впервые применили linq подобный ORM(не обязательно из-за него).

Вложив большие средства в софт и в сервера можно получить определённый отклик, но не обязательно соответствующий затратам. Ваш опыт никак не говорит о том, что применение в самописном двухзвенном проекте linq 2 sql принесёт однозначный выигрыш. Dynamics AX всего лишь демонстрирует факт, что микрософт может себе позволить применять такой подход. Они получают определённую гибкость заплатив за это производительностью и десятками(?) тысяч человекочасов на разработку трёхзвенки.
4 апр 12, 01:26    [12361369]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
tunknown
Я не знаю, что именно умеет эта система. Однако, поверхностный поиск по интернету выдаёт негативные отзывы о производительности. Это произошло при переходе на новую версию, в которой впервые применили linq подобный ORM(не обязательно из-за него).

Глупости. Я вам про это выше со ссылками уже писал.

tunknown
Вложив большие средства в софт и в сервера можно получить определённый отклик, но не обязательно соответствующий затратам. Ваш опыт никак не говорит о том, что применение в самописном двухзвенном проекте linq 2 sql принесёт однозначный выигрыш. Dynamics AX всего лишь демонстрирует факт, что микрософт может себе позволить применять такой подход. Они получают определённую гибкость заплатив за это производительностью и десятками(?) тысяч человекочасов на разработку трёхзвенки.

Глупости еще раз. Без комментариев. Но вы вообще знакомы с ERP-системами?
4 апр 12, 02:07    [12361415]     Ответить | Цитировать Сообщить модератору
 Re: ling2sql vs dynamicStored procedures  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
tunknown
Я не знаю, что именно умеет эта система. Однако, поверхностный поиск по интернету выдаёт негативные отзывы о производительности. Это произошло при переходе на новую версию, в которой впервые применили linq подобный ORM(не обязательно из-за него).

Боюсь что большинство информации на тематических форумах посвящено именно проблемам и их решению.
У человека всё с системой хорошо? Он мирно спит себе на кушетке и никто про него не знает.
У человека не всё с системой хорошо? Он постит по форумам, ищет решения, всё такое.

"Истории успеха" можно почитать разве что на сайтах производителей :)
4 апр 12, 02:43    [12361439]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить