Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизУскорить работу FIBDataSet.Sort Найти похожие ветки
← →
DelphiLexx © (2007-07-27 13:08) [0]Вообщем у юнита FIBDataSet"a есть замечательный метод Sort. У меня он часто используется, вся проблема возникла из-за того, что есть модальная форма с 2-мя кнопками ОК (подтверждает транзакцию) и Отмена(отменяет транзакцию), при открытии формы стартует транзакция. Так вот чем больше пользователь ведет редактирование данных, тем медленнее начинает работать Sort. Sort - у меня вызывается при добавлении новой записи, чтобы они сортировались в нужной мне форме.
Вопрос такой как ускорить работу Sort.
← →
Sergey13 © (2007-07-27 13:16) [1]> [0] DelphiLexx © (27.07.07 13:08)
> Вопрос такой как ускорить работу Sort.
Ответ такой - пересмотри весь подход при работе с транзакциями.
← →
DelphiLexx © (2007-07-27 14:40) [2]
> Ответ такой - пересмотри весь подход при работе с транзакциями.
Чем тебе не нравится мой подход
← →
sniknik © (2007-07-27 14:52) [3]> Чем тебе не нравится мой подход
мазохистский.
подтверждение/отмена транзакций юзером (тем более пишущих) это путь к глюкам.
← →
Sergey13 © (2007-07-27 14:53) [4]> [2] DelphiLexx © (27.07.07 14:40)
> Чем тебе не нравится мой подход
> при открытии формы стартует транзакция
Я так понимаю пишущая и закрываемая по кнопке и/или закрытию формы.
> Sort - у меня вызывается при добавлении новой записи
Как добавляешь? Зачем сортировка?
← →
DelphiLexx © (2007-07-27 16:20) [5]
> подтверждение/отмена транзакций юзером (тем более пишущих)
> это путь к глюкам.
Никаких глюков, если это модальная форма
← →
DelphiLexx © (2007-07-27 16:24) [6]
> > при открытии формы стартует транзакция
> Я так понимаю пишущая и закрываемая по кнопке и/или закрытию
> формы.
У меня Транз.Commit если
1. нажата ОК
2.когда закрывается форма делается проверка на то, были ли изменения, если да, то перед пользователем выскакивает вопрос сохранить ли изменения, если он нажмет ДА, то транз.Commit
в остальных случаях Транз.Rollback
← →
DelphiLexx © (2007-07-27 16:26) [7]
> > Sort - у меня вызывается при добавлении новой записи
> Как добавляешь? Зачем сортировка?
Я же в своем вопросе сказал, что Sort необходим, чтобы записи сортировались в нужной мне форме.
Вот смотри, проделываю такую вещь:
0. Делаю Sort - работает быстро
1. добавляю запись
2. после добавления жду 5 сек.
3.удаляю запись
4. после удаления жду 5 сек.
5. Повторяем пункт 1-4 10 раз.
6. После всего жду 10 сек.
7. Делаю Sort - работает медленно
вот объясни в чем прикол
← →
Sergey13 © (2007-07-27 16:31) [8]> [5] DelphiLexx © (27.07.07 16:20)
> Никаких глюков, если это модальная форма
Модальность формы и транзакция - это никак не соотносящиеся вещи.
> 1. добавляю запись
Как?
← →
sniknik © (2007-07-27 16:46) [9]> Никаких глюков, если это модальная форма
а если переходить дорогу, на красный, в кирзовых сапогах то машину не попадешь, никогда...
ага.
← →
sniknik © (2007-07-27 17:00) [10]> вот объясни в чем прикол
в клиентдатасете например есть лог изменений, т.е. можно получить все изменения что с ним произошли, дельту. неважно что ты удалил запись, там, в этой дельте она осталась. до сброса обновлений в базу. (вроде это можно отключить)
естественно, раз записей больше, хоть и невидимых(удаленных) то если делать сортировку по ним то она будет делаться немного дольше. логично?
а теперь на твою ситуацию, ты чтото поменял, изменения ушли на сервер но не в основную базу, а в какойто транзакционный лог (а то и не один). и данные теперь разделены, как думаешь серверу будет проще сортировать такие раздельные, без части индексов (недостроены еще) данные или сложнее?
не знаю как там работают FIB-бы, но если через сервер, то любая обработка через него просто обязана затормозиться.
← →
DelphiLexx © (2007-07-27 19:09) [11]
> (вроде это можно отключить)
Как???
← →
DelphiLexx © (2007-07-27 19:13) [12]
> в клиентдатасете например есть лог изменений
Где этот лог находится как его удалить.
← →
DelphiLexx © (2007-07-27 19:14) [13]
> > 1. добавляю запись
>
> Как?
Через нажатие клавиши Ins, срабатывает выполнение sql-кода хранимого в InsertSql
← →
turbouser © (2007-07-27 19:48) [14]
> DelphiLexx © (27.07.07 19:14) [13]
Можно делать CommitRetaining после каждой операции.
← →
DelphiLexx © (2007-07-27 21:40) [15]
> Можно делать CommitRetaining после каждой операции.
Не это мне не подходит
← →
sniknik © (2007-07-27 22:41) [16]> Как???
разве у тебя клиентдатасет? чем тебе поможет если ты будеш знать как отключить там? если пользуешься совершенно другим?
вообще, перечитай внимательнее совет в [1]...
← →
Виталий Панасенко(дом) (2007-07-28 09:31) [17]Вообще-то, у ФИБов достаточно установить одну опцию - и сортировка будет поддерживаться автоматически...pFIBDataSet-Options-poKeepSorting=True
← →
DelphiLexx © (2007-07-30 09:40) [18]
> Вообще-то, у ФИБов достаточно установить одну опцию - и
> сортировка будет поддерживаться автоматически...pFIBDataSet-
> Options-poKeepSorting=True
А по каким полям будет происходит эта сортировка?
← →
Виталий Панасенко © (2007-07-30 17:46) [19]А справку почитать слабо ? по тем, которые в ORDER BY перечислены.. можно было и не тупить, а догадаться...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c