Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

FibPlus - есть ли аналог UpdateBatch ?   Найти похожие ветки 

 
без ника   (2006-09-19 11:09) [0]

Есть ли в компонентах FibPlus аналог UpdateBatch из ADO?

Сейчас я добавляю (изменяю)  данные с помощью сторед процедур(TFibStoredProc) . Но иногда бывает, что изменяется сразу 50-100 записей - подтормаживает. Хотелось бы отдать серверу изменения 1 пакетом.


 
ANB ©   (2006-09-19 11:47) [1]

Что значит пакетом ? Много маленьких апдейтов - сильно быстрее не будет, т.к. все равно по очереди выполнятся будут.
Напиши один грамотный апдейт и выполни.


 
Виталий Панасенко   (2006-09-19 12:06) [2]

кэширование тебе поможет(должно)


 
без ника   (2006-09-19 12:09) [3]

собственно о чем писал:

Допустим есть процедура для вставки записи StoredProc1. Чтобы вставить 100 записей - 100 вызовов. Тормоза. Самому генерировать скрипт на Insert хм... скажем так не охота :)

Нашел решение для Fib, собственно делается с пом-ю FibDataSet :

1. Прописать SQL на SELECT "SELECT P1,P2,P3  FROM T";
2. Прописать SQL на Insert "INSERT INTO T (P1,P2,P3) VALUES (:P1,:P2,:P3)";
3. FibDataSet.CachedUpdates := True;
3. FibDataSet.Active:=True;
4. далее в цикле :

   FibDataSet.Append;
   FibDataSet.FieldByName("P1").Value := XXXX;
   ....
   FIBDataSet.Post;

и потом FibDataSet.ApplyUpdates;
ну и транзакцию Commit;  Вот так решилась проблема.


 
без ника   (2006-09-19 12:11) [4]

2000 - вставок в цикле ~ 2 сек,а  если делать 1000 вызовов хранимой процедуры уже ~ 6 сек.


 
без ника   (2006-09-19 12:12) [5]

А ну да, если нужно сделать множественный Update - собственно заполнить SQL на Update :)


 
ANB ©   (2006-09-19 12:51) [6]


> без ника   (19.09.06 12:11) [4]

Пынятно, сам вызов хранимки тоже время кушает.

Откуда данные для вставки берешь ?


 
без ника   (2006-09-19 16:33) [7]

Да из за этих накладных расходов тормоза и образуются.

Данные для вставки - это список(аналог TList"a ток под типизированные данные). Точнее скажем, так буфер куда приходят результаты измерений, их нужно просто тупо записать в базу. Желательно побыстрее :)


 
ANB ©   (2006-09-19 17:12) [8]


> без ника   (19.09.06 16:33) [7]

Есть идея.
FB поддерживает конструкцию типа :

select * from
(
select 1 ID "Вася" Name from dual
union all
select 2 ID "Петя" Name from dual
union all
select 3 ID "Коля" Name from dual
)

?


 
без ника   (2006-09-20 11:08) [9]

в принципе данный синтаксис поддерживается. Но не поддерживается синтаксис(хотя я пока поверхностно смотрел) :

Select 1     AS P1,
         2.3  AS P2,
         "XX" AS P3

так бы можно было создать большой SQL запрос вида:

inser Into T(P1,P2,P3)
From ( SELECT 1      AS P1,
                    2.3   AS P2,
                    "XX"  AS P3
        UNION ALL
         SELECT 3      AS P1,
                    55.1   AS P2,
                    "YY"  AS P3
        ....
      )

Но во первых не очень хочется делать все ручками :) а во вторых по опыту общения с MSSQL, знаю, что есть какое то ограничение на объем передаваемого SQL запроса (хотя может это и пролемы ADO). А тут он може оказаться громадным -> его придется разбивать на несколько INSERT"ов. В принципе пока быстродействия хватает, потом можно будет попробовать и такой вариант.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
15-1162300387
Rule
2006-10-31 16:13
2006.11.19
Интересуюсь компонтой типа встроенного веб броузера


3-1158320321
Neo Trinitron
2006-09-15 15:38
2006.11.19
Громаднейшие запросы SQL


2-1162382793
logslava
2006-11-01 15:06
2006.11.19
как проверить существует ли объект


2-1162226455
Golik
2006-10-30 19:40
2006.11.19
где ошибка ?


2-1161962002
Gamer
2006-10-27 19:13
2006.11.19
не работает отладка в Делфи 5((





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский