Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Всем привет! Даже не знаю, туда ли я написал. Есть программа на Qt 4.8.1 (работает под виндой), Firebird 2.5.2. Драйвер собран из исходников Qt с использованием fbclient_ms.lib. Есть таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Таблица имеет 7680 записей. 30 - ADDR на каждый приходится 256 - TAG Выполняется запрос Код: sql 1. 2. 3. 4. В целом быстродействие удовлетворяет, но при первом обращение, обычно после перезагрузки компа первое обращение может выполняться до 5 и более минут, а последующие обращения занимают миллисекунды. И самое странное, что задержка возникает при вызове первого query->next(); Код следующий: Код: 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. Вот первый «query->next()» и тормозит дальше как по маслу. query создается в конструкторе: Код: plaintext 1. Предварительно db создается и открывается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. где threadID поле получаемое следующим образом: Код: plaintext 1. 2. Поток пока одни REAL_TIME = 1 AND REQ_WRITE = 0 устанавливает другое приложение. В принципе все работает, но вот при первом включение такая засада. Пробовал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Таже задержка только query->first(). В общем, не могу понять, как с этим бороться. Может, кто что подскажет? Буду очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 01:50 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agodaДаже не знаю, туда ли я написал. Не, не туда. Тут про С++, а у вас что-то другое. agodaпервое обращение может выполняться до 5 и более минут, а последующие обращения занимают миллисекунды База локальная. Может антивирус проверяет базу в первый раз? Потому что 7000 записей никак не могут считываться 5 минут - т.е. тут дело не в SQL, а в каких то посторонних факторах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 02:22 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agoda, Видимо, дело в бд, а не в клиенте. Первый fetch - это просто выполнение запроса до стадии получения первой записи. Попробуй проверить есть ли такой же эффект без использования этой программы, выполняя этот же запрос через какую-нибудь консоль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 07:45 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyagodaДаже не знаю, туда ли я написал. Не, не туда. Тут про С++, а у вас что-то другое. Прошу прощения, но я не нашел подходящего форума для такого вопроса. Толи база, толи код на С++, толи как вы написали антивирус. Увидел задержку после query->next() и решил написать в С++. Anatoly Moskovskyagodaпервое обращение может выполняться до 5 и более минут, а последующие обращения занимают миллисекунды База локальная. Может антивирус проверяет базу в первый раз? Потому что 7000 записей никак не могут считываться 5 минут - т.е. тут дело не в SQL, а в каких то посторонних факторах. Про антивирус я и не подумал, хотя на похожие грабли уже наступал. Спасибо, вечером попробую. База локальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 11:50 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyМожет антивирус проверяет базу в первый раз? В этом случае тормоза были бы на connect. Qt драйвер для Firebird вообще известен своей кривизной. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 12:04 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly MoskovskyМожет антивирус проверяет базу в первый раз? В этом случае тормоза были бы на connect. Qt драйвер для Firebird вообще известен своей кривизной. И как быть? Отказаться от Qt? Я, правда, еще не проверил теорию с антивирусом… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 12:43 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agodaИ как быть? Отказаться от Qt? Лично я бы так и сделал. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 12:47 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovagodaИ как быть? Отказаться от Qt? Лично я бы так и сделал. Мне нужен толстый клиент для нескольких рабочих станций виндовых и линуховых. Я пробовал Лазарус, но там были глюки с полосами прокруток, хинтами и т.д. Плюс, то что работало в винде не всегда работало в линухе. Попробовал Qt. Гуй как-то менее глючный показался. Да и с базой работал, только вылезло вот это неприятное место. А как на счет Qt SQL driver for Firebird with IBPP library qtfirebirdibppsqldriver? Я тут начал просматривать альтернативы… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 13:24 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly MoskovskyМожет антивирус проверяет базу в первый раз? В этом случае тормоза были бы на connect. Необязательно если коннект (вернее то что за ним стоит) выполняется сервером асинхронно. Как на самом деле - не знаю. Dimitry SibiryakovQt драйвер для Firebird вообще известен своей кривизной. Про кривизну драйвера - не буду спорить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 14:35 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agodaА как на счет Qt SQL driver for Firebird with IBPP library qtfirebirdibppsqldriver? На него жалоб вроде бы как не было. Anatoly MoskovskyНеобязательно если коннект (вернее то что за ним стоит) выполняется сервером асинхронно. Как на самом деле - не знаю. Как оно на самом деле в сервере - я знаю. А вот Qt драйвер - тёмная лошадка. А вообще-то при такой длинной задержке это всё должно тривиально проверяться с помощью штатного Firebird-овского isql. Если он ведёт себя так же - нужно копать сервер. Работает нормально - приложение. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 17:47 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
А вы знаете что на Qt можно писать вообще без использования QSQL модуля и без этих кривых драйверов. Вся мощь ODBC или какой-нибудь native library к вашим услугам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 17:56 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
White OwlА вы знаете что на Qt можно писать вообще без использования QSQL модуля и без этих кривых драйверов. Вся мощь ODBC или какой-нибудь native library к вашим услугам.Спасибо за рекомендацию. Я посмотрел, что в виндовой Qt 4.8.1 драйвер QODBC также нужно было собирать, и решил собрать QIBASE. Все заработало и ничего кроме fb не пришлось на машину ставить. Мне ничего другого не требовалось. Но вот наткнулся на такую проблему. У меня пока нет доступа к той машине, где приложение работает. Проверю теорию с антивирусом. Если не поможет, подумаю, чем воспользоваться ODBC или qtfirebirdibppsqldriver. Мне нужно, что бы и под виндой и под линухом одинаково работало. А можно ссылку на то как работать с ODBC без QtSql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 23:08 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agodaА можно ссылку на то как работать с ODBC без QtSql? С ODBC работать так: http://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx С Firebird работать так: http://www.ibphoenix.com/files/60ApiGuide.zip Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 23:13 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovagodaА как на счет Qt SQL driver for Firebird with IBPP library qtfirebirdibppsqldriver? На него жалоб вроде бы как не было.Попробую, если отключение антивируса не поможет. Dimitry SibiryakovА вообще-то при такой длинной задержке это всё должно тривиально проверяться с помощью штатного Firebird-овского isql. Если он ведёт себя так же - нужно копать сервер. Работает нормально - приложение. Дело в том, что такая задержка выскакивает не постоянно. Обычно при первом доступе после перезагрузки компа, но не всегда. У меня этот запрос выполняется в цикле и занимает до десяти миллисекунд. И только иногда такое происходит. В принципе подождать и дальше все работает. Но когда ждать нужно до пяти минут закрадывается сомнение, и люди нервничают. В общем я isql-ем пробовал у меня такой длительности не получалось но учитывая что у меня и в приложении это происходит не часто я не могу быть уверенным. Жаль, сегодня не получилось добраться до машины с приложением, очень хочется, что бы это был антивирус. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 23:21 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovagodaА можно ссылку на то как работать с ODBC без QtSql? С ODBC работать так: http://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx С Firebird работать так: http://www.ibphoenix.com/files/60ApiGuide.zip Спасибо, посмотрел. Чтобы не сильно менять уже готовое приложение придется написать свой врапер с интерфейсами, как у QSql. Или предстоит крутой рефакторинг. Если отключение антивируса не поможет, сразу попробую qtfirebirdibppsqldriver. Если там все плохо буду пробовать… :( Спасибо за то, что осветили путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 23:34 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agodaDimitry Sibiryakovпропущено... На него жалоб вроде бы как не было.Попробую, если отключение антивируса не поможет. Dimitry SibiryakovА вообще-то при такой длинной задержке это всё должно тривиально проверяться с помощью штатного Firebird-овского isql. Если он ведёт себя так же - нужно копать сервер. Работает нормально - приложение. Дело в том, что такая задержка выскакивает не постоянно. Обычно при первом доступе после перезагрузки компа, но не всегда. У меня этот запрос выполняется в цикле и занимает до десяти миллисекунд. И только иногда такое происходит. В принципе подождать и дальше все работает. Но когда ждать нужно до пяти минут закрадывается сомнение, и люди нервничают. В общем я isql-ем пробовал у меня такой длительности не получалось но учитывая что у меня и в приложении это происходит не часто я не могу быть уверенным. Жаль, сегодня не получилось добраться до машины с приложением, очень хочется, что бы это был антивирус. Так может это банально кэш набивается ... Кэш субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 23:56 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agodaDimitry Sibiryakovпропущено... С ODBC работать так: http://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx С Firebird работать так: http://www.ibphoenix.com/files/60ApiGuide.zip Спасибо, посмотрел. Чтобы не сильно менять уже готовое приложение придется написать свой врапер с интерфейсами, как у QSql. Или предстоит крутой рефакторинг. Если отключение антивируса не поможет, сразу попробую qtfirebirdibppsqldriver. Если там все плохо буду пробовать… :( Спасибо за то, что осветили путь. Не делай ничего, пока не выяснишь причину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 23:57 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
MasterZivТак может это банально кэш набивается ... Кэш субд. Он набивается при execute, не при fetch. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 00:00 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
MasterZivagodaпропущено... Попробую, если отключение антивируса не поможет. пропущено... Дело в том, что такая задержка выскакивает не постоянно. Обычно при первом доступе после перезагрузки компа, но не всегда. У меня этот запрос выполняется в цикле и занимает до десяти миллисекунд. И только иногда такое происходит. В принципе подождать и дальше все работает. Но когда ждать нужно до пяти минут закрадывается сомнение, и люди нервничают. В общем я isql-ем пробовал у меня такой длительности не получалось но учитывая что у меня и в приложении это происходит не часто я не могу быть уверенным. Жаль, сегодня не получилось добраться до машины с приложением, очень хочется, что бы это был антивирус. Так может это банально кэш набивается ... Кэш субд.А как это проверить? Да и иногда запрос не возвращает ни одной записи, а тормоза все равно присутствуют. Хуже то, что та машина, где это проявляется, у заказчика и географически далеко расположена. И перегружать ее часто не желательно. А у меня на машине этого глюка я не наблюдал. Спасибо за советы. Я теперь хоть знаю, куда смотреть в случае чего. Переделывать, конечно, сразу не буду бросаться. Как че узнаю, сюда напишу, чем дело закончилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 09:50 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
agodaмашина, где это проявляется, у заказчика и географически далеко расположена. И перегружать ее часто не желательно. А у меня на машине этого глюка я не наблюдал. Тогда вопрос на засыпку: а ты действительно абсолютно уверен, что тормозит именно вызов next?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 13:31 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Со слов бухгалтера :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 13:41 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovMasterZivТак может это банально кэш набивается ... Кэш субд. Он набивается при execute, не при fetch. Это ни ты, ни я не знаем, когда он набивается. Но я тебе точно скажу, на 100%, fetch тоже может помещать данные в кэш. И если напр. ты не вызовешь лишний раз fetch, кэш останется нетронутым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:10 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто ни ты, ни я не знаем, когда он набивается. Мы говорим не о MS SQL, а о Firebird, не забывай. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:27 |
|
||
|
QSqlQuery + Firebird длительное ожидание ответа на query->next()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovagodaмашина, где это проявляется, у заказчика и географически далеко расположена. И перегружать ее часто не желательно. А у меня на машине этого глюка я не наблюдал. Тогда вопрос на засыпку: а ты действительно абсолютно уверен, что тормозит именно вызов next?.. Уверен, у меня есть лог, в котором записаны времена выполнения каждой функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:37 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38391756&tid=2019926]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 195ms |

| 0 / 0 |
