powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Delphi, FireBird создать таблицу в памяти клиента
25 сообщений из 368, страница 3 из 15
Delphi, FireBird создать таблицу в памяти клиента
    #39279600
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogУскорение чего? Как быстро запрос долетит до сервера?

срочно читай, что такое sql query prepare, и переставай болтать ерундой
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279601
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийТС - картонная дурилка.
Возможно, ему действительно пора хорошенько выспаться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279603
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogMemory buffers = 75


Хмммм....

и мегатонны запросов "дай мне вот эту запись! а теперь дай соседнюю! и ещё сто соседних"
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279604
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochХмммм....
Не придирайся. А то ещё заставишь его управление транзакциями переделывать и параметры
лок-менеджера крутить. А он явно на данный момент на такую мозговую работу неспособен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279606
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochdgdogНагрузка то на сервер не уменьшается. Сейчас параметрами шьет.

...

либо решай радикально - избавляй сервер от этой работы вообще
....

Ну а я в чем и прошу помощи))) Как бы одним запросом свалить нужную выборку ИЗ МОЕЙ БАЗЫ на клиента. Там разобрать и слить обратно только нужное. ВОт вопрос то ВО ЧТО слить? Ну не в текстовый же файл. Куда в память это можно засунуть... в какой компанент? Вообще в идеале чтоб до этого компанента можно было QUERY добраться (тогда вообще все в шоколаде)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279607
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, если к FB такие бестолковые запросы, то что говорить о других к "источникам данных"?..
Там лопатить всю систему надо и с нуля.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279609
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 25 июля 2016 г. 13:01:16:

Dimitry Sibiryakov> Возможно, ему действительно пора хорошенько выспаться.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279610
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovdgdogПробовал и собирать строку и через параметры. А смысл? Нагрузка то на сервер не уменьшается.

Значит плохо пробовал. Потому что от применения препарированных запросов нагрузка должна
уменьшаться. В твоём случае - в 15 раз. Код показывай.


Код: pascal
1.
2.
3.
4.
... form1.pfibquery4.SQL.Text:='select * from SDELKA where PP='+quotedstr(pp)+' and Prihod='+ summtmp+' and DATA='+quotedstr(datetostr( zapros_tab.Получить(y).Дата));
 form1.pfibquery4.ExecQuery;
 if  form1.pfibquery4.FieldByName('id').IsNull then
 BEGIN/// ДУБЛЕЙ НЕТ....
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279611
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА то ещё заставишь его управление транзакциями переделывать

Кстати, да: аффтар, а не идёт ли там у тебя каждый запрос к серверу в отдельной транзакции?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279612
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov А он явно на данный момент на такую мозговую работу неспособен.


Во-первых подкрутка ОДНОГО параметра в конфиге - это далеко не изчение лок-менеджера.
У него там 15 чтений из кэша и три с диска, однако....

Хотя если затык в процессоре, то это действительно не важно (если только винчестер в PIO-режим не свалился, или гипер-агрессивный анивирус не проверяет каждую страницу БД).

Во вторых, на счет "не способен", я ещё на первой странице советовал

AriochPS. За сумбурность извините, не спал, проект горит
Таки пойти и лечь спать.
Альтернатива - перестанешь понимать собственные действия и наворотишь второпях такого - что придется потом месяц разгребать.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279614
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogform1.pfibquery4.SQL.Text:='select * from SDELKA where PP='+quotedstr(pp)+' and Prihod='+
summtmp+' and DATA='+quotedstr(datetostr( zapros_tab.Получить(y).Дата))

И в каком месте это использование параметров, чудак?..

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

Значит плохо пробовал. Потому что от применения препарированных запросов нагрузка должна
уменьшаться. В твоём случае - в 15 раз. Код показывай.


Код: pascal
1.
2.
3.
4.
... form1.pfibquery4.SQL.Text:='select * from SDELKA where PP='+quotedstr(pp)+' and Prihod='+ summtmp+' and DATA='+quotedstr(datetostr( zapros_tab.Получить(y).Дата));
 form1.pfibquery4.ExecQuery;
 if  form1.pfibquery4.FieldByName('id').IsNull then
 BEGIN/// ДУБЛЕЙ НЕТ....



ад и холокост...

1. приходы и даты бери не значениями а диапазонами, для каждого PP выбираешь диапазаоны - минимум и максимум
19450595

2. Текст запроса задается ОДИН раз, потом делается Prepare. При изменении значений любых параметров текст запроса не меняется. Вообще не меняется. Никогда.
После изменения значений параметров повторнo запускаешь Open/ExecQuery не меняя текст.

3. FieldByName и PrepareByName делается ОДИН раз, после Prepare и никогда не повторяется внутри циклов, перебирающих строки 19450626
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279618
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch3. FieldByName и PrepareByName

ParamByName
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279619
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochНадеюсь, запросы не текстом каждый раз наново формируются, а используют параметры и prepare ?



Запутал конкретно)))

Arioch...

Prepare делаешь ? как минимум Prepare добавляет нагрузку серверу на каждый отдельный запрос

...

Запутал. Но сути дело не меняет. Сейчас строкой формирую. Параметрами пробовал смысла не увидел.

Про FieldByName и иже с ними понял. Подумаю как убрать из цикла... но суть не в этом. Хотя подумаю, да есть на запись все идет в таком виде
Код: pascal
1.
                                    form1.pFIBDataSet2.FieldByName('KL_PRIHOD').Asfloat:=strtofloat(string(zapros_tab.Получить(y).Сумма));


Но до записи из 3000 проверенных-сверянных записей добирается 1-2. Не критично... остальные по If срезаются. Т.е. до этого места вооообще редко доходит дело.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279622
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog Запутал. Но сути дело не меняет. Сейчас строкой формирую. Параметрами пробовал смысла не увидел.

Если ты текст запроса снова и снова перед каждым ExecQuery присваивал - то его и не будет.
Тект запроса задается ОДИН раз для всех данных сразу. Потом делается prepare.
Потом только меняются параметры не трогая текст запроса.


остальные по If срезаются. Т.е. до этого места вооообще редко доходит дело.

а в if-e у тебя что? такой же fieldbyname
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279623
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovdgdogУскорение чего? Как быстро запрос долетит до сервера????

Ускорение обработки запроса сервером. За счёт понижения нагрузки на ЦПУ, который, по твоим
словам, и является у тебя бутылочным горлышком.


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

если у тебя нагрузка процессора уже сильно больше 100% - то ты ее и не увидишь, освободившуюся часть процессора просто возьмет другая задача

такие есты надо проводить рпи загрузке чуть меньше 100%
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279627
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogне видел разницы.
Учитывая приведённый образец кода, это вполне возможно. Особенно, если он (говнокод)
крутится на том же компьютере, что и Firebird.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279628
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPS: За звёздочку - отдельный ицых с гвоздями.


в коде типа "form1.pfibquery4" редко случается что-то другое....
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279629
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog
Практически так оно и есть. Запускается десять разных клиентов которые тащат конкретные данные из конкретных источников. Но мне каждую строчку надо сверить с моей базой. Они наваливаются разом ... и привет ЦП.

Логика проверки вся на клиенте. В Firebird у меня мозгов не хватит все перетянуть.


ну раз так тебе стоит записаться на курсы повышения квалификации http://www.ibase.ru/courses/
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279632
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochdgdog,
...
и i5 - дерьмо (вы русские есть очень много кушать!)
и одного нового процессора не получишь, хотя фирма растёт на дрожжах и заела себе сотни новых компьютеров с базами данных на них

странно это звучит вместе взятое

Ээээ. Извини Человек. Не думал, что так все в штыки.
Рабочий сервер Xeon E5620 2.400 Гг 2Гб оперативки. Виртуальный сервер который выделил админ. Больше не даст ни кусочка.
I5 Это мой нубук на котором ставлю все эксперименты.

И Xeon и I5 Уходят в 100% загрузку. Нет, я могу запускать импорт из баз не с 10, а с 5 одновременно и тогда забиваю ЦП скачкообразно и бухи могут работать, но тогда импорт длится 3-5 часов.

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


Да я собственно в Firebirde только в 2002м проектировал чето... дипломы студентам и т.п. Ну и вот в 2014 чето эту халтурку слепил. Им на время надо было...
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279635
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog Чего на клиент накрутить
- знания и понимание. :-)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279637
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogРабочий сервер Xeon E5620 2.400 Гг 2Гб оперативки. Виртуальный сервер который выделил админ. Больше не даст ни кусочка.

это ни разу не сервер, а говно
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39279638
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogРабочий сервер Xeon E5620 2.400 Гг 2Гб оперативки. Виртуальный сервер который выделил админ. Больше не даст ни кусочка.
I5 Это мой нубук на котором ставлю все эксперименты.


это не так

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


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