Главная страница
    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.47 MB
Время: 0.049 c
1-1160396740
IMHO
2006-10-09 16:25
2006.11.19
Быстрый поиск в двоичном файле


2-1162396271
Busik
2006-11-01 18:51
2006.11.19
Как связать эти две программы


9-1128964971
D3D
2005-10-10 21:22
2006.11.19
Half-Life Model Viewer


15-1162149015
Ketmar
2006-10-29 22:10
2006.11.19
только не мой мозг...


5-1143100549
Vopros
2006-03-23 10:55
2006.11.19
цвет строки и разделительных линий TStringGrid





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