|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
mikron Я удивляюсь, сколько здесь людей, которые не умеют читать :)Вы спрашиваете каким именно микроскопом лучше забивать гвозди. Вам отвечают, что лучше это делать молотком. Вы обижаетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2011, 18:29 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
SERG1257mikron Я удивляюсь, сколько здесь людей, которые не умеют читать :)Вы спрашиваете каким именно микроскопом лучше забивать гвозди. Вам отвечают, что лучше это делать молотком. Вы обижаетесь. ни в коем разе не обижаюсь. Пусть будет по вашему. вы мне подксажите, каким микроскопом быстрей? П.С. Тест для АСА может в понедельник накатаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2011, 18:48 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
SERG1257mikron Я удивляюсь, сколько здесь людей, которые не умеют читать :)Вы спрашиваете каким именно микроскопом лучше забивать гвозди. Вам отвечают, что лучше это делать молотком. Вы обижаетесь. Человек спрашивает каким образом быстрее и качественне скрепить 2^N досок. Сейчас он пользуется микроскопом.. Я бы вместо молотка посоветовал шеруповерт. Качество выше ( гвозди гаранитровано не загибаются), усилий меньше, (не нужно махать) и т д. Я бы тему сформулировал так : молоток( микроскоп) vs шуруповерт( или другой инструмент, что бы руками не махать) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2011, 19:12 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
mikronПусть будет по вашему. вы мне подксажите, каким микроскопом быстрей? Оракулом. Его ХП быстрее всех выполнит тучу простых запросов типа "select 0 from dual". Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2011, 19:46 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
mikron, на абстрактный вопрос, где ХП теоретически могут выполнятся быстрее чем у других, я бы посоветовал DB2. Ее ХП компилируются в dll и аттачатся к серваку. Т.е. в теории накладных расходов на интерпретация как-бы меньше. Но у всех приличных серваков давно существует кэш процедур, кэш планов итп вещи, так что не все так однозначно. И на счет АСА вы не говорили, что вас не интерисуют идеи по поводу ее ускорения. Во всяком случаем реакции на мое предложение поиграться уровнем оптимизации не последовало. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2011, 20:41 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
mikronВозник пока теоретичекий вопрос, а какая ДБМС самая "шустрая" при обработки последователности многих относително лёгких запросов из процедур.Чтож, на столь теоретический вопрос, теоретический ответ: В некоторых случаях быстрее будет одна СУБД, в других- другая, а в третьих - третья. Подробнее: Если у нас есть процедуры и в них запросы Z k (k=1.n) ; СУБД S k (k=1..n) , каждая с параметрами для оптимизации PS k,n причем они для каждой СУБД разные, и некоторые параметры немного ускоряют некоторые запросы, но сильно замедляют другие, а другие параметры сильно ускоряют одни запросы но немного замедляют другие.. то очевидно - см. выше. mikronЯ удивляюсь, сколько здесь людей, которые не умеют читать :) Для тех, кто читает через слово: меня не волнуют: <skip> меня инересует _сравнение_ ДБМС.ок, а теперь, оффтоп (дл тех, кто не понимает ответы): у меня есть легковая машина, она начала слегка перегреваться, оказалось, надо долить охлаждающую жидкость. Я думаю теоретически, может быть не доливать, а купить другую машину, которая будет лучше работать в этих условиях? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2011, 13:00 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
Ggg_oldя бы посоветовал DB2. Ее ХП компилируются в dll и аттачатся к серваку.К сожалению, эта информация немного устарела. Лет так на несколько. Если речь о DB2 LUW, конечно - вряд ли тут кого интересуют мейнфреймы :) В DB2 LUW ХП писанные и на SQL PL, и на PL/SQL компилячатся в один и тот же байт-код, исполняемый сервером. Похоже на Оракл. Другое дело, что триггеры и функции на спец. подмножестве SQL PL вообще не компилячаться, а inline подставляются в вызвавший запрос и с ним оптимизируются, что м.б. весьма эффективно. Кроме того, можно писать ХП на нативных и не очень языках (C++, Java, ...). А вот компиляченный C++ уже может выполняться в адресном пространстве сервера, экономя ресурсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 14:08 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
mikronодин вызов процедуры приводик к выполению ~10000 легковесных запросов и ~ 1000 инсертов/делитов из временных таблицА вот тут я бы посоветовал DB2 по другой причине - в ХП может применяться "статическая" компиляция запросов (не динамических, конечно) - их синт. анализ, оптимизация и план строятся при первом выполнении (или при компиляции), серьезно экономя время. Перестроить планы можно отдельной командой во время минимальной нагрузки или после серьезного изменения данных. PS. Такое количество запросов в одной ХП наталкивают на мысль об необходимости использования комплексных CTE вместо этой кучи. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 14:15 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
Вот попытался изобразить основной паттерн использования для Сайбейс АСА. Давате мерятся, кто быстрее. На АСА-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.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 15:15 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
ДохтаРЧеловек спрашивает каким образом быстрее и качественне скрепить 2^N досок. ещё один писАтель. Где это я спашивал, "каким образом"? Не припомню. А спрашивал "каким микроскопом/шуруповертом/... (по фантазии читателя) удобней". А на грабли я сам наступать мастер. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 15:55 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
S.G.В некоторых случаях быстрее будет одна СУБД, в других- другая, а в третьих - третья. Никто не отрицает. Я надеюсь что вы так-же не станете отрицать очевидный факт, что есть базы данных, которые лутше подходят для ОЛТП, есть которые специализируются на аналитику, есть специфические, для ХМЛ, для больших обёмов данных, обейтно-ориентированные и т.д. и т.п. И у некоторых здесь есть большой опыт, который подксазывает, что безполезно ожидать напимер от террадаты победы в ОЛТП десциплине. Вот собственно эти мнения мне и интересны. И вобще, зачем я обьясняю банальные вещи. Ну давайте сравнивать. S.G.у меня есть легковая машина, она начала слегка перегреваться, оказалось, надо долить охлаждающую жидкость. Я думаю теоретически, может быть не доливать, а купить другую машину, которая будет лучше работать в этих условиях? Для тех, кто в мышинах соображает лутьше чем ИТ> А может действительно лутше новую? Кто сказал что в охлаждаёшей жидкости дело? А может масло стало в систему охлаждения гнать? А может я на машине стал прицепы тяжёлые таскать, и всё с полной нагрузкой. А может мне вобще самосвал нужен а не пежо 106. . Вот и судят некоторые опрометчево, и доливают воды, а через месяц машина в хлам. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 16:17 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
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.",! } } Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
PS: вместо SQL можно использовать прямой доступ. В этом случае скорость будет ещё выше. Для примера см. FillDirect() . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 19:42 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
у меня на аса 10.0.1 на машинке с одним сата винтом, кор2дуо, 1гб вышло около 35 секунд. Поигрался уровнями оптимизации оптимизатора, сущесвенной разницы не заметил. count(*)=1452 Есть вопрос по тесту. По сути в цикле выполняется многократно один и тот же запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
т.е. условие в поиске where c1 = @p константное! В таком случае, оно либо закешируется, либо єто будет просто тест кєшпамяти и процессора. В такой ситуации все равно, насколько интерпретатор хранимок будет быстро их интерпретировать, все упрется в скорость выполнения этого курсора. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 20:48 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
Ggg_oldт.е. условие в поиске where c1 = @p константное!Разве p и j постоянны? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 22:02 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
Да, извините, проглядел насчет константности. Но все равно, основная нагрузка - выполнение селекта, а не мелкие вычисления в цикле. Т.е. не суть принципиально, во что там компилит текст хп движок сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 22:06 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
Ggg_old , Для чистых вычислений, думаю лучше использовать С++ с задействованием GPU, например с помощью интерфейса CallIn . PS: Опыт использования GPU для финансового моделирования (C#) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 22:30 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
так то ж не мне нужно, а топикстартеру. Может ему действительно будет лучше написать хп на жаве, загнать исходную таблицу в какой-нибудь массив или иной контейнер и произвести расчет на низком уровне не прибегая к внутренним select'ам? вон на каше как лихо вышло.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 00:24 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
хе-хе, а дома на SA12 на белом iMac (c2d 2.16ГГц) под макосх 45-50 сек! Сижу вот офигеваю, то ли мак такой тормозной, то ли SA12 тормознее на этом тесте чем десятка. Порою дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 00:55 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
микрон, готовь магарычи :) разогнал с 50сек до 36. правда заставляет задуматься, что есть некий косячек в реализации, можно продолжить в вашем топике сайбезовой ветки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 02:08 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
микрон, профайлер показал, что треть времени в функции тратится на строку 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. Жду отзывы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 10:40 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
Ggg_oldмикрон, профайлер показал, что треть времени в функции тратится на строку set @j = round(1000 * rand(), 0); Жду отзывы :) Опа, интересный результат. на днях посмотрю / проверю. На АСА 11 тест проходит за 31 сек. Машина примерно одинакового класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 11:19 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
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.
Код: 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.
35 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 12:21 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
select count(*) перед функцией а не после %) ну ладно... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 12:28 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
микрон, проверил на работе на SA10. Результат 36 сек с round против 30сек с truncnum() 15-20 прирост на ровном месте.. :) дрючте сайбезовый саппорт.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 15:09 |
|
какая ДБМС самая "шустрая" для выполнения хранимых процедур?
|
|||
---|---|---|---|
#18+
Сделал вариант 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 17:13 |
|
|
start [/forum/topic.php?fid=35&msg=37515617&tid=1552619]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 246ms |
total: | 394ms |
0 / 0 |