powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Delphi, FireBird создать таблицу в памяти клиента
25 сообщений из 368, страница 10 из 15
Delphi, FireBird создать таблицу в памяти клиента
    #39280976
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Го-стхиdgdogэто справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят
Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой.

А если там сортировка без индексов? пока ВСЕ строки не выберешь - не отсортируешь...
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39280979
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисArioch,

если поделить ТСа на 0, то он в теории должен в бесконечность превратится

Угу... представил себя с татухой на лбу "Warning: division by zero!"
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39280980
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Обычно выбор всех строк (FetchAll) с навигацией по индексу будет медленней, а первой порции (обычный Fetch) быстрее.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39280981
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogБеда в том, что файлы появляются не одномоментно. Т.е. если бы они были все разом сформированы, считал их в TempTable, обработал процедурами и всё.

Но, на деле будет так: появился файл, я его увидел, тутже кинулся считал. Кинул в TempTable обрабатываю... тут появляется еще 4 файла, один из этой же конторы, 3 других из других....

а почему нельзя дождаться появления ВСЕХ файлов? все равно тебе надо будет контролировать, что все иточники данных отдуплились, и если откуда-то ответа нет (хотя бы и пустого ответа "нет новостей") - то трезвонить админам разбираться

просто ты собирался устроить "глобальную оптимизацию" по поиску дупликатов между клиентами ещё до того, как вся эта бочка мёда польется на сервер. Я не знаю, да и ты сам наверное не знаешь, насколько много данных бы так почистилось, но возможно некоторая задержка чтобы получить все ответы была бы вполне компенсирована общим ускорением после?
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39280982
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисArioch,

если поделить ТСа на 0, то он в теории должен в бесконечность превратится

это если он изначально не ноль, а то ведь и в случайное число может....
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39280984
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog110 тысяч записей выкидывает, да тормозит. Но они все прям позарез нужны бухгалтеру

как именно они ему нужны? что именно он с ними делает?
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39280988
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogPfibDataset.FetchALL это не по феншую???
Это нормально если он делается один раз. Это ни к чему если датасет работает как источник
для грида.

За постоянное перезаполнение PickList надо отрывать руки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39280995
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogа напинали так, что я сижу и перелопачиваю свой код вообще в других модулях. И ДА, помогает.

просто ты сюда зашёл в типовом состоянии x-y-z

www.gunsmoker.ru/2008/10/x-y-z.html

но к счастью, в отличие от большинства намёртво заклинившихся на этом, тебя попустило уже после одного дня

поэтому дальше с тобой имеет смысл говорить

а вот если бы ты начал твердолобить типа "не отвлекайте меня, мне просто надо создать таблицу в памяти клиента", то было бы наоборот, форум бы вымер и тебя бы обходили стороной
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281000
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

если грид с сортировкой, но не умеет менять ORDER BY в самом запросе, то он поневоле будет делать FetchAll - ибо куда ему деваться для сортировки на клиенте...
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281004
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

EhGrid умеет
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281010
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch...а почему нельзя дождаться появления ВСЕХ файлов?
Я тебя понял. Да ты прав (был бы). Но базы Москава - Новосибирск... Там уже отдуплились, там еще спят... по "этой" базе сегодня вообще движухи нет и файла нет. Эти загрузку из банка сделали только утром. А там вообще бух болеет и файлов не будет... там бух перебила несколько платежек недельной давности которые уже есть в нашей базе...
Разом никак. Только паралелить запросы к файлам.

Логика представляется такая:
Висит утилитка на сервере, мониторит каталоги. Каталог такой-то (для экспорта-импорта определенной базы 1с) файл появился? Да. Запускается подпрограмма импорта. Считал файл. Файл удалил (1сина понимает, что я получил последний экспорт) Утащил данные на сервер. Разбираю их по тихому.Закрыл подпрограммку импорта.

Но утилитка может увидеть 3-5-20 файлов одновременно. Вот и задумался, толи в очередь ставить, толи... ну про ГТТ еще почитаю. (это все еще теория. просто соображаю в какую степь траншею копать)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281013
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochdgdog110 тысяч записей выкидывает, да тормозит. Но они все прям позарез нужны бухгалтеру

как именно они ему нужны? что именно он с ними делает?

в dbgrideh фильтрами елозит. Фильтры " От начала времен" и "по всем столбцам". Я это на откуп отдал DBGridEh. Ну не передергивать же запрос каждый раз в PfibDataset? Не прав, бей. Только не по почкам...
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281016
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovdgdogPfibDataset.FetchALL это не по феншую???
Это нормально если он делается один раз. Это ни к чему если датасет работает как источник
для грида.

За постоянное перезаполнение PickList надо отрывать руки.


Это почему? Справочник меняется динамически (при паралельном импорте. при изменении записей)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281017
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogСчитал файл. Файл удалил (1сина понимает, что я получил последний экспорт)

не удалил, а перенёс в другую папку для обработанных файлов. Иначе в случае ошибки будет очень весело. А уж из той папки можно периодически вычищать, когда файлы полностью потеряют актуальность.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281020
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogНо нет это не ХП, это справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят (ну тут еще и DbGridEh, но пока хочу правильно сделать сами запросы, выжать максимум).

PickList - то же combobox ?
И ты в него пихаешь 110К элементов?
Обычно стандартные виндовые контролы этого не сильно любят.

Ты можешь разделить операцию: сначала вычитать всю таблицу в массив ( или, если Delphi 2010+ ее лучше в TList<record-type> ), а потом из массива заполнить Picklist ?

И на этих трёх точках поставить замеры времени в программе


и посмотреть реальные траты времени на оба эти шага
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281023
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисArioch,

EhGrid умеет

при правильной настройкЕ, правиьлной увязке с компонентами-запросами и т.д.

а примеры кода мы тут уже видели, так что рабочая связка не гарантирована

хотя я тоже надеюсь, что это сделано правильно
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281025
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисdgdogСчитал файл. Файл удалил (1сина понимает, что я получил последний экспорт)

не удалил, а перенёс в другую папку для обработанных файлов. Иначе в случае ошибки будет очень весело. А уж из той папки можно периодически вычищать, когда файлы полностью потеряют актуальность.

Согласен полностью. Но веселье с непонятками в файлах (его например и бух может удалить и вирус покосить) уже предусмотрел импорт "конкретной базы" за конкретные даты вручную. Через те же COMсоединения. Косяки с файлами не моя беда. Вот вам бухи импорт вручную если чуете подлянку. Остальное к сисадмину (куда делся файл?) к 1Снику (почему не сформировался или сформирован не правильно).
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281027
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochесли грид с сортировкой, но не умеет менять ORDER BY в самом запросе, то

....то это правильный грид и FetchAll здесь - наименьшее зло.

dgdogСправочник меняется динамически (при паралельном импорте. при изменении записей)

Справочник настолько динамичен, что изменяется ежесекундно? Протухло что-то в датском
королевстве... Или это вообще не справочник.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281030
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogДопустим есть у меня 200 потенциальных файлов на импорт (формат не суть, любой разберу, но скорей всего будет XML). Которые надо проверить, отфильтровать и только потом влить в основные таблички базы.

- Гуанамо вапроз! :-)
В среднем HTML-файлик(страничка) парсится и вгоняется в БД (с полным расчетом релеватности) за 3 (три, числительное) сек.
Итого - 10 мин +/- 10%.

И не канифоль себе моск их_ем_еле форматом...
В нем "накладные расходы" на теги под писят % подскакивают.
А при большенстве цифирок - и овер 50% получишь в легкую.
Оно тебе надо лопатить?;-)

dgdogКоторые надо проверить...
Ты сам-то понял, чё написал?
И как ты бушь их проверять, если не знаешь чё в них(в каженном файлике) правильно должно быть?
И из-за оной кривой строчки - признаем весь файлик левым и отправляем по Е-мылу главбушке на личный ящег СМС-кой в 3 ночи мессагу с текстом:
- На, мол, голубушка, разбирайся с ентой фигней! Тута, здеся и не медля.
А иначе фигушки чё к 9 утра получишь.
А если не успеете - абуза уйдет генерльному. И не гри, что я тебя не предупреждал.
(в конце обязательно жирный смайлик "курю бамбук")
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281033
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

у меня подозрения что у него из параллельных импортов одни и те же записи могут меняться. Если это так, то идея тухлая и можно сразу в морг, задумка автора помрёт на обработке конфликтов.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281035
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogв dbgrideh фильтрами елозит. Фильтры " От начала времен" и "по всем столбцам". Я это на откуп отдал DBGridEh. Ну не передергивать же запрос каждый раз в PfibDataset? Не прав, бей. Только не по почкам...

а фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять?

изменение запроса плохо тем, что курсор улетает в начало грида, не фиксируется на текущей строке (случай, что она тоже убивается новым фильтром - особый)

возможно FetchAll - при фильтрации гридом - можно делать не сразу, а при включении первого фильтра после открытия запроса.

Если фильтры каждый раз заново заполняются, конечно.
Тогда и для буха будет видно, что программа не просто тормозит, а реагирует на её последовательные действия - вот данные прогрузились, а вот начали фильтровать
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281037
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochСимонов ДенисArioch,

EhGrid умеет

при правильной настройкЕ, правиьлной увязке с компонентами-запросами и т.д.

а примеры кода мы тут уже видели, так что рабочая связка не гарантирована

хотя я тоже надеюсь, что это сделано правильно

сортировка, фильтрация идет локально на клиенте. Запросов в базу не летит. 100% и да фильтр немного переписал уже не помню в каком pas файле EhLib. бух пишет только начало искомого значения... звездочка подставляется автоматом. Нет, с DBGridEh все норм. Есть косяк в ДБГриде поля не в том порядке как в запросе. Говорят дает прирост производительности чуток(клиенту), но пока эксперементировать нет времени. Работает и пусть пока работает. Буху сказал. Хотите 120 тысяч строк разом, пожалуйста, вот вам 5 секунд на открытие формы. Через год у нас будет порядка 500 тысяч строк и килограмм записей в выпадающих списках полей... ну вы тогда вообще покурить успеете. Ничего не ответила золотая рыбка.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281049
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochа фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять?...
Нет не сохраняются. Получаю новые данные. Фильтры пусты. Данные летят по плану Натураль ибо, "все надо". Первоначальная сортировка (натураль) по уникальному ID...

Дальше бух уже соображает неистовую фильтровку и гоняет полученные данные и в хвост и в гриву. (загрузил ей данные и всёё, только справочники перечитываю в пиклисты) Нужна ей адекватная версия данных, жмет кнопку "обновить". И начинает все с начала
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281055
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисDimitry Sibiryakov,

у меня подозрения что у него из параллельных импортов одни и те же записи могут меняться. Если это так, то идея тухлая и можно сразу в морг, задумка автора помрёт на обработке конфликтов.
Нет. не могут... хотя эти долбаные Банки со своими БИК... да возможно. (банк закрылся, под его биком открылся другой... было такое. А у меня по бикам прибиваются... тут косяк возможен, но очень редко) остальное врядли. (но подумаю вечером. спасибо за наводку на возможные грабли)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281060
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogЕсть косяк в ДБГриде поля не в том порядке как в запросе.
- Какой-такой нафех ДБГрид?
Ни одного визуал-контры тут и близко не лежало!
Ты чё собрался показывать в этой "конвертилке" и главное кому?!
Серверу? Маршрутизатору? Или сменному инжинёру, что служба медом не казалась? :-)))
...
Рейтинг: 0 / 0
25 сообщений из 368, страница 10 из 15
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Delphi, FireBird создать таблицу в памяти клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]