Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

kaktus1983
Подключение к каждой БД одинаково по времени длится 30-45 сек.

А сколько времени длится подключение из ISQL?

Posted via ActualForum NNTP Server 1.5

24 окт 21, 01:16    [22387313]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
dennis-r
Member

Откуда:
Сообщений: 236
kaktus1983
Softologic,
Полностью поддерживаю ваше мнение, Fib+ отличные компоненты, и я даже не знаю альтернатив, несмотря на то, что они уже долго не поддерживаются.
По началу, да, всё красиво, простенький проект накидать - замечательно: датасеты, мастера запросов, прочее. Но, когда таблицы начинают измеряться сотнями, то приходишь ко всяким MVC, MVVM, MVP, etc. (нужное подчеркнуть). И, внезапно, от компонентов доступа требуется лишь выполнение запроса и... всё! Остальное делается своим велосипедом фреймворком.

Сообщение было отредактировано: 24 окт 21, 01:22
24 окт 21, 01:21    [22387314]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Softologic
Member

Откуда: Питер
Сообщений: 393
dennis-r
kaktus1983
Softologic,
Полностью поддерживаю ваше мнение, Fib+ отличные компоненты, и я даже не знаю альтернатив, несмотря на то, что они уже долго не поддерживаются.
По началу, да, всё красиво, простенький проект накидать - замечательно: датасеты, мастера запросов, прочее. Но, когда таблицы начинают измеряться сотнями, то приходишь ко всяким MVC, MVVM, MVP, etc. (нужное подчеркнуть). И, внезапно, от компонентов доступа требуется лишь выполнение запроса и... всё! Остальное делается своим велосипедом фреймворком.

Сейчас у меня ровно такая же картина маслом. Прям один в один. Оглядываясь с ужасом на легаси-проекты с сотней датасетов в датамодуле, приходишь к полному переосмысливанию подхода. Теперь она сводится к написанию своей многопотоковой модели фреймворка, но с использованием асинхронно-событийных компонент (для работы с почтой, sip-телефонией, БД в облаке и пр.). И таки да, "велосипедить" свой MVC как то тоже вынуждает общая ситуация.

P.S: Однако, подытожу - новичкам сразу в MVC и во всякие многопоточные, да асинхронно-событийные модели все равно нырять рановато - это уже открытое море практически, пусть "в лягушатнике поплавают" для начала :)

Сообщение было отредактировано: 24 окт 21, 01:38
24 окт 21, 01:35    [22387315]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3580
Dimitry Sibiryakov
Внезапно: fbclient.


Можно подумать, что ты каждый раз для выполнения какого-нить запроса всю эту цепочку апишных вызовов пишешь.
Ага, ага...
24 окт 21, 10:16    [22387332]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

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

Нет, я халявлю, сокращая цепочку до одного isc_dsql_exec_immed2().

Posted via ActualForum NNTP Server 1.5

24 окт 21, 12:15    [22387347]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8877
Dimitry Sibiryakov
IBExpert
Можно подумать, что ты каждый раз для выполнения какого-нить запроса всю эту
цепочку апишных вызовов пишешь.

Нет, я халявлю, сокращая цепочку до одного isc_dsql_exec_immed2().
Одно дело системная утилита и обертка настроечная для оной, другое софтина кучей гуя, чтоб обслуживать торговлю, например, или медицину.
24 окт 21, 12:38    [22387352]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

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

В чём другое? Выше уже упоминались всякие зубодробительные аббревиатуры, где в
слое доступа к БД простые запросы, в слое гуя простые контролы, а между ними
ходят объекты бизнес-логики, складываемые из запросов на одном конце и
раскладываемые по контролам на другом.

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

Posted via ActualForum NNTP Server 1.5

24 окт 21, 12:44    [22387353]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3580
Dimitry Sibiryakov
Нет, я халявлю, сокращая цепочку до одного isc_dsql_exec_immed2().


Да не свисти, даже для этого есть смысл написать простейшую обертку, а не прописывать десяток параметров каждый раз.
24 окт 21, 14:36    [22387365]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

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

С учётом переползания на новое API у меня есть обёртки для транзакции, статуса и
статического буфера. Этого достаточно чтобы код свёлся к database->execute или
openCursor.

Posted via ActualForum NNTP Server 1.5

24 окт 21, 14:47    [22387369]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3580
Dimitry Sibiryakov
у меня есть обёртки для транзакции, статуса и
статического буфера.


Вот теперь верю. И пафосное "я пишу на голом апи" превращается в банальное "у меня собственные обертки только для необходимого мне функционала".
24 окт 21, 14:56    [22387373]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

IBExpert
пафосное "я пишу на голом апи" превращается в банальное "у меня собственные
обертки только для необходимого мне функционала".

Обёртка для транзакции это полэкрана, в основном занятые фигурными скобками, а
для остального у меня собственные реализации, ибо от того, что "в коробке" меня
тошнит.

Posted via ActualForum NNTP Server 1.5

24 окт 21, 15:18    [22387380]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3580
Dimitry Sibiryakov
от того, что "в коробке" меня тошнит.


"Ты просто не умеешь их готовить" (с)
Разработчик, способный за разумное время написать свои обертки Database/Transaction/Query над фбшным АПИ, тем более способен настроить фибы и получить от них нужный результат. Вплоть до физического выпиливания ненужного и вредного, по его мнению. И времени у него на это уйдет существенно меньше, чем на изобретение собственного велосипеда.
24 окт 21, 17:31    [22387396]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63459
Это у Димы пунктик такой - у FIBPlus есть фатальный недостаток -
их написал не он. (с) Так что надо относиться с пониманием. :)
24 окт 21, 17:35    [22387397]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Мне всё равно кто их написал, но в них в принципе нет двух вещей, которые я
считаю важными для "софтины кучей гуя, чтоб обслуживать торговлю, например, или
медицину":
1) Background fetch, который должен устранить тормоза на прокрутке грида;
2) Сброс кэша записей на диск, из-за чего они известны своим "out of memory".

PS: В файердаке их тоже нет.

Posted via ActualForum NNTP Server 1.5

24 окт 21, 18:30    [22387404]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Softologic
Member

Откуда: Питер
Сообщений: 393
Dimitry Sibiryakov
Мне всё равно кто их написал, но в них в принципе нет двух вещей, которые я
считаю важными для "софтины кучей гуя, чтоб обслуживать торговлю, например, или
медицину":
1) Background fetch, который должен устранить тормоза на прокрутке грида;
2) Сброс кэша записей на диск, из-за чего они известны своим "out of memory".

PS: В файердаке их тоже нет.

А в Унидаке (и прочих даках) от Деварта?

Сообщение было отредактировано: 24 окт 21, 19:00
24 окт 21, 19:01    [22387412]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772
Нигде нет. Потому что архитектура DB VCL была создана для Windows 3, где
мнопоточности не было в принципе, и с тех пор не пересматривалась.

PS: А кэш резал-сета на диске был в BDE, но с тех пор это потерянная технология.

Сообщение было отредактировано: 24 окт 21, 19:04
24 окт 21, 19:04    [22387413]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8877
Dimitry Sibiryakov
1) Background fetch, который должен устранить тормоза на прокрутке грида;
Да, была бы зело полезная фича.
Dimitry Sibiryakov
2) Сброс кэша записей на диск, из-за чего они известны своим "out of memory".
Сдается мне будет только провоцировать писать г****код. Толку мало. Если резалтсет не убрался в пару гиг озу, значит "консерватория" уже давно плачет горючими слезами.
24 окт 21, 19:07    [22387415]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Softologic
Member

Откуда: Питер
Сообщений: 393
Dimitry Sibiryakov
Нигде нет. Потому что архитектура DB VCL была создана для Windows 3, где
мнопоточности не было в принципе, и с тех пор не пересматривалась.

Если это так, почему вам не запилить свои даки, с конкретным конкурентным преимуществом, актуальным ныне ? И будет эдакий пассивный доход в итоге.
24 окт 21, 19:08    [22387416]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Я же, кажется, русским по белому сказал, что главная проблема на этом пути -
архитектура VCL...

Posted via ActualForum NNTP Server 1.5

24 окт 21, 19:29    [22387421]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Softologic
Member

Откуда: Питер
Сообщений: 393
Dimitry Sibiryakov
Я же, кажется, русским по белому сказал, что главная проблема на этом пути -
архитектура VCL...

Вы из Великих. А они знают альтернативные пути, я полагаю :)
24 окт 21, 19:32    [22387423]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2653
Имхо.
По-быстрому какое-нибудь говно (одноразовая программа) накодить - лучше фиблюсов как бы и нет.
По-быстрому объяснить студенту, как говнокодить с фаербердом, показать редактируемый датасет с раздельными транзакциями - тоже фиблюс.
...
А из своего старого кода редактируемые датасеты практически удалены, используются три компонента: TpFIBDataBase, TpFIBTransaction да TpFIBQuery, да и то не в "чистом" виде, а класс-обертка либо интерфейс. То есть, пофиг уже, что импользовать - фибы, айбиикс или уибы, или вообще самопальщину как у ДС...
Но вот новичкам без волшебных DAC-ов не обойтись, вернее, они не станут использовать фаерберд без простых и доступных "драйверов"...

Сообщение было отредактировано: 24 окт 21, 21:47
24 окт 21, 21:48    [22387463]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Softologic
А они знают альтернативные пути, я полагаю :)

Ну так вон выше же ясно написано что это за альтернатива: микро-обёртки для
нужного функционала и полное игнорирование db-aware куска.

Posted via ActualForum NNTP Server 1.5

24 окт 21, 22:15    [22387470]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2653
Dimitry Sibiryakov

...и полное игнорирование db-aware куска.

Да был бы он попроще, этот кусок.
Наследник TCustomDataSource (источник данных гридов от DevEx, "режим провайдера") написать свой - работы требуется от нескольких минут, а справиться со всеми абстрактными загибами дельфийского TDataSet - скучать начинаешь уже на этапе изучения.
24 окт 21, 22:31    [22387474]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Softologic
Member

Откуда: Питер
Сообщений: 393
Dimitry Sibiryakov

1) Background fetch, который должен устранить тормоза на прокрутке грида;

Я сейчас местами в качестве грида использую широко известный в узких кругах VirtualTreeView. На данный момент пока в основном потоке использую подгрузку данных из БД ровно того количества записей, которые помещаются в видимые пределы контрола VT + несколько записей до и несколько после (что то вроде кэша в памяти получается). В этом мне помогает событие OnAfterPaint. В общем, я подгружаю ровно то, что хочет видеть пользователь, и немного еще.
В общем, оно и так не тормозило никогда доселе (выкачать с сервака 20-50 записей единовременно не проблема), но в идеале мне ничего не мешает эту подгрузку засунуть в другой поток. Чтоб уж наверняка все было максимально "антифризно" и мягко.

P.S: Поскольку порядок узлов мне известен, мне не составит труда вычислить первый и последний видимые узлы:
+
  x:=TV.ClientRect.Left + 5;
  y:=TV.ClientRect.Top - 25;

  NodeFirst:=TV.GetNodeAt(x, y);

  x:=TV.ClientRect.Left + 5;
  y:=TV.ClientRect.bottom + 25;

  NodeLast:=TV.GetNodeAt(x, y);

Ну а дальше, вычислить несколько предшествующих и последующих - дело техники.

Сообщение было отредактировано: 25 окт 21, 01:44
25 окт 21, 01:39    [22387525]     Ответить | Цитировать Сообщить модератору
 Re: Слишком долгое подключение и выполнение первого запроса.  [new]
Softologic
Member

Откуда: Питер
Сообщений: 393
Softologic
На данный момент пока в основном потоке использую подгрузку данных из БД ровно того количества записей, которые помещаются в видимые пределы контрола VT + несколько записей до и несколько после (что то вроде кэша в памяти получается). В этом мне помогает событие OnAfterPaint. В общем, я подгружаю ровно то, что хочет видеть пользователь, и немного еще.

Короче, это нечто похожее на "Background fetch, без тормозов на прокрутке грида" для меня решение.
25 окт 21, 02:48    [22387527]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить