powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / какая ДБМС самая "шустрая" для выполнения хранимых процедур?
117 сообщений из 117, показаны все 5 страниц
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37510738
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник пока теоретичекий вопрос, а какая ДБМС самая "шустрая"
при обработки последователности многих относително лёгких запросов из процедур.
На практике имеется приложение где вся логика в процедурах, и один вызов процедуры
приводик к выполению ~10000 легковесных запросов и ~ 1000 инсертов/делитов из временных таблиц.
причём в приложении всего ~30 разновидных запросов. Версионник/блокировшик роли не играет,
база в основном в режиме чтения + ОЛАП. Ползователей мало - вероятность негативных влеяний паралелных сессий <1%.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37510747
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronкакая ДБМС самая "шустрая" при обработки последователности многих относително лёгких
запросов из процедур.

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

Вопрос этого не предпологает, и даже наоборот, утверждает,
что разные базы делают это очень по разному хорошо/плохо.
т.е. на пример постгрес (на моей памяти 8-я версия) с подобной задачей
справляется очень плохо как-раз потому что планы запросов у него не меняются
от параметров запроса. Но ето только один аспект.
С дрогой стороны смею предположить/утверждать что ДБМС так-же отличаются
и по скорости исполения хранимок.

Я затруднюсь правилно цформулировать вопрос,
но скажем меня точно не интересюет кол-во транзакци в секунду при 500 пользователях.
И время выполнения транзакции из трёх стетментов, которые переворачивают сотни тысяч записей.
Упор идёт именно на скорость выполнения "простых" запросов, кажды из которых просматривает
максимум 100 в среднем 10 записий и доступ всегда или по индексу или ранге скан, и включает маскимум 3 таблицы в среднем 1.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37510865
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronУпор идёт именно на скорость выполнения "простых" запросов
Да куда ни упирай, бред получается.

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

Ненадо домыслов. Вопрос стоит так: какя ДБМС быстро выполнает расчёты в хранимых процедурах и быстро выполняет "лёгкие" запросы из хранимых процедур. Если подобные задачи можно было-бы охарактеризовать одним словом, как то ОЛАП или ОЛТП то вопрос звучал бы примерно так: Какая база наиболее для ХХХ-рода задач имеет мин время реакции при нагрузке 1 ползователь.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37510925
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЕдинственный способ узнать кто быстрее: СУБД, которая быстро вызывает медленно выполняющие
запросы или СУБД, которая медленно вызывает быстро выполняющиеся запросы - это
эксперимент. Поставь его и будет тебе ответ.

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

2mikron
вам нужна субд которая умеет достраивать план запроса в зависимости от bind переменных. такое оракл умеет, думаю и вся большая тройка. оракл кстати умеет компилировать сторед процедуры в нативный код, дает несколько процентов выигрыша при исполнении кода сторед процедуры.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37510935
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!субд которая умеет достраивать план запроса в зависимости от bind переменных. такое оракл
умеет, думаю и вся большая тройка. оракл кстати умеет компилировать сторед процедуры в
нативный код, дает несколько процентов выигрыша при исполнении кода сторед процедуры.

А теперь вопрос на засыпку: как он меняет план выполнения запроса, если тот откомпилирован
в нативный код? Заново компилирует?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37510945
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovА теперь вопрос на засыпку: как он меняет план выполнения запроса, если тот откомпилирован
в нативный код? Заново компилирует?..

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

если бы у меня возникали ТАКИЕ вопросы я бы побеспокоился о своем здоровье
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511008
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Dimitry SibiryakovА теперь вопрос на засыпку: как он меняет план выполнения запроса, если тот откомпилирован
в нативный код? Заново компилирует?..

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

Уверен ?

Там еще JIT компиллер есть
http://download.oracle.com/docs/cd/B28359_01/java.111/b31225/chnine.htm

А уже потом машинный код , и переключение контекстов выполенения JVM -SQL.

Что быстрее жаба или PL/SQL сказать тяжело, но то что переключени контекстов ( функция <-> sql ) присутствет
я практически уверен ( на 95 %).

Будь добр предостваить документ где сие опровергается.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511018
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доктор, гасите свет ! они на свет лезут !!! (с) анекдот
для тех кто не понял это была шутка юмора. для тех кто совсем не понял переформулирую так:
ога, компилирует в php байт код, а потом на SQL машине нативно исполняет
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511036
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Доктор, гасите свет ! они на свет лезут !!! (с) анекдот
для тех кто не понял это была шутка юмора. для тех кто совсем не понял переформулирую так:
ога, компилирует в php байт код, а потом на SQL машине нативно исполняет


Фух, наверное первый топик за известную мне историю сайта, где Йо сразу признает ( в данном случае переводя тему в шутку) ,
что оракл не совсем подходит под задачу.

А может лучше пожевать, подумать , а уже потом лить маркетинговый булшит говорить
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511078
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron На практике имеется приложение где вся логика в процедурах, и один вызов процедуры
приводик к выполению ~10000 легковесных запросов и ~ 1000 инсертов/делитов из временных таблиц.А должен быть один запрос на ~10000 строк и один инсерт/делит из временных таблиц на ~ 1000 строк.
Тогда на любой СУБД будет работать быстро.
row by row means slow by slow.
Розница всегда дороже опта.
mikron Какая база наиболее для ХХХ-рода задач имеет мин время реакции при нагрузке 1 ползователь. Которую знаешь ибо чую я вы ищете волшебную базу ХХХ, чтобы ничего не делать, а все бы само летало

Dimitry Sibiryakov Этот вопрос теоретически бредовый+1
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511090
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДохтаРФух, наверное первый топик за известную мне историю сайта, где Йо сразу признает ( в данном случае переводя тему в шутку) ,
что оракл не совсем подходит под задачу.

боюсь, что вынужден вас разочаровать. то что я постебался над знаниями Дмитрия совсем не означает, что я признал то о чем вы подумали.
судя по всему вы уже догадались, что сторед процедура состоит из процедурного pl/sql и декларативного SQL, которые обрабатывают разные машины. так вот, процедурный pl/sql может быть откомпилирован в нативный байткод который будет выполняться быстрее чем допустим интерпритатор сторед процедур постгреса. но это никак не затрагивает декларативную часть процедур, за исполнения которых отвечает SQL машина со своим кешом планов запросов и прочей декларативной требухой.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511099
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257row by row means slow by slow.
Розница всегда дороже опта.
А вот в

соседнем топике
этому не верят.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511118
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

Я охотно верю, что вы не сталкивались с задачами подобно рода.
Как следствие, ваш совет хотя и не лишён смысла, но в контексте задачи абсолютно безполезен.
Осталное всё выдумки, домыслы и "жалкое довольство собой" (с)
Чутьё к тому-же буксует: я уже писал, что всё работает на одной ДБМС. (Сайбейс АСА)
Вопрос поэтому от части из любопытства, можно ли сделать ещё быстрее.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511147
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати, в соседнем топике ишут базу под похожую задачу. В моём случае речь идёт о обработке связанного оринетированного графа.
Оптом тут ничего не получатся.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511173
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron выдумки, домыслы и "жалкое довольство собой"А что еще вы ожидали на Вопрос от части из любопытства, можно ли сделать ещё быстрее.
mikron В моём случае речь идёт о обработке связанного оринетированного графаТак вы прямо в СУБД граф обрабатываете?
В упомянутом вами топике советовали использовать СУБД как хранилище, почему бы вам не поступить также.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511181
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!ДохтаРФух, наверное первый топик за известную мне историю сайта, где Йо сразу признает ( в данном случае переводя тему в шутку) ,
что оракл не совсем подходит под задачу.

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


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

Может кто то знает СУБД , которые умеют копмилить свои процедуры в машинный код ?

Или накрайняк предоставляют простой интерфейс сырого доступа к записям и полям ( использованию индексов, проверки констреинтов и т д)
путем возможности интеграции библиотек и функций ( на С/С++) в мотор БД ?
Так что бы не через Ж и без велосипедостроения.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511197
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mikron
Если запросы внутри ХП простые но их много, т.е. наклные расходы на раздумия шибко умного оптимизатора как-то могут сказываться на общей скорости, то можно либо захинтовать, либо поиграться уровнями оптимизации оптимизатора.
optimization_goal option First-row or All-rows All-rows
optimization_level option 0-15 9
optimization_workload option Mixed, OLAP Mixed

optimization_level option
Controls the amount of effort made by the SQL Anywhere query optimizer to find an access plan for a SQL statement.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511200
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл написать, это у Sybase SA, которую вы упомянули.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37511915
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257В упомянутом вами топике советовали использовать СУБД как хранилище, почему бы вам не поступить также.+1

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

меня инересует _сравнение_ ДБМС.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37512054
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronменя инересует _сравнение_ ДБМС.
Ну тогда для начала точно определи какой аспект сравнивать. Тестовый скрипт выкати.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37512057
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron Я удивляюсь, сколько здесь людей, которые не умеют читать :)Вы спрашиваете каким именно микроскопом лучше забивать гвозди. Вам отвечают, что лучше это делать молотком. Вы обижаетесь.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37512068
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257mikron Я удивляюсь, сколько здесь людей, которые не умеют читать :)Вы спрашиваете каким именно микроскопом лучше забивать гвозди. Вам отвечают, что лучше это делать молотком. Вы обижаетесь.

ни в коем разе не обижаюсь.
Пусть будет по вашему. вы мне подксажите, каким микроскопом быстрей?

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


Человек спрашивает каким образом быстрее и качественне скрепить 2^N досок.
Сейчас он пользуется микроскопом..

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

Я бы тему сформулировал так :
молоток( микроскоп) vs шуруповерт( или другой инструмент, что бы руками не махать)
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37512116
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronПусть будет по вашему. вы мне подксажите, каким микроскопом быстрей?
Оракулом. Его ХП быстрее всех выполнит тучу простых запросов типа "select 0 from dual".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37512170
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron, на абстрактный вопрос, где ХП теоретически могут выполнятся быстрее чем у других, я бы посоветовал DB2. Ее ХП компилируются в dll и аттачатся к серваку. Т.е. в теории накладных расходов на интерпретация как-бы меньше. Но у всех приличных серваков давно существует кэш процедур, кэш планов итп вещи, так что не все так однозначно.
И на счет АСА вы не говорили, что вас не интерисуют идеи по поводу ее ускорения. Во всяком случаем реакции на мое предложение поиграться уровнем оптимизации не последовало.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37512539
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronВозник пока теоретичекий вопрос, а какая ДБМС самая "шустрая"
при обработки последователности многих относително лёгких запросов из процедур.Чтож, на столь теоретический вопрос, теоретический ответ:

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

Подробнее: Если у нас есть процедуры и в них запросы Z k (k=1.n) ; СУБД S k (k=1..n) , каждая с параметрами для оптимизации PS k,n причем они для каждой СУБД разные, и некоторые параметры немного ускоряют некоторые запросы, но сильно замедляют другие, а другие параметры сильно ускоряют одни запросы но немного замедляют другие.. то очевидно - см. выше.


mikronЯ удивляюсь, сколько здесь людей, которые не умеют читать :)
Для тех, кто читает через слово:
меня не волнуют:
<skip>
меня инересует _сравнение_ ДБМС.ок, а теперь, оффтоп (дл тех, кто не понимает ответы):
у меня есть легковая машина, она начала слегка перегреваться, оказалось, надо долить охлаждающую жидкость. Я думаю теоретически, может быть не доливать, а купить другую машину, которая будет лучше работать в этих условиях?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37514387
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldя бы посоветовал DB2. Ее ХП компилируются в dll и аттачатся к серваку.К сожалению, эта информация немного устарела. Лет так на несколько. Если речь о DB2 LUW, конечно - вряд ли тут кого интересуют мейнфреймы :)
В DB2 LUW ХП писанные и на SQL PL, и на PL/SQL компилячатся в один и тот же байт-код, исполняемый сервером. Похоже на Оракл.
Другое дело, что триггеры и функции на спец. подмножестве SQL PL вообще не компилячаться, а inline подставляются в вызвавший запрос и с ним оптимизируются, что м.б. весьма эффективно.
Кроме того, можно писать ХП на нативных и не очень языках (C++, Java, ...). А вот компиляченный C++ уже может выполняться в адресном пространстве сервера, экономя ресурсы.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37514405
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mikronодин вызов процедуры приводик к выполению ~10000 легковесных запросов и ~ 1000 инсертов/делитов из временных таблицА вот тут я бы посоветовал DB2 по другой причине - в ХП может применяться "статическая" компиляция запросов (не динамических, конечно) - их синт. анализ, оптимизация и план строятся при первом выполнении (или при компиляции), серьезно экономя время. Перестроить планы можно отдельной командой во время минимальной нагрузки или после серьезного изменения данных.
PS. Такое количество запросов в одной ХП наталкивают на мысль об необходимости использования комплексных CTE вместо этой кучи.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37514539
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот попытался изобразить основной паттерн использования для Сайбейс АСА.
Давате мерятся, кто быстрее.
На АСА-12 25 секунд.

Код: plaintext
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
create table t1 (c1 integer not null, c2 integer not null, c3 integer not null, c4 integer not null, primary key (c1, c4))
/

create index t1i1 on t1 (c1, c3, c2)
/

create global temporary table t2 (c1 integer not null, c2 integer not null, c3 integer not null)
not transactional 
/

begin
	declare @i integer;
    declare @j integer;

    delete from t1;
	set @i =  1000 ;
	while @i >  0  loop
		set @j =  20 ;
		while @j >  0  loop
			insert into t1(c1, c2, c3, c4)
			values (@i, round( 1000  * rand(),  0 ), round( 1000  * rand(),  0 ), @j);
			set @j = @j -  1 ;
		end loop;
		set @i = @i -  1 ;
	end loop;
	commit;
end;
/

create or replace procedure my_test()
no result set
begin
	declare @p integer;
	declare @i integer;
	declare @j integer;
	
	delete from t2;
	
	set @p = round( 1000  * rand(),  0 );
	set @i =  1000000 ;
	while @i >  0  loop
		set @j = round( 1000  * rand(),  0 );
	
lbl_each_t:
	    for each_t as cur_t no scroll cursor for 
	        select top  10  c2 as @cur_c2
		  from t1
		  where c1 = @p
		  order by abs(c3 - @j) desc
	    do
			insert into t2 (c1, c2, c3)	values (@p, @cur_c2, @j);
			if @cur_c2 != @p then
				set @p = @cur_c2;
				if rand() >  0 . 4  then
					leave lbl_each_t;
				end if;
			end if;
		end for;
		set @i = @i -  1 ;
	end loop;
end;
/

select count(*) from t2;
select * from t2;

...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37514593
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДохтаРЧеловек спрашивает каким образом быстрее и качественне скрепить 2^N досок.

ещё один писАтель. Где это я спашивал, "каким образом"? Не припомню.
А спрашивал "каким микроскопом/шуруповертом/... (по фантазии читателя) удобней".
А на грабли я сам наступать мастер.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37514632
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.В некоторых случаях быстрее будет одна СУБД, в других- другая, а в третьих - третья.

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

S.G.у меня есть легковая машина, она начала слегка перегреваться, оказалось, надо долить охлаждающую жидкость. Я думаю теоретически, может быть не доливать, а купить другую машину, которая будет лучше работать в этих условиях?
Для тех, кто в мышинах соображает лутьше чем ИТ>
А может действительно лутше новую? Кто сказал что в охлаждаёшей жидкости дело?
А может масло стало в систему охлаждения гнать? А может я на машине стал прицепы тяжёлые таскать, и всё с полной нагрузкой. А может мне вобще самосвал нужен а не пежо 106.
. Вот и судят некоторые опрометчево, и доливают воды,
а через месяц машина в хлам.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515027
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron ,

Код для СУБД Caché 2012.1.FT4
Class del.t2 Extends %Persistent
{

Parameter SQLTABLETYPE = "GLOBAL TEMPORARY";

Property c1 As %Integer;

Property c2 As %Integer;

Property c3 As %Integer;

}

Class del.t1 Extends %Persistent
{

Property c1 As %Integer;

Property c2 As %Integer;

Property c3 As %Integer;

Property c4 As %Integer;

Index i1 On (c1, c3, c2);

ClassMethod Fill()
{
  set time=$zhorolog
  
  &sql(truncate table del.t1)
  
  for i=1:1:1000 {
    for j=1:1:20 {
      set c2=$random(1000)
      set c3=$random(1000)
      &sql(insert into del.t1(c1,c2,c3,c4) values(:i,:c2,:c3,:j))
    }
  }
  
  write "time=",$zhorolog-time," s.",!
}

ClassMethod MyTest()
{
  set time=$zhorolog
  
  &sql(truncate table del.t2)
  
  set p=$random(1000)
  
  for i=1:1:1000000 {
    set j=$random(1000)

    &sql(declare c cursor for select top 10 c2 from del.t1 where c1 = :p order by abs(c3 - :j) desc for read only)
    &sql(open c)
    for  {
      &sql(fetch c into :curC2)
      quit:SQLCODE
      
      &sql(insert into del.t2(c1,c2,c3) values(:p,:curC2,:j))
      
      if p'=curC2 {
        set p=curC2
        quit:$random(1000000)>400000
      }
    }
    &sql(close c)
  }
  
  write "time=",$zhorolog-time," s.",!
  
  &sql(select count(*) into :count from del.t2)
  write "count=",count,!
}

ClassMethod FillDirect()
{
  set time=$zhorolog
  
  do DISABLE^%NOJRN
  
  do ##class(del.t1).%KillExtent()
  
  set id=0
  for i=1:1:1000 {
    for j=1:1:20 {
      set id=id+1
      set c2=$random(1000)
      set c3=$random(1000)
      set ^del.t1D(id)=$listbuild("",i,c2,c3,j)
      set ^del.t1I("i1",i,c3,c2,id)=""
    }
  }
  
  set ^del.t1D=id
  
  do ENABLE^%NOJRN
  
  write "time=",$zhorolog-time," s.",!
}

}

Результат для метода MyTest() в среднем ~ 12.5 сек (Intel Core Duo 2 6700, RAM 2Gb, XP SP3(x32)):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
TEST>do ##class(del.t1).Fill()
time=.998096 s.

TEST>do ##class(del.t1).MyTest()
time=13.676071 s.
count=14402

TEST>do ##class(del.t1).FillDirect()
time=.075046 s.

PS: вместо SQL можно использовать прямой доступ. В этом случае скорость будет ещё выше. Для примера см. FillDirect() .
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515121
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня на аса 10.0.1 на машинке с одним сата винтом, кор2дуо, 1гб вышло около 35 секунд. Поигрался уровнями оптимизации оптимизатора, сущесвенной разницы не заметил.
count(*)=1452
Есть вопрос по тесту. По сути в цикле выполняется многократно один и тот же запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
set @p = round( 1000  * rand(),  0 );
...
select top  10  c2 as @cur_c2
from t1
where c1 = @p
order by abs(c3 - @j) desc
...

т.е. условие в поиске where c1 = @p константное!
В таком случае, оно либо закешируется, либо єто будет просто тест кєшпамяти и процессора.
В такой ситуации все равно, насколько интерпретатор хранимок будет быстро их интерпретировать, все упрется в скорость выполнения этого курсора.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515191
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldт.е. условие в поиске where c1 = @p константное!Разве p и j постоянны?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
set @j = round( 1000  * rand(),  0 );
...
if @cur_c2 != @p then
  set @p = @cur_c2;
  if rand() >  0 . 4  then
    leave lbl_each_t;
  end if;
end if;
...
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515194
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, извините, проглядел насчет константности.
Но все равно, основная нагрузка - выполнение селекта, а не мелкие вычисления в цикле. Т.е. не суть принципиально, во что там компилит текст хп движок сервера.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515222
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old ,

Для чистых вычислений, думаю лучше использовать С++ с задействованием GPU, например с помощью интерфейса CallIn .
PS: Опыт использования GPU для финансового моделирования (C#)
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515323
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так то ж не мне нужно, а топикстартеру.
Может ему действительно будет лучше написать хп на жаве, загнать исходную таблицу в какой-нибудь массив или иной контейнер и произвести расчет на низком уровне не прибегая к внутренним select'ам? вон на каше как лихо вышло..
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515359
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хе-хе, а дома на SA12 на белом iMac (c2d 2.16ГГц) под макосх 45-50 сек! Сижу вот офигеваю, то ли мак такой тормозной, то ли SA12 тормознее на этом тесте чем десятка. Порою дальше.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515397
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
микрон, готовь магарычи :)
разогнал с 50сек до 36. правда заставляет задуматься, что есть некий косячек в реализации, можно продолжить в вашем топике сайбезовой ветки.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515617
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
микрон,
профайлер показал, что треть времени в функции тратится на строку
set @j = round(1000 * rand(), 0);
заменил ее на: set @j = truncnum(1000 * rand(),0);
и оп ля-ля..
Завел у сайбеза топик: http://sqlanywhere-forum.sybase.com/questions/8333/perfomance-issues-with-round-and-truncnum
Если что, присоединяйся там.
Наверное имеет смысл протестить производительность всех математических функций, что у тебя гоняются в циклах, сравнить их с предыдущей версии SA. Жду отзывы :)
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515685
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldмикрон,
профайлер показал, что треть времени в функции тратится на строку
set @j = round(1000 * rand(), 0);
Жду отзывы :)

Опа, интересный результат. на днях посмотрю / проверю.

На АСА 11 тест проходит за 31 сек.
Машина примерно одинакового класса.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515831
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PostgreSQL 9.1.1 on x86_64-unknown-linux-gnu, compiled by gcc-4.6.real (Debian 4.6.1-15) 4.6.1, 64-bit
AMD Phenom(tm) II X4 955 3210.863 Hz / 4 Гб RAM.

оптимизировать не пытался, просто переписал на постгресовый PL/pgSQL
shared_buffers = 240MB
temp_buffers = 180MB
work_mem = 128MB
maintenance_work_mem = 316MB
synchronous_commit = off
effective_cache_size = 1528MB
constraint_exclusion = on

Код: plaintext
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
create table t1 (c1 integer not null, c2 integer not null, c3 integer not null, c4 integer not null, primary key (c1, c4));

create index t1i1 on t1 (c1, c3, c2);

create global temporary table t2 (c1 integer not null, c2 integer not null, c3 integer not null);

do
$$
declare
 i integer;
 j integer;
begin
    delete from t1;
    i :=  1000 ;
        while i >  0  loop
                j :=  20 ;
                while j >  0  loop
                        insert into t1(c1, c2, c3, c4)
                        values (i, round( 1000  * random()::numeric,  0 ), round( 1000  * random()::numeric,  0 ), j);
                        j := j -  1 ;
                end loop;
                i := i -  1 ;
        end loop;
end
$$;

create or replace function my_test()
returns void
language plpgsql as $$
declare
 p integer;
 i integer;
 j integer;
 cur_c2 integer;
begin        
        delete from t2;
        
        p := round( 1000  * random()::numeric,  0 );
        i :=  1000000 ;
        while i >  0  loop
                j := round( 1000  * random()::numeric,  0 );
        
<<lbl_each_t>>
            for cur_c2 in
                select c2
                  from t1
                  where c1 = p
                  order by abs(c3 - j) desc
                  limit  10 
            loop
                        insert into t2 (c1, c2, c3)     values (p, cur_c2, j);
                        if cur_c2 != p then
                                p := cur_c2;
                                if random() >  0 . 4  then
                                        exit lbl_each_t;
                                end if;
                        end if;
            end loop;
                i := i -  1 ;
        end loop;
end;
$$;

select count(*) from t2;
select * from t2;

select my_test();

Код: plaintext
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.
$ psql -f Документы/test.sql

Timing is on.
psql:Документы/test.sql:1: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1"
CREATE TABLE
Time: 49,746 ms
CREATE INDEX
Time: 25,207 ms
CREATE TABLE
Time: 0,740 ms
DO
Time: 830,874 ms
CREATE FUNCTION
Time: 0,666 ms
 count 
-------
     0
(1 row)

Time: 0,272 ms
 c1 | c2 | c3 
----+----+----
(0 rows)

Time: 0,071 ms
 my_test 
---------
 
(1 row)

Time: 35998,862 ms

35 секунд.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37515854
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count(*) перед функцией а не после %) ну ладно...
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37516276
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
микрон, проверил на работе на SA10.
Результат 36 сек с round против 30сек с truncnum()
15-20 прирост на ровном месте.. :) дрючте сайбезовый саппорт..
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37516630
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал вариант MyTest() с использованием прямого доступа вместо SQL. Скорость возросла на порядок.
SQL и NoSQL вариантыClass del.t2 Extends %Persistent
{
Parameter SQLTABLETYPE = "GLOBAL TEMPORARY";
Property c1 As %Integer;
Property c2 As %Integer;
Property c3 As %Integer;
}

Class del.t1 Extends %Persistent
{

Index i1 On (c1, c3, c2);

Property c1 As %Integer;
Property c2 As %Integer;
Property c3 As %Integer;
Property c4 As %Integer;

ClassMethod Fill()
{
  set time=$zhorolog
  
  &sql(truncate table del.t1)
  
  for i=1:1:1000 {
    for j=1:1:20 {
      set c2=$random(1000)
      set c3=$random(1000)
      &sql(insert into del.t1(c1,c2,c3,c4) values(:i,:c2,:c3,:j))
    }
  }
  
  write "time=",$zhorolog-time," s.",!
}

ClassMethod MyTest()
{
  set time=$zhorolog
  
  &sql(truncate table del.t2)
  
  set p=$random(1000)
  
  for i=1:1:1000000 {
    set j=$random(1000)

lblEachT

    &sql(declare c cursor for select top 10 c2 from del.t1 where c1 = :p order by abs(c3 - :j) desc for read only)
    &sql(open c)
    for  {
      &sql(fetch c into :curC2)
      quit:SQLCODE
      
      &sql(insert into del.t2(c1,c2,c3) values(:p,:curC2,:j))
      
      if p'=curC2 {
        set p=curC2
        if $random(1000000)>400000 {
          &sql(close c)
          goto lblEachT
        }
      }
    }
    &sql(close c)
  }
  
  write "time=",$zhorolog-time," s.",!
  
  &sql(select count(*) into :count from del.t2)
  write "count=",count,!
}

ClassMethod MyTestDirect()
{
  set time=$zhorolog
  
  kill ^||del.t2D
  
  set id=0
  set p=$random(1000)
  
  for i=1:1:1000000 {
    set j=$random(1000)

lblEachT
    continue:$data(^del.t1I("i1",p))=0
    set q=$query(^del.t1I("i1",p,""))
    kill ^||a
    for k=1:1:20 {
      set ^||a(-$zabs($qsubscript(q,3)-j),$qsubscript(q,4),k)=""
      set q=$query(@q)
    }
    
    set q=$query(^||a(""))
    for k=1:1:10 {
      set curC2=$qsubscript(q,2)

      set id=id+1
      set ^||del.t2D(id)=$listbuild("",p,curC2,j)
      
      if p'=curC2 {
        set p=curC2
        goto:$random(1000000)>400000 lblEachT
      }
      set q=$query(@q)
    }
  }
  set ^||del.t2D=id

  write "time=",$zhorolog-time," s.",!
  
  &sql(select count(*) into :count from del.t2)
  write "count=",count,!
}

}
Результаты:
Код: plaintext
1.
2.
3.
4.
5.
6.
TEST>do ##class(del.t1).MyTest()
time=12.671276 s.
count=1393

TEST>do ##class(del.t1).MyTestDirect()
time=1.167889 s.
count=5636
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37529763
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бред какой-то.
mikronНа практике имеется приложение где вся логика в процедурах, и один вызов процедуры
приводик к выполению ~10000 легковесных запросов и ~ 1000 инсертов/делитов из временных таблиц.
Если мы говорим о простейших select * from table1 where id = N или о инсертах без условий, то не имеет значения какая из промышленных СУБД стоит - все будет упираться в железо, точнее даже в диски. Ибо оптимизировать тут нечего. Возможно, есть какие-то специализированные базы, специально заточенные именно под забрасывание инсертами, не слышал.
Если мы говорим о скорости выполнения логики, по которой выбираются эти простейшие селекты/инсерты, то у каждой большой СУБД есть огромное количество своих трюков и приемов, позволяющих оптимизировать эту логику. И сказать априори, что мол Оракл логику отработает быстрее MSSQL может только неумный человек. Какую логику?
Если посмотреть на ваш пример, то из него можно легко выделить три условные части, которые могут грузить
- тот самый инсерт. Который везде будет более-менее одинаков, см. выше.
- рандом. который относит. тяжелая функция. Теоретически, реализация по скорости может отличаться на разных СУБД, но практически я не думаю что это так.
- арифметические операции. Поверьте мне, скорость сложения двух чисел на порядок больше зависит от процессора, чем от СУБД. Давно все уже вышли из детских садов.
Т.е. чисто теоретически, на этом примере смена СУБД с ASA на любую другую прироста скорости вам не даст. А чисто практически - это даст вам траты на смену СУБД, трудозатраты на освоение, на переделку приложения, оптимизацию и т.п., на порядок дороже оптимизации и смены архитектуры существующего приложения. Ну что сказать, тоже развлекуха.

Кстати, @j в order by abs(c3 - @j) desc совершенно бессмысленна.


[quote А может действительно лутше новую? Кто сказал что в охлаждаёшей жидкости дело?
А может масло стало в систему охлаждения гнать? А может я на машине стал прицепы тяжёлые таскать, и всё с полной нагрузкой. А может мне вобще самосвал нужен а не пежо 106.[/quote]
Очень хорошие вопросы. А вы их кому задаете? Вы думаете, на форуме лучше знают, какая у вас машина и что на ней вы таскаете? Дык, пока из ваших постов и не видно что вы тяжелые прицепы таскаете.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37529840
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aagКстати, @j в order by abs(c3 - @j) desc совершенно бессмысленна.Разве?

Дано:
idc315210
order by abs(c3-4) desc
idc321015
order by abs(c3-40) desc
idc315210
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37529860
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aagЕсли мы говорим о простейших select * from table1 where id = N или о инсертах без условий, то не имеет значения какая из промышленных СУБД стоит - все будет упираться в железо, точнее даже в диски. Ибо оптимизировать тут нечего. Возможно, есть какие-то специализированные базы, специально заточенные именно под забрасывание инсертами, не слышал.

детский сад. штаны на лямках. даже простенькие запросы с фильтром по одному полю могут давать разные планы в плоть до фуллскана. даже на простеньких запросах могут быть не простенькие стратегии размера блока, кеширования и разноски таблиц по именнованным пулам. даже в простеньких запросах могут быть простенькие джоины и огромное поле для тюнинга, начиная с кластерных таблиц
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37530007
Yo.!aagЕсли мы говорим о простейших select * from table1 where id = N или о инсертах без условий, то не имеет значения какая из промышленных СУБД стоит - все будет упираться в железо, точнее даже в диски. Ибо оптимизировать тут нечего. Возможно, есть какие-то специализированные базы, специально заточенные именно под забрасывание инсертами, не слышал.

детский сад. штаны на лямках. даже простенькие запросы с фильтром по одному полю могут давать разные планы в плоть до фуллскана. даже на простеньких запросах могут быть не простенькие стратегии размера блока, кеширования и разноски таблиц по именнованным пулам. даже в простеньких запросах могут быть простенькие джоины и огромное поле для тюнинга, начиная с кластерных таблиц
Ещё забыл различные типы индексов, секционирование, матвью и оракл дата машина.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37530882
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitaagКстати, @j в order by abs(c3 - @j) desc совершенно бессмысленна.Разве?

Дано:
idc315210
order by abs(c3-4) desc
idc321015
order by abs(c3-40) desc
idc315210

Ой. Я наверно что-то не понял. Каким образом у вас меняется порядок сортировки от уменьшения на константу всех значений по которым сортируем?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37530901
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!aagЕсли мы говорим о простейших select * from table1 where id = N или о инсертах без условий, то не имеет значения какая из промышленных СУБД стоит - все будет упираться в железо, точнее даже в диски. Ибо оптимизировать тут нечего. Возможно, есть какие-то специализированные базы, специально заточенные именно под забрасывание инсертами, не слышал.

детский сад. штаны на лямках. даже простенькие запросы с фильтром по одному полю могут давать разные планы в плоть до фуллскана. даже на простеньких запросах могут быть не простенькие стратегии размера блока, кеширования и разноски таблиц по именнованным пулам. даже в простеньких запросах могут быть простенькие джоины и огромное поле для тюнинга, начиная с кластерных таблиц
Да уж, действительно детский сад и желание покрасоваться своими знаниями.
Специально для таких был приведен пример простенького запроса - без всяких джойнов. И вроде бы у ТС пример есть, но нет.
Ну хорошо, поле для тюнинга существует. Вы действительно уверены, что для запроса select * from table1 where id = N, где id = primary key, выбор скажем, между Oracle, MSSQL и ASA даст больший прирост скорости, чем изменение железа? Даже упрощу вопрос специально для вас - вы действительно думаете, что тюнинг существует только у оракла и что в данном конкретном случае его целое поле?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37530956
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aagОй. Я наверно что-то не понял. Каким образом у вас меняется порядок сортировки от уменьшения на константу всех значений по которым сортируем?Подробные примеры для Oracle:
Код: plaintext
1.
2.
3.
4.
5.
6.
select * from (
  select  1  as id,
          5  as c3,
          5 - 4  as c4,
         abs( 5 - 4 ) as c5 from dual union 
  select  2 , 10 , 10 - 4 ,abs( 10 - 4 ) from dual)
order by abs(c3- 4 ) desc
IDC3C4C5210661511

Код: plaintext
1.
2.
3.
4.
5.
6.
select * from (
  select  1  as id,
          5  as c3,
          5 - 40  as c4,
         abs( 5 - 40 ) as c5 from dual union 
  select  2 , 10 , 10 - 40 ,abs( 10 - 40 ) from dual)
order by abs(c3- 40 ) desc
IDC3C4C515-3535210-3030
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37531036
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitПодробные примеры для Oracle:
Упс. abs я в коде проглядел, уж больно вся конструкция надуманной вышла. Ошибся :)
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37531874
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aagВы действительно уверены, что для запроса select * from table1 where id = N, где id = primary key, выбор скажем, между Oracle, MSSQL и ASA даст больший прирост скорости, чем изменение железа? Даже упрощу вопрос специально для вас - вы действительно думаете, что тюнинг существует только у оракла и что в данном конкретном случае его целое поле?
я уверен, что на одинаковом железе даже на запросах по примарному ключу в оракле можно будет получить заметную разницу на фоне других взрослых субд. за счет размера блока, за счет партитионинга и глобального индекса, за счет именованных пулов, MTS режима и много другого. субд это не пара строк кода которая по ключу достанет значение, там все гораздо сложнее, чем вы себе представляете (если судить по вашим заявлениям).
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37531912
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС судя по всему пропал и тема ему уже не интересна, так что обсуждать абстракную крутоту оракла в вакууме видать уже нет смысла.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532016
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!я уверен, что на одинаковом железе даже на запросах по примарному ключу в оракле можно будет получить заметную разницу на фоне других взрослых субд. за счет размера блока, за счет партитионинга и глобального индекса, за счет именованных пулов, MTS режима и много другого. субд это не пара строк кода которая по ключу достанет значение, там все гораздо сложнее, чем вы себе представляете (если судить по вашим заявлениям).

Чем бы ее померять еще...

Код: plaintext
SELECT COUNT(*) FROM dbo.Event

Код: plaintext
1.
2.
3.
-----------
469717731

(1 row(s) affected)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SET STATISTICS TIME ON
SET STATISTICS IO ON

SELECT * FROM dbo.Event WHERE ID =  1033312329000 
GO

SET STATISTICS TIME OFF
SET STATISTICS IO OFF
GO
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
(1 row(s) affected)

Таблица "Event". Число просмотров 0, логических чтений 4, физических чтений 0, упреждающих чтений 0, lob логических чтений 0, lob физических чтений 0, lob упреждающих чтений 0.

 Время работы SQL Server:
   Время ЦП = 0 мс, затраченное время = 0 мс.
Время синтаксического анализа и компиляции SQL Server: 
 время ЦП = 0 мс, истекшее время = 0 мс.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532018
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old,

Интересна и не сильно актуальна, и пока нет времени на тесты/ответы.
Но я слежу. Каше пока впереди. За ним АСА, Постгрес.
Очень хотел бы увидать результаты для МС СКЛ, оракла и информикса.
Оракл у меня есть под рукой, но честного сравнения не получится - железо не то.

П.С. роунд только для тест сценария.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532035
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторюсь: очень хотел бы увидать результаты для Информикса. Есть смутные подозрения на его счёт, но я уже давно не пользовал. Ну и ДБ2 конечно тоже не плохо бы.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532049
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!aagВы действительно уверены, что для запроса select * from table1 where id = N, где id = primary key, выбор скажем, между Oracle, MSSQL и ASA даст больший прирост скорости, чем изменение железа? Даже упрощу вопрос специально для вас - вы действительно думаете, что тюнинг существует только у оракла и что в данном конкретном случае его целое поле?
я уверен, что на одинаковом железе даже на запросах по примарному ключу в оракле можно будет получить заметную разницу на фоне других взрослых субд. за счет размера блока, за счет партитионинга и глобального индекса, за счет именованных пулов, MTS режима и много другого. субд это не пара строк кода которая по ключу достанет значение, там все гораздо сложнее, чем вы себе представляете (если судить по вашим заявлениям).
Ну разумеется, партиционирование есть ведь только у оракла. И оно сильно поможет для таблички в пару тысяч строк. :)
Yo.! открыл для себя сложность Оракла и охотно делится этой радостью с окружающими... Пройдет немного времени и он узнает для себя, что другие взрослые СУБД также имеют много гитик, услышит про TPC, потом подрастет и поймет почему взрослые люди не сравнивают скорости разных СУБД.
А пока -полноте, Yo.! успокойся! Конечно, мы знаем, что самая-самая лучшая, самая быстрая и единственная СУБД это Оракл.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532069
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronGgg_old,
Очень хотел бы увидать результаты для МС СКЛ, оракла и информикса.
Оракл у меня есть под рукой, но честного сравнения не получится - железо не то.

Дык, я честно просто не понимаю, а что вам дадут эти результаты. Для сравнения их нужно получать в равных условиях, например, поставить на одну машину и Oracle, и МSSQL. Ну допустим, у меня дома они стоят, но дома у меня обычный домашний десктоп (с IDE диском) - ни разу не похожий на сервер. Вы так уверены, что результаты и на настоящем сервере не поменяются? Ну или даже - допустим, у кого-то найдутся два одинаковых по мощности настоящих сервера, он прогонит ваш скрипт. Этот скрипт у вас единственный? Других примеров нет?

И последнее, самое важное.
Допустим, вы определите для себя что СУБД "О" (Yo.! привет!) быстрее других неназванных СУБД. Дальше что? Выкидываем ASA на помойку, покупаем "О"? Переписываем все приложение?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532079
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinЧем бы ее померять еще...

Ну вот взял и убил всю веру ребенка в единственную СУБД... :) Сейчас скажет, что все было подстроено!
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532146
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aagВы так уверены, что результаты и на настоящем сервере не поменяются? Ну или даже - допустим, у кого-то найдутся два одинаковых по мощности настоящих сервера, он прогонит ваш скрипт. Этот скрипт у вас единственный? Других примеров нет?

И последнее, самое важное.
Допустим, вы определите для себя что СУБД "О" (Yo.! привет!) быстрее других неназванных СУБД. Дальше что? Выкидываем ASA на помойку, покупаем "О"? Переписываем все приложение?

- Уверен, что поменяются.
- тест-скрипт единственный.
- Примеров чего?
- А дальше не ваша забота. Вы не владеете ситиацией целиком, а мне советы доморощенных консультантов-любителей не интересны. Оффтоп.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532412
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron- А дальше не ваша забота. Вы не владеете ситиацией целиком, Ну так опишите ситуацию более полно. Например "будут выделены деньги на покупку новой СУБД, их надо усвоить, иначе пропадут", или что там у вас. Здесь люди понятливые, поймут. И тогда у вас больше шансов получить устраивающий вас ответ. А пока что, по первоначальному вопросу, по информации данной вами, большинство склонилось к мнению, что ваш вопрос.... ок, назовем его "некорректен".

Между прочим, высокая скорость, с которой вы переходите на личности ("люди не умеющие читать", "не понимающие и в ИТ и в машинах" и т.д., неохота искать ссылки), как и последний перл:mikronа мне советы доморощенных консультантов-любителей не интересны. на вполне справедливые замечания, всего лишь показывает ваш невыский уровень умения общаться, а это тоже не поможет вам получить ответ.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37532589
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.Между прочим, высокая скорость, с которой вы переходите на личности ("люди не умеющие читать", "не понимающие и в ИТ и в машинах" и т.д., неохота искать ссылки), как и последний перл:mikronа мне советы доморощенных консультантов-любителей не интересны. на вполне справедливые замечания, всего лишь показывает ваш невыский уровень умения общаться, а это тоже не поможет вам получить ответ.

А вы поищите, и может заметите что я только "огрызался" в ответ:
- один ответил в стиле "для дураков пример на пальцах (машинах)"
- другой в стиле "вы похоже на обезяну с микроскопом"
- третий - внимайте, я научу вас правильно жить.
Это не професионально. Возможно я резко указываю на это, но примите в оправдание:
не я начинал, я никого не хотел задеть лично а только показать неуместность некоторых высказываний.
mikronА дальше не ваша забота. Вы не владеете ситиацией целиком...
Резко, но разве это не правда или не справедливо?
И ненадо грязных фантазий. Вопрос я сформулировал как смог,
если вопрос не коректен - постараюсь уточнить.
А допридумывать проблемы и расказывать как их успешно решать нестоит. Плохой признак.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533459
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тест для Оракла. Резултат не вепчатлил - 57 секунд. Наверно надо лутше переписать тест.
Надеюсь, Ёо сечас сразу скажет чего не так :)

Код: plaintext
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
create table t1 (c1 integer not null, c2 integer not null, c3 integer not null, c4 integer not null, primary key (c1, c4))
/

create index t1i1 on t1 (c1, c3, c2)
/

create global temporary table t2 (c1 integer not null, c2 integer not null, c3 integer not null)
on commit preserve rows
/

declare 
	i integer;
    j integer;
begin

    delete from t1;
	i :=  1000 ;
	while i >  0  loop
		j :=  20 ;
		while j >  0  loop
			insert into t1(c1, c2, c3, c4)
			values (i, round( 1000  * DBMS_RANDOM.VALUE,  0 ), round( 1000  * DBMS_RANDOM.VALUE,  0 ), j);
			j := j -  1 ;
		end loop;
		i := i -  1 ;
	end loop;
	commit;
end;
/

-- create or replace procedure my_test() as 
declare
	v_p integer;
	v_i integer;
	v_j integer;
begin
	
	delete from t2;
	
	v_p := round( 1000  * DBMS_RANDOM.VALUE(),  0 );
	v_i :=  1000000 ;
	while v_i >  0  loop
		v_j := round( 1000  * DBMS_RANDOM.VALUE(),  0 );
	    for cur in (select q.c2 from 
        ( select c2 from t1 where c1 = v_p order by abs(c3 - v_j) desc ) q
        where rownum <=  10  )
	    loop
        insert into t2 (c1, c2, c3)	values (v_p, cur.c2, v_j);
        if cur.c2 != v_p then
          v_p := cur.c2;
          exit when DBMS_RANDOM.VALUE() >  0 . 4 ;
        end if;
      end loop;
      v_i := v_i -  1 ;
	end loop;
end;
/
commit
/

select count(*) from t2;	-- 
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533530
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronТест для Оракла. Резултат не вепчатлил - 57 секунд.


Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
"CORE 10.2.0.3.0 Production"
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

Пожалуста проверте кто-нибудь на 11г
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533547
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronТест для Оракла. Резултат не вепчатлил - 57 секунд. Наверно надо лутше переписать тест.
Надеюсь, Ёо сечас сразу скажет чего не так :)

Код: plaintext
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
create table t1 (c1 integer not null, c2 integer not null, c3 integer not null, c4 integer not null, primary key (c1, c4))
/

create index t1i1 on t1 (c1, c3, c2)
/

create global temporary table t2 (c1 integer not null, c2 integer not null, c3 integer not null)
on commit preserve rows
/

declare 
	i integer;
    j integer;
begin

    delete from t1;
	i :=  1000 ;
	while i >  0  loop
		j :=  20 ;
		while j >  0  loop
			insert into t1(c1, c2, c3, c4)
			values (i, round( 1000  * DBMS_RANDOM.VALUE,  0 ), round( 1000  * DBMS_RANDOM.VALUE,  0 ), j);
			j := j -  1 ;
		end loop;
		i := i -  1 ;
	end loop;
	commit;
end;
/

-- create or replace procedure my_test() as 
declare
	v_p integer;
	v_i integer;
	v_j integer;
begin
	
	delete from t2;
	
	v_p := round( 1000  * DBMS_RANDOM.VALUE(),  0 );
	v_i :=  1000000 ;
	while v_i >  0  loop
		v_j := round( 1000  * DBMS_RANDOM.VALUE(),  0 );
	    for cur in (select q.c2 from 
        ( select c2 from t1 where c1 = v_p order by abs(c3 - v_j) desc ) q
        where rownum <=  10  )
	    loop
        insert into t2 (c1, c2, c3)	values (v_p, cur.c2, v_j);
        if cur.c2 != v_p then
          v_p := cur.c2;
          exit when DBMS_RANDOM.VALUE() >  0 . 4 ;
        end if;
      end loop;
      v_i := v_i -  1 ;
	end loop;
end;
/
commit
/

select count(*) from t2;	-- 


Откройте для себя массивы/коллекции и блочные операции. Да и - вот такие вот всяикие abs(c3 - v_j) desc, exit when DBMS_RANDOM.VALUE() > 0.4;, while v_i > 0 loop и блабла бла - признак что вы очень мсскуель хардкодер
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533560
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeathHandОткройте для себя массивы/коллекции и блочные операции. Да и - вот такие вот всяикие abs(c3 - v_j) desc, exit when DBMS_RANDOM.VALUE() > 0.4;, while v_i > 0 loop и блабла бла - признак что вы очень мсскуель хардкодер

Не понял. Покажите, как надо переписать тест., что бы лолучить справедливый результат.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533570
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronDeathHandОткройте для себя массивы/коллекции и блочные операции. Да и - вот такие вот всяикие abs(c3 - v_j) desc, exit when DBMS_RANDOM.VALUE() > 0.4;, while v_i > 0 loop и блабла бла - признак что вы очень мсскуель хардкодер

Не понял. Покажите, как надо переписать тест., что бы лолучить справедливый результат.

Долго объяснять придется.
Конкретно в вашем примере время теряется на переключение контекстов PL/SQL / SQL
И да, в отношении шустрости по хранимым процедурам (что бы это не значило) тест совершенно несостоятелен
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533761
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Конкретно в вашем примере время теряется на переключение контекстов PL/SQL / SQL
Ну, это Вы приувеличиваете, конечно.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533764
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan),

Можно и без обьяснеий.
Просто покажите как написать тест, выполняющий те-же действия.
Тест емулирует поиск по ориентированному графу с оценкой стоимости.
Таблица описывает дуги графа из С1 в С2 со стоимостью С3.


Кто тут заявлял с высокой трибуны о никчёмности теста
и о ~одинаковых резулататах для всех баз - ау. Коментарии будут?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533772
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronчто бы лолучить справедливый результат.
Справедливость результата.

Вообще, когда Вы что-то меряете, Вы сравниваете. Длинну чего-то с линейкой (эталоном в данном случае). С чем будем сравнивать? Что будем сравнивать?

Что мы можем сравнить такое, что еще не сравнивалось? http://www.mssqlcity.com/Articles/Compare/sql_server_vs_oracle.htm

Однозначно и не осопримо: Оракл лучшая субд в мире для систем, с большой конкуренцией за данные.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533776
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronТест емулирует поиск по ориентированному графу с оценкой стоимости.
Оракл это и без Вас делает при сканировании индексов.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533780
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronКоментарии будут?

Покажите результат с нативным компилятором.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533793
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronGluk (Kazan),

Можно и без обьяснеий.
Просто покажите как написать тест, выполняющий те-же действия.


Если вас действительно интересует, как оптимально выполнять такую вставку в Oracle, направление вам дали (коллекции и bulk-операции), думаю, ваши 57 секунд легко превратятся в пару секунд, возможно меньше. Писать код за вас особого смысла не вижу (равно как и в самом сравнении). Вас устраивает производительность Cache? Нет проблем, берите и пользуйтесь
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533811
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron- Уверен, что поменяются.
- тест-скрипт единственный.
- Примеров чего?
- А дальше не ваша забота. Вы не владеете ситиацией целиком, а мне советы доморощенных консультантов-любителей не интересны. Оффтоп.
Понятно, уязвленное самолюбие и попранная гордость.
Хотя если бы вы читали внимательнее, то могли бы заметить что никаких советов я и не давал. А лишь задавал вопросы.
С другой стороны, если вы настолько профессиональны, зачем писать на форум?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533865
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)И да, в отношении шустрости по хранимым процедурам (что бы это не значило) тест совершенно несостоятелен
Особенно потому что их там нет вообще :)
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533889
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aagmikronaagДопустим, вы определите для себя что СУБД "О" (Yo.! привет!) быстрее других неназванных СУБД. Дальше что? Выкидываем ASA на помойку, покупаем "О"? Переписываем все приложение?
- А дальше не ваша забота. Вы не владеете ситиацией целиком, а мне советы доморощенных консультантов-любителей не интересны. Оффтоп.
Понятно, уязвленное самолюбие и попранная гордость.
Хотя если бы вы читали внимательнее, то могли бы заметить что никаких советов я и не давал. А лишь задавал вопросы.
С другой стороны, если вы настолько профессиональны, зачем писать на форум?

Согласен, советов напрямую вы не давали. Вы намекали, что смысла в сравнении нет. Вообще. Вам конечно с вашей колоколни виднее.

И на форум я пишу, потому не самолюбив и знаю что тут полно людей,
которые знают лутше чем я.

П.С. не льстите себе. По крайнер мере 4 ваших утверждения только в этом топике былы опровергнуты.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37533899
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeathHandmikronТест емулирует поиск по ориентированному графу с оценкой стоимости.
Оракл это и без Вас делает при сканировании индексов.
К чему это? Причём тут вобще "сканирование индексов"?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534324
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,

Вам тут уже несколько раз намекнули. Будьте проще... сядьте на пол. Просто со своим скриптом вы не то, что бы не попали... Вы не попали в шарик.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534325
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronИ на форум я пишу, потому не самолюбив и знаю что тут полно людей,
которые знают лутше чем я .

Вы не поверите даже на сколько...
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534352
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronКто тут заявлял с высокой трибуны о никчёмности теста
и о ~одинаковых резулататах для всех баз - ау. Коментарии будут?

Ваш тест порвать (на всяких там кашЭ) на DL 980? Аууууу? Денег на него хватит???
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534375
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinВаш тест порвать (на всяких там кашЭ) на DL 980? Аууууу?
Что значит "мой тест" в контексте не понял.
Непременно. Факты лутше чем домыслы и голословные утверждения.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534407
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,

"Ваш тест" - это вот тот говнокод, который вы привели. Мерять то Вы что им собрались?

авторФакты лутше

HP Proliant DL 980 G7, 80 Core, 2 Tb, MS SQL 2008 R2 Enterprise Edition, HP EVA 168 HDD RAID 10. 1, 25 с.

Вопросы?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534509
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron Причём тут вобще "сканирование индексов"?
При том, что Вы не отдаете себе отчет о требующихся уровнях абстракции для решения конкретных задач.
Я просто к тому, что Вашу задачу Оракл делает на одном из самых быстрых уровнях в мире. А что Вы там накодили - собственно, плевать.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534514
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinHP Proliant DL 980 G7, 80 Core, 2 Tb, MS SQL 2008 R2 Enterprise Edition, HP EVA 168 HDD RAID 10. 1, 25 с.

Хорошая тачка :)
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534916
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinHP Proliant DL 980 G7, 80 Core, 2 Tb, MS SQL 2008 R2 Enterprise Edition, HP EVA 168 HDD RAID 10. 1, 25 с.
Вопросы?
результат вызывает сомнения. Вы что тестировали?
Покажите код теста, что бы можно было проверить результат.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534922
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeathHandmikron Причём тут вобще "сканирование индексов"?
При том, что Вы не отдаете себе отчет о требующихся уровнях абстракции для решения конкретных задач.
Я просто к тому, что Вашу задачу Оракл делает на одном из самых быстрых уровнях в мире. А что Вы там накодили - собственно, плевать.

Я рад зашлушать специалиста. Какой нужен уровень абстракциии для решения
конкретной задачи - поска по ориентированному графу?
Вы не предложите своё решение? оценим ваш код.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534936
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronDeathHandпропущено...

При том, что Вы не отдаете себе отчет о требующихся уровнях абстракции для решения конкретных задач.
Я просто к тому, что Вашу задачу Оракл делает на одном из самых быстрых уровнях в мире. А что Вы там накодили - собственно, плевать.

Я рад зашлушать специалиста. Какой нужен уровень абстракциии для решения
конкретной задачи - поска по ориентированному графу?
Вы не предложите своё решение? оценим ваш код.
Я говорю Вам о том, что данная задача - решена недрами СУБД при чтении индексов. На более абстрактных T-SQL, PL/SQL, PL-pg-sql данная задача не может быть решена оптимально к примеру - по времени.

Последние предназначены для Расширения SQL - читать как для расширения DML-DDL, что в в свою очередь читать как "расширенные возможности по созданию и модификации данных".

Нужно чето "посчитать" - пользуйте С, С++, асму. Оракл имеет функционал для этого. Pro*C как пример.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37534989
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronКакой нужен уровень абстракциии для решения конкретной задачи - поска по ориентированному
графу?

Поиска чего? Кратчайшего пути? Медианы?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535018
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronрезультат вызывает сомнения

Это Ваше право... Сомневаться..

mikronВы что тестировали?
Покажите код теста, что бы можно было проверить результат.

Я что то не до понял, кто кого собрался проверять? Свой код покажите... Под MS SQL. И характеристики железа. Свои я привел.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535033
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeathHandЯ говорю Вам о том, что данная задача - решена недрами СУБД при чтении индексов. На более абстрактных T-SQL, PL/SQL, PL-pg-sql данная задача не может быть решена оптимально к примеру - по времени.

Последние предназначены для Расширения SQL - читать как для расширения DML-DDL, что в в свою очередь читать как "расширенные возможности по созданию и модификации данных".

Нужно чето "посчитать" - пользуйте С, С++, асму. Оракл имеет функционал для этого. Pro*C как пример.

Перефразируя ваш ответ: оракл в поставленных условиях неконкурентноспособен. Если исползовать оракл, то придётдя исползовать связку с С/С++. А лутше вобше не исползовать оракл а считать всё внешними програмами.
Достойный ответ на вопос, какая ДБМС лутше для ....
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535036
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmikronКакой нужен уровень абстракциии для решения конкретной задачи - поска по ориентированному
графу?

Поиска чего? Кратчайшего пути? Медианы?

Пусть будет кратчаяший путь. Это влият на уровень абстраккции?
И какой теперь уровен абстракции требуется?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535044
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinЯ что то не до понял, кто кого собрался проверять? Свой код покажите... Под MS SQL. И характеристики железа. Свои я привел.
Я под МССКЛ не умею, а под АСА и оракл уже показал. Вы же протестировали и получили сногсшибательный резултат, так в чём проблема? покажите ваш тест, научите, как это делают спецалисты такого класса.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535045
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronПусть будет кратчаяший путь. Это влият на уровень абстраккции?

Да. Для поиска кратчайшего пути есть вполне конкретная кляуза
connect by . И не надо
извращаться с ХП.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535054
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmikronПусть будет кратчаяший путь. Это влият на уровень абстраккции?

Да. Для поиска кратчайшего пути есть вполне конкретная кляуза
connect by . И не надо
извращаться с ХП.

Прекрасно. Иммем таблицу которая содержит дуги графа. С1 - начальная точка, С2 - конечная точка, Ф(С3) - длина дуги.
Не могли бы вы привести пример кода, который исползует указанную конструкцию для поиска минималной длины.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535060
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в шоке. микрон написал вполне конкретный тест, который он попросил прогнать на разных серверах. Тест очень специфичный и очень заточен под его, микрона, задачи. Какого фига тут умничают и учат его жизни. Хотите помочь, перепешите тест на свой серевер и запустите. Млин. Обиженные ораклоиды уже достали. А пока, каша показала себя лучшей на это задаче.

Микрон , мне показалось очень странным, что операция округления занимает аж четверть процентов от общего времени. Как по мне, сложность это операции просто не сравнима по сложности вычислений с динамическим селектом. Я ожидал, что там будет от силы 1% но не как не столько много. Что-то тут не так, результат не коррелирует с реальностью. Есть предложение, дополнить вопрос на сайбезовом форуме и спросить - а фигли так? Просто твой инглиш не чета моему. Шо домаешь?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535081
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldзаточен под его, микрона, задачи
Не "его задачи", а "его решение его задач". Если он предпочитает кривую ХП простому запросу...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535119
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий, не нам решать за кривизну его вопроса. Он же сам написал, что тест у него синтетический, но характеризует его задачу.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535126
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldОн же сам написал, что тест у него синтетический, но характеризует его задачу.

Повторяю ещё раз, медленно: он характеризует не задачу, а его решение. Вероятно - кривое
решение.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535130
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldДмитрий, не нам решать за кривизну его вопроса. Он же сам написал, что тест у него синтетический, но характеризует его задачу.
издеваешься ?
Код: plaintext
1.
order by abs(c3 - v_j) 
exit when DBMS_RANDOM.VALUE() >  0 . 4 ;

в реальной задачи у него будет простенький джоин с
Код: plaintext
select level,round( 1000  * DBMS_RANDOM.VALUE(),  0 ) as v_j from dual CONNECT BY LEVEL <= 1000000 
где даже балк коллект/инсерт не понадобиться
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535181
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronВот попытался изобразить основной паттерн использования для Сайбейс АСА.
Давате мерятся, кто быстрее.
На АСА-12 25 секунд.
Код: plaintext
1.
2.
3.
...				
if rand() >  0 . 4  then
  leave lbl_each_t;
end if;
Не понимаю, как вы хотите интерпретировать результаты: этот тест будет на каждом новом запуске вставлять разные числа строк в GTT `t2`.
Впрочем, вот для Firebird 2.5 (под Win32), на старой рабочей станции P-IV 2.4MHZ c _наимерзейшим_ HDD и намеренно оставленным дефолтным Forced Writes = ON. Только кеш на коннект сделал 32 Mb (DefaultDBCache = 8192 вместо 75 страниц).
DDL:
Код: plaintext
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
set term ^;
create or alter procedure my_test as begin end^ -- kill dependencies if any
set term ;^
commit;
recreate table
t1(c1 int not null, c2 int not null, c3 int not null, c4 int not null,
    primary key (c1, c4)
  );
create index t1i1 on t1(c1, c3, c2);
recreate global temporary table
  t2 (c1 int not null, c2 int not null, c3 int not null)
  on commit delete rows;
commit;
------------------
set term ^;
execute block as
declare i int= 1000 ;
declare j int;
begin
  while (i> 0 ) do begin
    j= 20 ;
    while (j> 0 ) do begin
      insert into t1(c1, c2, c3, c4)
      values(:i, round( 1000 *rand(), 0 ), round( 1000 *rand(), 0 ), :j);
      j=j- 1 ;
    end
    i=i- 1 ;
  end
end^
set term ;^
commit; -- 20'000 rows = 891 ms
--------------------
set term ^;
create or alter procedure my_test returns(t2_count int)
as
  declare p int;
  declare i int;
  declare j int;
  declare cur_c2 type of column t1.c2;
begin
  delete from t2;
  p = round( 1000  * rand(),  0 );
  i =  1000000 ;
  while (i> 0 ) do
  begin
    j=round( 1000 *rand(), 0 );
    for
      select first  10  c2
      from t1
      where c1 = :p
      order by abs(c3 - :j) desc
      into cur_c2
    do
    begin
      insert into t2 (c1, c2, c3) values(:p, :cur_c2, :j);
      if (cur_c2<>p) then
      begin
        p=cur_c2;
        if (rand()> 0 . 4 ) then
          leave;
      end
    end
    i=i- 1 ;
  end
  t2_count=(select count(*) from t2);
  suspend;
/* initial code:
  set @p = round(1000 * rand(), 0);
  set @i = 1000000;
  while @i > 0 loop
    set @j = round(1000 * rand(), 0);
  
lbl_each_t:
    for each_t as cur_t no scroll cursor for
          select top 10 c2 as @cur_c2
      from t1
      where c1 = @p
      order by abs(c3 - @j) desc
      do
      insert into t2 (c1, c2, c3)  values (@p, @cur_c2, @j);
      if @cur_c2 != @p then
        set @p = @cur_c2;
        if rand() > 0.4 then
          leave lbl_each_t;
        end if;
      end if;
    end for;
    set @i = @i - 1;
  end loop;
*/
end^
set term ;^
commit;
Testing:
(стабильно ~27 sec)
Код: plaintext
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
C:\1INSTALL\FIREBIRD\Data>isql -n  localhost/3050:C:\1INSTALL\FIREBIRD\Data\TESTX.fdb
Database:  localhost/3050:C:\1INSTALL\FIREBIRD\Data\TESTX.fdb
SQL> set stat on; execute procedure my_test; set stat off; commit;

    T2_COUNT
============
        2053

Current memory = 35657984
Delta memory = 123484
Max memory = 35787776
Elapsed time= 28.32 sec
Buffers = 8192
Reads = 406
Writes 35
Fetches = 3061176
SQL> set stat on; execute procedure my_test; set stat off; commit;

    T2_COUNT
============
        1920

Current memory = 35657652
Delta memory = 8580
Max memory = 35788484
Elapsed time= 27.01 sec
Buffers = 8192
Reads = 4
Writes 28
Fetches = 3056873
SQL> set stat on; execute procedure my_test; set stat off; commit;

    T2_COUNT
============
         703

Current memory = 35654632
Delta memory = 5560
Max memory = 35788484
Elapsed time= 27.28 sec
Buffers = 8192
Reads = 0
Writes 11
Fetches = 3020616
SQL> set stat on; execute procedure my_test; set stat off; commit;

    T2_COUNT
============
       10047

Current memory = 35657228
Delta memory = 8156
Max memory = 35788484
Elapsed time= 26.77 sec
Buffers = 8192
Reads = 0
Writes 15
Fetches = 3030428

SQL> set stat on; execute procedure my_test; set stat off; commit;

    T2_COUNT
============
        3359

Current memory = 35658076
Delta memory = 9004
Max memory = 35788908
Elapsed time= 27.07 sec
Buffers = 8192
Reads = 0
Writes 48
Fetches = 3098956
SQL> set stat on; execute procedure my_test; set stat off; commit;

    T2_COUNT
============
       13337

Current memory = 35654632
Delta memory = 5560
Max memory = 35788908
Elapsed time= 28.41 sec
Buffers = 8192
Reads = 0
Writes 5
Fetches = 3009588
SQL> set stat on; execute procedure my_test; set stat off; commit;

    T2_COUNT
============
        2100

Current memory = 35657668
Delta memory = 8580
Max memory = 35788908
Elapsed time= 28.22 sec
Buffers = 8192
Reads = 0
Writes 30
Fetches = 3059821
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535184
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitСделал вариант MyTest() с использованием прямого доступа вместо SQL. Скорость возросла на порядок.
TEST>do ##class(del.t1).MyTestDirect()
time=1.167889 s.
count=5636И конечно, при этом обеспечивается ACID, да ?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535438
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovGgg_oldОн же сам написал, что тест у него синтетический, но характеризует его задачу.

Повторяю ещё раз, медленно: он характеризует не задачу, а его решение. Вероятно - кривое
решение.


Пусть будет кривое решение.
Если бы сияние вашего нимба и не заслоняло небесную сферу то можно было-бы заметит звёзды.

- вставка на оракле не играет большого значения на скорость. достаточно закомментировать в тесте инсерте.
- рекурсивный селект есть и в АСА. будь он применим, тест был бы другой.
- немного теории: алгортмы поиска по графу. вы покажете пример weighted A* реализовынай рекурсивным селектом?
(Его особенность, заклёчается в том, что поиск ведётся не строго в глубину по графуа в зависимости от наибольшего веса.
т.е. может быть сначала джоин с уровня 10, потом с уровня 5, затем с уровня 8, затем опять с 5)
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535448
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНе понимаю, как вы хотите интерпретировать результаты: этот тест будет на каждом новом запуске вставлять разные числа строк в GTT `t2`.
Закон больших чисел. Тест выполняется достаточно большое кол-во раз.
К тому-же как вы заметили, кол-во вставок не велико, размер записи тоже маленкий, и коммита нет.
Спасибо за тест.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37535456
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько раз вы запускали свой тест ?
И еще: mikronи коммита нет.- я как раз использовал коммит для очистки GTT.
Правильно ли понимаю, что вы всё время добавляли новые данные в GTT'шку, а старые данные удаляли БЕЗ коммита ?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37536257
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидservitСделал вариант MyTest() с использованием прямого доступа вместо SQL. Скорость возросла на порядок.
TEST>do ##class(del.t1).MyTestDirect()
time=1.167889 s.
count=5636И конечно, при этом обеспечивается ACID, да ? Да, при прямом доступе поддержка ACID является одной из характеристик
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37536341
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите глупому человеку, эту конструкцию
mikron
Код: plaintext
1.
2.
3.
	    for cur in (select q.c2 from 
        ( select c2 from t1 where c1 = v_p order by abs(c3 - v_j) desc ) q
...
          v_p := cur.c2;
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37536523
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitТаблоидпропущено...
И конечно, при этом обеспечивается ACID, да ? Да, при прямом доступе поддержка ACID является одной из характеристик
globals featuresBy using the various Cache' locking operations in conjunction with transactions, you can perform traditional ACID transactions using globals. <...> When using Object or SQ L access, transactions are handled automatically. Насколько я понимаю, при прямом доступе к глобалам обеспечить ACID можно, только заблокировав их. И не только от записи, но и от чтения, иначе dirty read.
Далее, вот фрагменты из вашего теста:
#1.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ClassMethod Fill()
{
  set time=$zhorolog
  
  &sql(truncate table del.t1)
  
  for i= 1 : 1 : 1000  {
    for j= 1 : 1 : 20  {
      set c2=$random( 1000 )
      set c3=$random( 1000 )
      &sql(insert into del.t1(c1,c2,c3,c4) values(:i,:c2,:c3,:j))
    }
  }
  
  write "time=",$zhorolog-time," s.",!
}
Этот метод просто добавляет в таблицу-источник 20'000 строк, но тут нет "перекачки" данных в таблицу-времянку. Зачем ниже добавлена статистика по вызову только этого метода (TEST>do ##class(del.t1).Fill() time=.998096 s.) ?

#2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
[SIZE= 2 ]ClassMethod FillDirect()
{
  set time=$zhorolog
  
  do DISABLE^%NOJRN
  
  do ##class(del.t1).%KillExtent()
  
  set id= 0 
  for i= 1 : 1 : 1000  {
    for j= 1 : 1 : 20  {
      set id=id+ 1 
      set c2=$random( 1000 )
      set c3=$random( 1000 )
      set ^del.t1D(id)=$listbuild("",i,c2,c3,j)
      set ^del.t1I("i1",i,c3,c2,id)=""
    }
  }
  
  set ^del.t1D=id
  
  do ENABLE^%NOJRN
  
  write "time=",$zhorolog-time," s.",!
}[/SIZE]
- здесь также только загрузка 20'000 строк в глобал, но где основной цикл, в идёт котором "перекачка" данных во времянку ?
Кроме того, здесь предварительно отключено журналирование. А также нет тех самых "locking operations", которые и должны обеспечить ACID. Поэтому и такая скорость (TEST>do ##class(del.t1).FillDirect() time=.075046 s.).
А вот метод MyTest() уже вполне корректен. И скорость у него тоже адекватная - 13 сек.

ЗЫ. Кстати: на какой машине это выполнялось ?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37536748
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид ,

Как видно, код автора состоит из двух частей:
заполнение таблицы исходными данными;

собственно сама процедура my_test, которую автору и было интересно проверить для разных СУБД.ТаблоидЗачем ниже добавлена статистика по вызову только этого метода (TEST>do ##class(del.t1).Fill() time=.998096 s.) ?Цифры для первого этапа приведены были для полноты картины.

Таблоидздесь также только загрузка 20\'000 строк в глобал, но где основной цикл, в идёт котором "перекачка" данных во времянку ?Это происходит в методах MyTest() и MyTestDirect().
Метод FillDirect() приведён был лишь для сравнения с Fill().

ТаблоидЗЫ. Кстати: на какой машине это выполнялось ?Приводилось.
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37537174
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitЭто происходит в методах MyTest() и MyTestDirect().а, понятно: я не увидел тогда MyTestDirect. Так вопрос остается: как при работе этого MyTestDirect обеспечить:
1) чтобы разные коннекты писали данные в свои глобалы-"времянки" (аналоги GTT'шек в SQL), с полной невидимостью данных этих времянок для других коннектов ?
2) чтобы коннект_1 в процессе переносе данных из глобала t1 в t2 не видел изменений, которые в этом глобале происходят благодаря действиям других коннектов (также прямым доступом обращающихся к t1) ?
...
Рейтинг: 0 / 0
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
    #37538085
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид1) чтобы разные коннекты писали данные в свои глобалы-"времянки" (аналоги GTT'шек в SQL), с полной невидимостью данных этих времянок для других коннектов ?Уже обеспечивается. GTT в СУБД Caché основывается на Process-private Globals
Таблоид2) чтобы коннект_1 в процессе переносе данных из глобала t1 в t2 не видел изменений, которые в этом глобале происходят благодаря действиям других коннектов (также прямым доступом обращающихся к t1) ?Используя блокировки , транзакции и другие команды. Подробнее в Transaction Processing
...
Рейтинг: 0 / 0
117 сообщений из 117, показаны все 5 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / какая ДБМС самая "шустрая" для выполнения хранимых процедур?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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