169 похожих чатов

Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где

бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои доводы о том что глупо выгружать столько записей человек все равно со всеми записями никогда в жизни работать не будет не работают. Дак вот, когда закрывается форма и читающая транзакция комититься это происходит по сети ну очееень долго. Так должно быть? Или можно что то подкрутить

14 ответов

41 просмотр

Отключи fetchall у запроса

У меня есть похожая задача показывать в гриде список из 30000 водителей. Использую для этого мемори датасет, причем при закрытии окна он не закрывается, а при повторном открытии окна в него дописываются только обновленные данные. Работает быстро, задержка секунд 10 только при первом открытии окна.

это какая субд так долго коммитит читающую транзакцию?

Sasha-Sch Автор вопроса
Дмитрий Логинов
У меня есть похожая задача показывать в гриде спис...

А как вы отслеживаите изменения ? Как вы понимаете какие записи надо "дозабрать"?

Дмитрий Логинов
У меня есть похожая задача показывать в гриде спис...

Мемдатасет делает fetch all, поскольку при открытии вы заставляете бежать от first до eof. 30к записей это всегда будет заметная задержка Может можно использовать обычный датасет (query)? Тогда настройками можно при открытии фетчить только видимую на экране часть датасета до 100 строк

Igor
как-то чересчур долго для фетча 30к записей

Нормально, операторы не жалуются 😁 Правда, 10 сек это у меня локально на компе, у них наверно секунд 30. Они привыкли, понимают, сами виноваты, что столько водителей у них развелось 😁

Sasha Sch
А как вы отслеживаите изменения ? Как вы понимаете...

Делаю запрос select ... From ... Where ModifyTime > :LastQueryTime - OneMinute

Paul Zaytsev
Мемдатасет делает fetch all, поскольку при открыти...

1) Мне интересен мемдатасет. Сначала через TIBDataset работало, но были и тормоза и глюки при сбоях в сети. Мемдатасет все вопросы решил. 2) отключение фетча мы перекладываем проблемы с клиента на сервер. Особенно, если это fb2.x, ему бывает тяжело держать у себя в памяти открытые курсоры, особенно если подключено несколько десятков операторов. Курсор на 30000 записей в памяти firebird вполне может занимать 30МБ. Если работают 10 операторов, то это 300МБ. Нафиг накие сложности!

Дмитрий Логинов
1) Мне интересен мемдатасет. Сначала через TIBData...

Попробуй фетчить в мемдатасет через ibsql в цикле while not ibsql.eof do... будешь приятно удивлён 😊 Зы. Я в экспериментах выкачивал 1кк записей на клиента за 15-20 сек

Ed Doc
Попробуй фетчить в мемдатасет через ibsql в цикле ...

Возможно. Честно говоря я ещё не исследовал причину такой задержки. Клиент не жалуется, значит его устраивает. Меня 10 сек на моём компе тоже пока устраивает. Сейчас других забот хватает.

Дмитрий Логинов
1) Мне интересен мемдатасет. Сначала через TIBData...

Не надо писать ерунды. 90% курсоров в Firebird однонаправленные, и памяти им надо только под текущий буфер одной записи + небольшие издержки на поддержание моментального снимка и транзакции. Двунаправленные курсоры в Firebird API появились только в тройке. А в сетевом протоколе только с пятёрки. Так-что никаких там 30Мб на курсор не будет

Denis Simonov
Не надо писать ерунды. 90% курсоров в Firebird одн...

Я не говорю ерунды. Сам проверял. Если запрос простенький, то вы правы, память не требуется. Но если запрос сложный или есть сортировка, то firebird может разместить записи у себя в памяти и оттуда постепенно отдавать их при фетче.

Дмитрий Логинов
Я не говорю ерунды. Сам проверял. Если запрос прос...

HASH JOIN, MERGE и внешняя сортировка действительно потребляют память. Но это зависит от запроса. Грубо говоря от количества записей напрямую это не зависит

Похожие вопросы

Обсуждают сегодня

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
8
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта