|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Доброго времени суток, помогите разобраться? Вот такой незамысловатый запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Из IBExpert выполняется отлично, все данные за несколько секунд. Сбацал все это в поток в Делфи, вот так Код: pascal 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.
скорость на пару порядков медленнее, чем из IBE, почему? Есть процедура, делающая почти то же самое (заремаренная строчка). Если выгружать через нее, то скорость нормальная и из Делфи. Но хочется понять, почему запрос-то из программы так медленно работает? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 09:22 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Devillio, в IBExpert кнопочку FetchAll пробовал нажать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 09:33 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Симонов Денис, конечно )) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 09:41 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Devillio, может посмотрим на план? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:17 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
rdb_dev, это в IBExpert План PLAN SORT (JOIN (N T INDEX (TFIOS_IDX_COMMON), N S INDEX (PK_SPFIOS))) PLAN (TC ORDER PK_TCATALOG) ------ Информация о производительности ------ Время подготовки запроса = 15ms Время выполнения запроса = 16ms Среднее время на получение одной записи = 0,55 ms Как в делфи посмотреть - не знаю :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:28 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
А точно запрос тормозит, а не заполнение FIOsList? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:38 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Exteris, есть процедура (заремаренная "CONSTRUCTFIOSLIST"), она собирает такой же список фамилий, как и запрос, только "перебором". Вот если выполнять ее, то она тоже работает быстро (из программы). Ну может чуть медленнее, чем запрос через List в IBE. Т.о. разница только в работе самого запроса, делфийская составляющая, как мне кажется, работает правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:43 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Если запрос выполняется несколько секунд, то нахрена вся эта возня с тредами, ждалками и т.п. Вот я разносил по тредам сборы отчетов, которые идут от 5 минут и дольше. DevillioНо хочется понять, почему запрос-то из программы так медленно работает?Трассировку включи (предполагаю, что ФБ не ниже 2.5) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 11:54 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Devillio> Т.о. разница только в работе самого запроса, делфийская Devillio> составляющая, как мне кажется, работает правильно. А замеры что показывают? Если всё это из потока вынести то же самое? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:00 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
DevillioВремя подготовки запроса = 15ms Время выполнения запроса = 16ms сильно сомневаюсь, что эти данные получены при FetchAll (кнопочка такая с ДВУМЯ треугольниками). В первую очередь надо - вытащить код из thread, и оформить его в тестовом приложении по кнопке - замерить время полного выполнения, потом закомментировать FIOsList, и померять еще раз. p.s. Как-то раз столкнулся с тем, что очень медленно грузились данные из текстового файла. Оказалось, что виноват TStringList. Пришлось переделать обработку на обычный textfile. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:17 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
DevillioТ.о. разница только в работе самого запроса, делфийская составляющая, как мне кажется , работает правильно. Ты наивен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:20 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
kdv, TStringList - вообще жутко тормозная вещь. Что, в общем, ппонятно - если посмотреть на его весьма больше список методов, свойства и даже событий. Жаль в ранних Delphi не было TList<string> ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:53 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Сравнение с IBE сильно не честное Devillio Код: pascal 1.
Вот этой дополнительной паузы у IBE нет. Devillio Код: pascal 1.
И этой нет. А это потенциально - считывание ВСЕЙ таблицы с диска и сборка мусора по ней. Devillio Код: pascal 1.
И этой - нет. Devillio Код: pascal 1.
И этой - нет. Devillio Код: pascal 1. 2. 3. 4.
А вот здесь ты просто выпрашиваешь access violation Devillio Код: pascal 1. 2. 3.
А здесь вообще тихий ужас и таймаут неопределенной длительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:58 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Arioch> LaDB.Connected := True; > Вот этой дополнительной паузы у IBE нет. > А вот здесь ты просто выпрашиваешь access violation Желаю чтобы все! (с) Человек же русским по белому говорит, что с процедурой у него всё нормально работает. Тут выяснять надо, где и кто/что кому врёт, а ты ему про перламутровые пуговицы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 13:13 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Благодарю всех за варианты и советы!! Arioch, работает же, никаких violation уже с год у кучки народа. Просто ни разу. Т.е. с порядка нескольких десятков тысяч запусков. если изменить вот так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
То все летает почти так же, как и из IBExpert. CONSTRUCTFIOSLIST делает ровно то же самое, что и этот запрос с list, только без list, через перебор записей (через list в IBE чуть быстрее). Т.о. вывод напрашивается - дельфийская составляющая, очень похоже, что ни при чем. То есть, естественно, при чем, но я имею ввиду весь орнамент, который Arioch выделил - он не при чем. Никаких StringList там нет. Там TDictionary(Integer, String) Зачем выделено в поток? Программа для библиотеки. Библиографы (их много) делают различные выборки постоянно. От пары-тройки публикаций до тысяч. Программа, получив один раз при запуске (в потоке, чтобы не было задержек запуска) списки авторов для всех публикаций, при запросах выборок очень быстро работает. Списки просто рисуются в OnGetDataText. Предыдущая версия собирала списки при каждом запросе, разница очень заметна. Я тупо не знал про list, когда делал ))) недавно вот узнал, хотел "оптимизировать", а оно вононоче )) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 13:18 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, вот!! Спасибо ))) Да, так и есть ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 13:19 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Devillio> Программа, получив один раз при запуске (в потоке, чтобы не было задержек запуска) списки авторов для всех публикаций, при запросах выборок очень быстро работает. Для чего и как вопрос десятый, это дело хозяйское. Но если не знаешь в чем проблема, первое что нужно делать - локализовать её отбросив всё лишнее. Сначала поток, потом предварительный запрос к TCATALOG (просто замени на число), потом всё остальное по одному - пока не поймаешь разницу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 13:24 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 14:06 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
kdv, благодарю за наводку! Исправил так: SelectSQL.Add('select cast(list(NAME, '', '') as VARCHAR(4000))'); (4000 - просто что взбрело в голову, 2000 - не прошло, есть публикации где авторы не вместились о.о) Все полетело, прям заметно ускорилось относительно скорости варианта с процедурой. Что-то с блобами. Интересно, почему тот запрос без cast в IBE работает быстро ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 14:38 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Если бы дело было с БЛОБами, то медленно было бы и с IBE. Или у тебя IBE "на сервере", а поток - на клиенте "за тридевять земель"? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 14:57 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, нет, конечно. И клиент, и IBE за тридевять земель. Нет-нет, именно с блобами. Видите, если сделать на сервере в запросе cast и данные пойдут как строка - все хорошо. Причем, при получении результата запроса с колонкой bloba не только безумно медленно приходят списки авторов в потоке, но и весь клиент явно работает тяжело - дергается как-то, медленно реагирует на мышь, комбобоксы видно как прорисовываются при открытии. А если запрос идет со строчкой - все как обычно, легко и пушисто. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 15:05 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
DevillioArioch, работает же, никаких violation уже с год у кучки народа. Привычка плохая. С этими объектами в этих условиях работает. С другими объектами или даже с другой библиотекой - может перестать. А у тебя такого кода будет по всей программе распихано, ищи потом где именно и почему именно поехало. Ну хотя, если вовремя уйдешь на лучшее место, то это будут уже не твои проблемы Devillioс порядка нескольких десятков тысяч "select * from table" тоже по первому времени оооочень хорошо работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 15:20 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
DevillioИнтересно, почему тот запрос без cast в IBE работает быстро а ты уверен, что он реально сами блобы вычитывает? Я вот думаю, что нет - зачем ему это делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 15:22 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Ariochблобы вычитывает? Я вот думаю, что нет - зачем ему это делать? а вот да. компоненты могут вытаскивать блобы по мере чтения записей, как это BDE делает. А могут не вытаскивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 18:29 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Ariochkdv, TStringList - вообще жутко тормозная вещь. Что, в общем, ппонятно - если посмотреть на его весьма больше список методов, свойства и даже событий. Жаль в ранних Delphi не было TList<string> Мнэээ... TStrings? Кстати. Будучи дремучим склеротиком и не заглядывая в Delphi c 26 мая, засомневался в наличии буквы s на хвосте. Не поленился запустить, набрать слово и нажать F1. Вылез хелп по MS Windows и стал объяснять ____________________________________________________________ Почему не удается получить справку по этой программе? Справка для этой программы была создана в формате справки Windows, который зависит от компонента, не входящего в данную версию Windows. Для просмотра справки, созданной в формате справки Windows, можно загрузить специальную программу. Дополнительные сведения см. на веб-сайте справки и поддержки Майкрософт. ______________________________________________________________ Поубывав бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 21:37 |
|
|
start [/forum/topic.php?fid=40&fpage=41&tid=1561436]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 303ms |
total: | 434ms |
0 / 0 |