Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
2-1185790796
pukin
2007-07-30 14:19
2007.08.26
Найду ли я динамически созданный компонент?


2-1185666098
WittySpark
2007-07-29 03:41
2007.08.26
Жуткая проблема с жутким компонентом в Delphi 7 !!!


15-1185940922
IMHO
2007-08-01 08:02
2007.08.26
Бухгалтера vs. программисты


15-1185860176
Кирей
2007-07-31 09:36
2007.08.26
как победить рутинные операции


2-1185440914
Klopan
2007-07-26 13:08
2007.08.26
Отловить отключение сетевого кабеля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский