|
Почему разная скорость запроса из 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 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаДополнительные сведения см. на веб-сайте справки и поддержки Майкрософт. ______________________________________________________________ Поубывав бы... Дедусь, а ты https://support.microsoft.com/ru-ru/help/917607/error-opening-help-in-windows-based-programs-feature-not-included-or-h сделай и будет тебе счастье. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 07:35 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
"Счастье" будет скорее, если он на эту чепуху вообще время тратить не будет. Если уж чем-то техническим заниматься, чтобы руки/голову почесать - лучше уж тогда пару статеек написать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 11:20 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаМнэээ... TStrings? да пофиг. Это был пример того, что удобный в использовании код внезапно может оказаться причиной основных тормозов приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 11:56 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, да там на пару минут. Вообще это лечится копированием одного файла из Windows XP. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 12:01 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Я вообще-то знаю, задолго до твоей ссылки. И он сам, конечно, нашёл бы решение, если бы хотел. Но ему нефиг такой фигнёй маяться, и правильно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 12:10 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
GallemarСтарый плюшевый мишкаДополнительные сведения см. на веб-сайте справки и поддержки Майкрософт. ______________________________________________________________ Поубывав бы... Дедусь, а ты https://support.microsoft.com/ru-ru/help/917607/error-opening-help-in-windows-based-programs-feature-not-included-or-h сделай и будет тебе счастье. Заклинание сработало, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 13:52 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам"Счастье" будет скорее, если он на эту чепуху вообще время тратить не будет. Если уж чем-то техническим заниматься, чтобы руки/голову почесать - лучше уж тогда пару статеек написать. Неправ. Мало ли, на работе вылезет какой мой косяк, с которым сами не разберутся, позвонят. Придётся лезть. Инструмент должен быть в рабочем состоянии. Дельфи, FB, сорцы и базу без данных на момент ухода я установил себе на домашний. А статьи - помилуй, я не понимаю 80% кода, проблемы которого здесь обсуждаются, слов таких не знаю. Какие, в пень, статьи. Мне больше слушать и меньше трындеть полагается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 13:58 |
|
Почему разная скорость запроса из IBExpert и из программы?
|
|||
---|---|---|---|
#18+
С> А статьи - помилуй, я не понимаю 80% кода, проблемы С> которого здесь обсуждаются, слов таких не знаю. Так я не про новомодное, а про те же хранимые агрегаты. В одну статью, может, не уместишься, а вот пару статей с конкретными примерами было бы неплохо почитать, тем более, что у тебя вон и формулировки замечательные были (типа что можно хранить, что нельзя - я, например, совсем иначе хранил), и даже готовые БД и исходники с примерами скопипастены. На эту тему (тем паче в примерах с FB) инфы очень мало. ДС как-то создал тут тему, так так даже обсуждения как такового не получилось. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 14:13 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561436]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 165ms |
0 / 0 |