powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / использование хранимых процедур
25 сообщений из 343, страница 1 из 14
использование хранимых процедур
    #36270589
гуня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотел бы узнать какой прирост производительности дает использование хранимых процедур. интересует именно прирост скорости, про всякие вещи типа вынос кода и прочее я в курсе. просто интересно, насколько увеличивается скорость, может гдето есть сравнительные тесты?
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270592
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сравнению с чем?
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270597
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270603
гуня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Ильин,

хочется для каждой субд, наподобие таблицы. название субд и процент прироста скорости для каждой записи
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270613
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Ильин
если исходить из чисто теоретических предпосылок - хранимые процедуры
должны быть всегда быстрее.

А нельзя ли эти "теоретические предпосылки" огласить?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270616
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :)Опять же, по сравнению с чем?
По сравнению с SQL-запросами - нет.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270625
гуня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftДенис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :)Опять же, по сравнению с чем?
По сравнению с SQL-запросами - нет.

имеется ввиду что запрос к базе данных оформляется в виде хранимой процедуры и вызывается из кода или же запрос выполняется в приложении (т.е. тело запроса находится в самой программе)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270632
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гуня
хочется для каждой субд, наподобие таблицы. название субд и процент
прироста скорости для каждой записи

Обломись. Те СУБД, которые вообще имеют хранимые процедуры используют их
совершенно разными способами.
А уж "прирост скорости для каждой записи" это вообще перл.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270639
гуня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

так не важно каким способом, главное это то что если не использются процедуры то время одно, а когда используется время другое. вот интересно сильно ли будут отличия
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270642
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя ли эти "теоретические предпосылки" огласить?..
ну как же - не тратится время на разбор SQL выражени, и т.п., например :)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270645
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочется для каждой субд, наподобие таблицы. название субд и процент
прироста скорости для каждой записи

уу.. как всё запущенно :)
ну, ... если у кого то есть пара-тройка месяцев свободного времени, то мне тоже было бы (чисто теоретический интерес) интересно поглядеть на такую :)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270700
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДИну как же - не тратится время на разбор SQL выражени, и т.п., например :)
чешуя. хотите Вы или нет, запрос не может выполниться каким-то волшебным образом в одном случае, и неволшебным - в другом. Сервер всегда парсит sql, пришел он с клиента или выполняется в процедуре на сервере.
С точки зрения выполнения запросов абсолютно до лампы, с клиента они передаются на сервер или берутся сервером из процедуры.

Другое дело - обработка записей. Понятно что выполнить запрос, передать данные на клиента, обработать, и вернуть обратно будет гораздо дольше чем выполнить процедуру, которая все то же самое делает на сервере. Но процедура будет быстрее только потому, что нет пересылки данных на клиента и обратно. Т.е. нет сетевого трафика, только и всего.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270703
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
резюмирую гуне:
Если выполнить select count, с клиента или в процедуре, время выполнения будет абсолютно одинаковым.
Советую еще раз подумать, что с чем Вы пытаетесь сравнить.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270748
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервер всегда парсит sql, пришел он с клиента или выполняется в процедуре на сервере.
может файрбёрд и парсит, но sql server компилирует в момент первого выполнения (составляет план запроса, ищет подходящие индексы и т.д.). После этого "использует свои предыдущие наработки" :)
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270752
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если выполнить select count, с клиента или в процедуре, время выполнения будет абсолютно одинаковым.
это точно. O(n) всегда будет работать за O(n).
использование хранимых процедур почти всегда оправданно, прежде всего из соображений безопасности, а не скорости. Если парсить sql код пришедший от клиента, то это чревато sql инъекциями. Решение без разбора клиентского sql кода от подобных инъекций защищено практически на 100%. +можно гибко раздавать права на таблицы (точнее - вообще их не давать, давать права только на хранимые процедуры).
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270758
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Ильин Сервер всегда парсит sql, пришел он с клиента или выполняется в процедуре на сервере.
может файрбёрд и парсит, но sql server компилирует в момент первого выполнения (составляет план запроса, ищет подходящие индексы и т.д.). После этого "использует свои предыдущие наработки" :)KDV говорил не об этом. Сам скажет о чём :)

Я же хочу уточнить насчёт FB vs MSSQL.

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

А вот MSSQL "умничает" - смотрит на значения параметров и может скомпилировать далеко не всё.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270777
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гуня пишет:
> хотел бы узнать какой прирост производительности дает использование
> хранимых процедур.

Это зависит очень сильно от конкретной СУБД и того, как там реализованы
процедуры. Без конкретной СУБД обсуждать это бессмысленно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270780
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Ильин
но sql server компилирует в момент первого выполнения (составляет план
запроса, ищет подходящие индексы и т.д.). После этого "использует свои
предыдущие наработки" :)

Ооооо... А догадывается он о том, что новый поступивший запрос
соответствует этим "предыдущим наработкам" не иначе как телепатически.
Хотя, что там ему составлять-то, с его rule-based оптимизатором...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270789
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДИможет файрбёрд и парсит, но sql server компилирует в момент первого выполнения (составляет план запроса, ищет подходящие индексы и т.д.). После этого "использует свои предыдущие наработки"
ну и какая разница? допустим, запрос "первый раз" пришел с клиента, и тот же запрос первый раз выполняется в хранимой процедуре. Что, MS SQL не будет его "парсить"???

ДИЕсли парсить sql код пришедший от клиента, то это чревато sql инъекциями.
весьма сомнительное утверждение. Возможно, Вы под "парсить" имеете в виду что-то отличное от проверки корректности пришедшего с клиента SQL, и т.д.
Можно и процедуру написать так, что в ней тоже будут возможны sql-injections. Так что про них тут, на мой взгляд, не в кассу. В контексте вопроса автора я бы эту тему не развивал.

hvladА вот MSSQL "умничает" - смотрит на значения параметров и может скомпилировать далеко не всё.
тем не менее, возможно моя информация устарела, но раньше были жалобы, что в MS SQL процедуры выполняются медленно. И были вопросы, "а в ФБ тоже процедуры выполняются медленнее, чем SQL?".

И все-таки, я ставлю на то, что автор вопроса спрашивает именно о более быстрой обработке данных процедурами на сервере, в отличие от комбинированной обработки данных клиент+сервер+клиент. Здесь все равно, MS SQL препарит все запросы в процедуре, или не все.

p.s. в любом случае, сам вопрос хреновый.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270808
Денис Ильин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
весьма сомнительное утверждение. Возможно, Вы под "парсить" имеете в виду что-то отличное от проверки корректности пришедшего с клиента SQL, и т.д.
ну, и т.д. - проверка прав к таблицам, из которых идёт выборка, посторение и кеширование плана запроса, и т.д., этапов много.

тем не менее, возможно моя информация устарела, но раньше были жалобы, что в MS SQL процедуры выполняются медленно. И были вопросы, "а в ФБ тоже процедуры выполняются медленнее, чем SQL?".
видимо, это было как то слишком давно. я такого никогда не замечал :)

Ооооо... А догадывается он о том, что новый поступивший запрос
соответствует этим "предыдущим наработкам" не иначе как телепатически.

в смысле? хранимая процедурка то таже самая? все правильные индексы уже выбранны.
иногда статистика хромает, но её то можно собрать заново :yes:

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

кстати, я так чувствую, сами ответы показывают, насколько разные они, хранимые процедуры, в разных RDBSM. Не факт что сравнение будет имет хоть какую то корректность.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270880
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Хотя, что там ему составлять-то, с его rule-based оптимизатором...

А можно с этого места немного поподробнее?
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270890
Albatross
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :)
Это неправда.
Как раз потому неправда, что в процедуре используется план выполнения, который был создан в момент первого запуска до очередной перекомпиляции, которая может случиться нескоро.

Например, в процедуре выборка из таблицы по битовому полю, причём значение отбора передаётся через параметр процедуры. В этом поле, допустим, значение 1 - это 0.1 процент данных, остальные 99.9 - это значение 0. Пусть есть индекс по этому полю.

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

Если же выбрку делать обычным запросом, то всё будет ок.
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270897
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlbatrossДенис Ильинесли исходить из чисто теоретических предпосылок - хранимые процедуры должны быть всегда быстрее. конкретный процент зависит от многих факторов, в т.ч. от СУБД :)
Это неправда.
Как раз потому неправда, что в процедуре используется план выполнения, который был создан в момент первого запуска до очередной перекомпиляции, которая может случиться нескоро.

Например, в процедуре выборка из таблицы по битовому полю, причём значение отбора передаётся через параметр процедуры. В этом поле, допустим, значение 1 - это 0.1 процент данных, остальные 99.9 - это значение 0. Пусть есть индекс по этому полю.

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

Если же выбрку делать обычным запросом, то всё будет ок.В MS SQL появились индексы по битовым полям?
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36270904
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperВ MS SQL появились индексы по битовым полям?
Давненько, а что?
...
Рейтинг: 0 / 0
использование хранимых процедур
    #36271064
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyА можно с этого места немного поподробнее?

Хотите сказать, что MS отрастил своему SQL серверу cost-based
оптимизатор? В какой версии?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
25 сообщений из 343, страница 1 из 14
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / использование хранимых процедур
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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