powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Delphi, FireBird создать таблицу в памяти клиента
25 сообщений из 368, страница 6 из 15
Delphi, FireBird создать таблицу в памяти клиента
    #39279774
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch... тогда прав Мимопроходящий...
А ты сможешь припомнить, когда МП был не прав? :-))))
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279790
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch... и просто надо брать попкорн и смотреть как один тролль всех этих умников кругами гоняет.


Ээээ))) Парни, парни! Хорошь стебаться. Попкорн им подавай. Мож еще с пивом усядетесь перед мониторами в понедельник то)))

Короче 1024 буфера привели (а еще один из запросов переписал в препаре) к загрузке всех баз вместо 40 минут к 30 минутам. Да существенно. Спасибо за советы. Но пиковой загрузки сервера это не решило (конечно, ктоб сомневался)

Памяти во время загрузки из двух гиг ел 360-380 мб... пик 421 мб. И всё) Процессоры все 4 на 100%
Хмммм... почему-то просел этот запрос
Код: pascal
1.
2.
SELECT t1.ID,t1."DATE",t1.OTPRAV,t1.POLUCH,t1.SUMMA,t1.KLIENT,t1.DOGOVOR, t1.NALDOG,t1.DOCOBESP,t1.STATUSDOC,t1.KOMIS,t1.OTVETST,t1.COMMENT,t1.DATEISM,t1.KTO,t1.ind1,t1.ind2,t2.KL_PRIHOD as KL_PRIHOD,t2.KL_RASHOD as KL_RASHOD,t2.razn
    FROM FULLTABLE t1 LEFT JOIN (select KL_KLIENT_ID,  Sum(KL_PRIHOD) as KL_PRIHOD ,Sum(KL_RASHOD) as KL_RASHOD, Sum(KL_PRIHOD)-Sum(KL_RASHOD) as razn  from sdelka   group by sdelka.KL_KLIENT_ID) t2 ON t1.ID = t2.KL_KLIENT_ID  where ind2=1;




авторPlan
PLAN JOIN (T1 NATURAL, T2 SDELKA ORDER SDELKA_IDX3 INDEX (SDELKA_IDX3))

Adapted Plan
PLAN JOIN (T1 NATURAL, T2 SDELKA ORDER SDELKA_IDX3 INDEX (SDELKA_IDX3))

------ Performance info ------
Prepare time = 16ms
Execute time = 78ms
Avg fetch time = 4,33 ms
Current memory = 17 712 512
Max memory = 17 882 200
Memory buffers = 1 024
Reads from disk to cache = 978
Writes from cache to disk = 0
Fetches from cache = 156 920

Вот эта строчка это нормально?
Все сдаюсь ( на сегодня) Хотя если бессоница опять придет выползу из дома на IBase. ВСЕМ СПАСИБО
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279791
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dgdog...Процессоры все 4 на 100% ...

Процессоры ;-) Все четыре :-))) Ядра имел ввиду. Все. Все... нафиг базу, на сегодня)))
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279792
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog
Код: sql
1.
.... ON t1.ID = t2.KL_KLIENT_ID  where ind2=1;



а вот такой запрос, кстати, ЕМНИП в 2.5 уже не пройдёт

ибо если ты уж начал ярлыки давать - так давай всем и перед ind2 тоже должно стоять t2 либо t1

если не путают, конечно с другим похожим исправлением
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279794
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Arioch!
You wrote on 25 июля 2016 г. 16:12:02:

Arioch> в 2.5 уже не пройдётс чего бы?

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

он не пройдёт только если этот филд одновременно есть у t1 и t2. Хотя лучше конечно всегда дописывать имя таблицы (алиаса) в запросах которых более 1 таблицы.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279852
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребята, а вот подскажите если кому делать нефиг:
Значит кинулся переписывать Query под параметры а у меня вот так

begin БОЛЬШОЙ ЦИКЛ (ну пербираю базы)

begin цикл пербора "расходных сделок"
Код: pascal
1.
2.
3.
4.
5.
form1.pfibquery4.SQL.Text:='select * from SDELKA where PP='+quotedstr(String(pp))+' and RASHOD='+ summtmp +' and     DATA='+quotedstr(datetostr( zapros_tab.Получить(y).Дата)) +' and CAM='+quotedstr(zapros_tab.Получить(y).НазначениеПлатежа);

...//бла. бла. бла

form1.pfibquery4.SQL.Text:='select * from FULLTABLE where OTVETST='+ quotedstr(String( zapros_tab.Получить(y).ОрганизацияИНН));  


end цикл пербора "расходных сделок"
begin цикл пербора "прибыльных сделок"
Код: pascal
1.
2.
3.
4.
5.
form1.pfibquery4.SQL.Text:='select * from SDELKA where PP='+quotedstr(String(pp))+' and PRIHOD='+ summtmp +' and     DATA='+quotedstr(datetostr( zapros_tab.Получить(y).Дата)) +' and CAM='+quotedstr(zapros_tab.Получить(y).НазначениеПлатежа);

...//бла. бла. бла

form1.pfibquery4.SQL.Text:='select * from FULLTABLE where OTVETST='+ quotedstr(String( zapros_tab.Получить(y).ОрганизацияИНН));  


end "прибыльные сделки"
end БОЛЬШОГО ЦИКЛА

Т.е. я 4 раза использую pfibquery4 с разными запросами внутри большого цикла. И как быть с параметризацией? Заводить 4 разных Query??? Или?
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279858
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogЗаводить 4 разных Query???
думаешь, на форме они все не удержатся и попадают вниз?

зы. quotedstr(String(pp)) ты так на параметры и не заменил...
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279870
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogЗаводить 4 разных Query???
Да. Но не вижу зачем их четыре: запросы к FULLTABLE идентичны.

И я же сказал: убери напрочь звёздочку. Она может тормозить больше чем всё остальное
вместе взятое. Выбирай только те поля, которые абсолютно необходимы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279885
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДокdgdogЗаводить 4 разных Query???
думаешь, на форме они все не удержатся и попадают вниз?

зы. quotedstr(String(pp)) ты так на параметры и не заменил...

да удержатся конечно))) я думал чем меньше компонентов, тем меньше памяти пожру. Учился на 486х))) Привычка мать ее.

вот тут не понял "зы. quotedstr(String(pp)) ты так на параметры и не заменил..." так менять на параметры - ВСЕ или ничего.
Я так с сонных шар вкурил что: Prepare дает реальное преимущество. Сервер строит Plan и держит его в кэше до следующего выполнения подобного запроса Query. Логично. Больше не тратим времени на построение Плана. Мне нравится идея))) В принципе только сейчас понял о какой прибавке к производительности толковал Arioch . Теперь бы применить правильно... и не запутаться в замене pFibQuery4.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279887
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovdgdogЗаводить 4 разных Query???
Да. Но не вижу зачем их четыре: запросы к FULLTABLE идентичны.

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


"Не ори на мать!" ;) Все поля... все, все, все поля нужны. Заменить звездочку на перечень всех полей? Получу бонусы? (если можешь ответь, нет значит буду посвободней порою инфу по этому поводу)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279889
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogвсе, все, все поля нужны.
Зачем? Ты же только на уникальность проверяешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279894
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДа. Но не вижу зачем их четыре: запросы к FULLTABLE идентичны.


Точна!!! Лоханка я!!! Три.

А вот еще вопрос по параметризации. (Не догоняю)

Занчит:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
//перед циклом                                       
pfibquery4.SQL.Text:='select * from FULLTABLE where OTVETST=:org'
// циклы пошли
...
pfibquery4.Prepare;
pfibquery4.ParamByName( 'org' ).AsString := String( zapros_tab.Получить(y).ОрганизацияИНН);                                       pfibquery4.ExecQuery;
...
// циклы закончены


Так как-то? На живой базе тяжко эксперементировать)))

pfibquery4. Закрывается где-нибудь? т.е. pfibquery4.close или внутри цикла это не обязательно? Prepare - exec, Prepare - exec?
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279897
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovdgdogвсе, все, все поля нужны.
Зачем? Ты же только на уникальность проверяешь.


А?! нет извини, я тебя в блуд ввел. Дальше логика проверки справочников, проверка на внесение уже такой проводки ручками с ВАРИАНТАМИ проверки на человеческий фактор... найдена В ПРИНЦИПЕ похожая проводка МАЯЧИМ бухгалтеру=отмечаем пусть сами разбираются "что это было? Дубль? Чистая проводка? Ошибка"... ну короче, сейчас это не суть и обрабатывается на клиенте, к серваку толком не лезет. Читсо получает в этом селекте все что нужно (а нужно все)))
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279898
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТеперь бы применить правильно... и не запутаться в замене pFibQuery4.

Лови простой пример.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with pFIBQuery1
 do begin
     SQL.Text:='SELECT F1, F2 FROM TABLE1 WHERE F0=:P1;';
     Prepare;
     for I:=1 to 10
      do begin
          ParamByName ('P1').AsInteger:=I;
          ExecQuery;
          while not eof
           do begin
               //здесь - код работы с результатами запроса
               Next;
              end;
          Close;
         end;
    end;
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279899
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И опять же, раз пошла такая пьянка вот выполнил я pFibQuery
Дальше у меня
Код: pascal
1.
if form1.pfibquery4.FieldByName('OTVETST').AsString<>Trim(String( zapros_tab.Получить(y).ОрганизацияИНН)) then



а на FieldByName в цикле Arioch ругается как компилятор при делении на ноль. И куда за цикл я это выкину? Или обращаться к номеру поля? pFIBQuery4.Fields[3].asString? так чтоли?
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279900
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛюбезныйавторТеперь бы применить правильно... и не запутаться в замене pFibQuery4.

Лови простой пример.


Очень любезно))
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279903
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И касательно FieldByName: если текст запроса препарируется и содержит перечисление полей, лучше обращаться к полю по индексу, а не через имя: Fields [0].AsString и.т.д. Тоже будет прирост производительности, пусть и не особо большой.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279905
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogИ куда за цикл я это выкину?
Забей пока. Это понадобится когда твоё приложение начнёт жрать больше ЦПУ чем сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279906
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТвоюБогаДушуМатьЧерезКоромыслоРастудытьТебяВКачель... да тут все... ВСЕ перепахивать надо. Дешевле выкинуть весь "импорт" и пересобрать модуль по новой. ((( беда.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279908
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С самого начала нужно писать максимально просто, чтобы не путаться в коде. Разнес бы логику хотя бы на процедуры (пусть даже на вложенные) - тогда и тебе, и нам стало бы гораздо понятнее.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279910
igs123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dgdog,

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

ПС сейчас сижу смотрю на этого франкинштейна - это пи*дец. Какие-то невменяемые куски. Как ЭТО вообще работало 2 года... х.з. На некоторые вещи смотрю и хочется спросить "это вот точно Я писал да? Трезвый да?"

Сам этой ж*пе не рад, но увольняться не вариант, только не сейчас. Херня, ребзя прорвемся
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279914
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
igs123dgdog,

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

В 1С я полный NULL даже не ноль. 1Сник запрос дал. COMсоединением подрубаюсь, получаю данные. Если выгрузка будет делаться по кнопке(пользователем) то этого никто делать не будет ТОЧКА. Если выгружать опять же подрубаясь COMом и командуя 1С то смысла не вижу, напрямую получать данные или в из файла их брать. Если не прав или недопонял пните в нужную степь.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279917
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogТвоюБогаДушуМатьЧерезКоромыслоРастудытьТебяВКачель...
- Да-да, это реплика из лога FB.
:-)))

dgdog да тут все... ВСЕ перепахивать надо. Дешевле выкинуть весь "импорт" и пересобрать модуль по новой. ((( беда.
О чём тебе и грили 3 страницы форума назад.
...
Рейтинг: 0 / 0
25 сообщений из 368, страница 6 из 15
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Delphi, FireBird создать таблицу в памяти клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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