|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Го-стхиdgdogэто справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят Сильно сомневаюсь, что план тут влияет, тем более по справочникам - думаю, время его построения находится за разрядной сеткой. А если там сортировка без индексов? пока ВСЕ строки не выберешь - не отсортируешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:43 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, если поделить ТСа на 0, то он в теории должен в бесконечность превратится Угу... представил себя с татухой на лбу "Warning: division by zero!" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:45 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, Обычно выбор всех строк (FetchAll) с навигацией по индексу будет медленней, а первой порции (обычный Fetch) быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogБеда в том, что файлы появляются не одномоментно. Т.е. если бы они были все разом сформированы, считал их в TempTable, обработал процедурами и всё. Но, на деле будет так: появился файл, я его увидел, тутже кинулся считал. Кинул в TempTable обрабатываю... тут появляется еще 4 файла, один из этой же конторы, 3 других из других.... а почему нельзя дождаться появления ВСЕХ файлов? все равно тебе надо будет контролировать, что все иточники данных отдуплились, и если откуда-то ответа нет (хотя бы и пустого ответа "нет новостей") - то трезвонить админам разбираться просто ты собирался устроить "глобальную оптимизацию" по поиску дупликатов между клиентами ещё до того, как вся эта бочка мёда польется на сервер. Я не знаю, да и ты сам наверное не знаешь, насколько много данных бы так почистилось, но возможно некоторая задержка чтобы получить все ответы была бы вполне компенсирована общим ускорением после? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:48 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, если поделить ТСа на 0, то он в теории должен в бесконечность превратится это если он изначально не ноль, а то ведь и в случайное число может.... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:49 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog110 тысяч записей выкидывает, да тормозит. Но они все прям позарез нужны бухгалтеру как именно они ему нужны? что именно он с ними делает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:50 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogPfibDataset.FetchALL это не по феншую??? Это нормально если он делается один раз. Это ни к чему если датасет работает как источник для грида. За постоянное перезаполнение PickList надо отрывать руки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:51 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogа напинали так, что я сижу и перелопачиваю свой код вообще в других модулях. И ДА, помогает. просто ты сюда зашёл в типовом состоянии x-y-z www.gunsmoker.ru/2008/10/x-y-z.html но к счастью, в отличие от большинства намёртво заклинившихся на этом, тебя попустило уже после одного дня поэтому дальше с тобой имеет смысл говорить а вот если бы ты начал твердолобить типа "не отвлекайте меня, мне просто надо создать таблицу в памяти клиента", то было бы наоборот, форум бы вымер и тебя бы обходили стороной ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:55 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, если грид с сортировкой, но не умеет менять ORDER BY в самом запросе, то он поневоле будет делать FetchAll - ибо куда ему деваться для сортировки на клиенте... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:57 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch, EhGrid умеет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 11:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch...а почему нельзя дождаться появления ВСЕХ файлов? Я тебя понял. Да ты прав (был бы). Но базы Москава - Новосибирск... Там уже отдуплились, там еще спят... по "этой" базе сегодня вообще движухи нет и файла нет. Эти загрузку из банка сделали только утром. А там вообще бух болеет и файлов не будет... там бух перебила несколько платежек недельной давности которые уже есть в нашей базе... Разом никак. Только паралелить запросы к файлам. Логика представляется такая: Висит утилитка на сервере, мониторит каталоги. Каталог такой-то (для экспорта-импорта определенной базы 1с) файл появился? Да. Запускается подпрограмма импорта. Считал файл. Файл удалил (1сина понимает, что я получил последний экспорт) Утащил данные на сервер. Разбираю их по тихому.Закрыл подпрограммку импорта. Но утилитка может увидеть 3-5-20 файлов одновременно. Вот и задумался, толи в очередь ставить, толи... ну про ГТТ еще почитаю. (это все еще теория. просто соображаю в какую степь траншею копать) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:01 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochdgdog110 тысяч записей выкидывает, да тормозит. Но они все прям позарез нужны бухгалтеру как именно они ему нужны? что именно он с ними делает? в dbgrideh фильтрами елозит. Фильтры " От начала времен" и "по всем столбцам". Я это на откуп отдал DBGridEh. Ну не передергивать же запрос каждый раз в PfibDataset? Не прав, бей. Только не по почкам... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:04 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdgdogPfibDataset.FetchALL это не по феншую??? Это нормально если он делается один раз. Это ни к чему если датасет работает как источник для грида. За постоянное перезаполнение PickList надо отрывать руки. Это почему? Справочник меняется динамически (при паралельном импорте. при изменении записей) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogСчитал файл. Файл удалил (1сина понимает, что я получил последний экспорт) не удалил, а перенёс в другую папку для обработанных файлов. Иначе в случае ошибки будет очень весело. А уж из той папки можно периодически вычищать, когда файлы полностью потеряют актуальность. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:05 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНо нет это не ХП, это справочники для заполнения PickList (dbgrideh) по полям. Срабатывает при реопене PfibDataset. Заметил, что сильно они тормозят (ну тут еще и DbGridEh, но пока хочу правильно сделать сами запросы, выжать максимум). PickList - то же combobox ? И ты в него пихаешь 110К элементов? Обычно стандартные виндовые контролы этого не сильно любят. Ты можешь разделить операцию: сначала вычитать всю таблицу в массив ( или, если Delphi 2010+ ее лучше в TList<record-type> ), а потом из массива заполнить Picklist ? И на этих трёх точках поставить замеры времени в программе http://www.cryer.co.uk/brian/delphi/howto_time_code.htm http://delphi.about.com/od/windowsshellapi/a/delphi-high-performance-timer-tstopwatch.htm http://stackoverflow.com/questions/6030586/calculating-the-speed-of-routines http://stackoverflow.com/questions/14834534/delphi-how-to-make-timer-in-milliseconds-or-nanoseconds-with-start-stop-functi и посмотреть реальные траты времени на оба эти шага ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, EhGrid умеет при правильной настройкЕ, правиьлной увязке с компонентами-запросами и т.д. а примеры кода мы тут уже видели, так что рабочая связка не гарантирована хотя я тоже надеюсь, что это сделано правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисdgdogСчитал файл. Файл удалил (1сина понимает, что я получил последний экспорт) не удалил, а перенёс в другую папку для обработанных файлов. Иначе в случае ошибки будет очень весело. А уж из той папки можно периодически вычищать, когда файлы полностью потеряют актуальность. Согласен полностью. Но веселье с непонятками в файлах (его например и бух может удалить и вирус покосить) уже предусмотрел импорт "конкретной базы" за конкретные даты вручную. Через те же COMсоединения. Косяки с файлами не моя беда. Вот вам бухи импорт вручную если чуете подлянку. Остальное к сисадмину (куда делся файл?) к 1Снику (почему не сформировался или сформирован не правильно). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:10 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochесли грид с сортировкой, но не умеет менять ORDER BY в самом запросе, то ....то это правильный грид и FetchAll здесь - наименьшее зло. dgdogСправочник меняется динамически (при паралельном импорте. при изменении записей) Справочник настолько динамичен, что изменяется ежесекундно? Протухло что-то в датском королевстве... Или это вообще не справочник. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:11 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogДопустим есть у меня 200 потенциальных файлов на импорт (формат не суть, любой разберу, но скорей всего будет XML). Которые надо проверить, отфильтровать и только потом влить в основные таблички базы. - Гуанамо вапроз! :-) В среднем HTML-файлик(страничка) парсится и вгоняется в БД (с полным расчетом релеватности) за 3 (три, числительное) сек. Итого - 10 мин +/- 10%. И не канифоль себе моск их_ем_еле форматом... В нем "накладные расходы" на теги под писят % подскакивают. А при большенстве цифирок - и овер 50% получишь в легкую. Оно тебе надо лопатить?;-) dgdogКоторые надо проверить... Ты сам-то понял, чё написал? И как ты бушь их проверять, если не знаешь чё в них(в каженном файлике) правильно должно быть? И из-за оной кривой строчки - признаем весь файлик левым и отправляем по Е-мылу главбушке на личный ящег СМС-кой в 3 ночи мессагу с текстом: - На, мол, голубушка, разбирайся с ентой фигней! Тута, здеся и не медля. А иначе фигушки чё к 9 утра получишь. А если не успеете - абуза уйдет генерльному. И не гри, что я тебя не предупреждал. (в конце обязательно жирный смайлик "курю бамбук") ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:13 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, у меня подозрения что у него из параллельных импортов одни и те же записи могут меняться. Если это так, то идея тухлая и можно сразу в морг, задумка автора помрёт на обработке конфликтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogв dbgrideh фильтрами елозит. Фильтры " От начала времен" и "по всем столбцам". Я это на откуп отдал DBGridEh. Ну не передергивать же запрос каждый раз в PfibDataset? Не прав, бей. Только не по почкам... а фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять? изменение запроса плохо тем, что курсор улетает в начало грида, не фиксируется на текущей строке (случай, что она тоже убивается новым фильтром - особый) возможно FetchAll - при фильтрации гридом - можно делать не сразу, а при включении первого фильтра после открытия запроса. Если фильтры каждый раз заново заполняются, конечно. Тогда и для буха будет видно, что программа не просто тормозит, а реагирует на её последовательные действия - вот данные прогрузились, а вот начали фильтровать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:16 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochСимонов ДенисArioch, EhGrid умеет при правильной настройкЕ, правиьлной увязке с компонентами-запросами и т.д. а примеры кода мы тут уже видели, так что рабочая связка не гарантирована хотя я тоже надеюсь, что это сделано правильно сортировка, фильтрация идет локально на клиенте. Запросов в базу не летит. 100% и да фильтр немного переписал уже не помню в каком pas файле EhLib. бух пишет только начало искомого значения... звездочка подставляется автоматом. Нет, с DBGridEh все норм. Есть косяк в ДБГриде поля не в том порядке как в запросе. Говорят дает прирост производительности чуток(клиенту), но пока эксперементировать нет времени. Работает и пусть пока работает. Буху сказал. Хотите 120 тысяч строк разом, пожалуйста, вот вам 5 секунд на открытие формы. Через год у нас будет порядка 500 тысяч строк и килограмм записей в выпадающих списках полей... ну вы тогда вообще покурить успеете. Ничего не ответила золотая рыбка. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:17 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochа фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять?... Нет не сохраняются. Получаю новые данные. Фильтры пусты. Данные летят по плану Натураль ибо, "все надо". Первоначальная сортировка (натураль) по уникальному ID... Дальше бух уже соображает неистовую фильтровку и гоняет полученные данные и в хвост и в гриву. (загрузил ей данные и всёё, только справочники перечитываю в пиклисты) Нужна ей адекватная версия данных, жмет кнопку "обновить". И начинает все с начала ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:24 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисDimitry Sibiryakov, у меня подозрения что у него из параллельных импортов одни и те же записи могут меняться. Если это так, то идея тухлая и можно сразу в морг, задумка автора помрёт на обработке конфликтов. Нет. не могут... хотя эти долбаные Банки со своими БИК... да возможно. (банк закрылся, под его биком открылся другой... было такое. А у меня по бикам прибиваются... тут косяк возможен, но очень редко) остальное врядли. (но подумаю вечером. спасибо за наводку на возможные грабли) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:27 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogЕсть косяк в ДБГриде поля не в том порядке как в запросе. - Какой-такой нафех ДБГрид? Ни одного визуал-контры тут и близко не лежало! Ты чё собрался показывать в этой "конвертилке" и главное кому?! Серверу? Маршрутизатору? Или сменному инжинёру, что служба медом не казалась? :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:29 |
|
|
start [/forum/topic.php?fid=40&msg=39281055&tid=1561790]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 414ms |
0 / 0 |