s.a.
ADOQuery ile insert işlemi yapıyorum.
fakat işlem bazen 8-10 sn civarında sürüyor
benim amacım bu süre zarfında programın beklemeden devam etmesi
bu işlemi bir batch işlem gibi yaptırmam mümkünmü
teşekkürler
SQL İnsert işleminin süresi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
SQL İnsert işleminin süresi
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: SQL İnsert işleminin süresi
Hangi veritabanını kullanıyorsun? Nasıl bir veriyi insert ediyorsun, tek kayıt mı, çok fazla mı? Bulk insert mü kullanıyorsun yoksa tek tek kayıtları mı insert ediyorsun bilemiyorum. Soruyu pek açık yazmadığınız için tahmin yürüteceğim.
1. Bu insert işlemi eğer tek bir kayıt içinse 8-10 saniye sürmesi bir problem olduğunu gösterir. Öyle ise tabloda primary key tanımlanmış mı kontrol edin.
2. Eğer bir çok kaydın bir döngü içerisinde tabloya eklenmesi söz konusu ise programın bu süre zarfında isteklere cevap verebilmesi için döngü içerisine Application.ProcessMessages komutu ekleyebilirsin.
3. Kayıt sayısı çok fazla ve döngü kullanmayıp bulk insert yaptığın halde 8-10 sn. bekliyorsan o zaman insert komutunu SQL Serverda zamanlanmış görev olarak çalıştırabilirsin. Tabi sql server kullanıyorsan...
Kolay gelsin.
1. Bu insert işlemi eğer tek bir kayıt içinse 8-10 saniye sürmesi bir problem olduğunu gösterir. Öyle ise tabloda primary key tanımlanmış mı kontrol edin.
2. Eğer bir çok kaydın bir döngü içerisinde tabloya eklenmesi söz konusu ise programın bu süre zarfında isteklere cevap verebilmesi için döngü içerisine Application.ProcessMessages komutu ekleyebilirsin.
Kod: Tümünü seç
while not EskiDosya.eof do
begin
// insert islemi
...
...
Application.ProcessMessages;
end;
Kolay gelsin.
Re: SQL İnsert işleminin süresi
ikazancı arkadaşımın cevabına ek olarak;
yaptığın kayıt gerçekten 8-10 saniye sürecek kadar sürekli ve birden fazla bir kayıt ise applicatin.processmessages yerine bir thread kullanmanı tavsiye ederim
çalışmalarınızda başarılar
Allah kolaylık vere...
yaptığın kayıt gerçekten 8-10 saniye sürecek kadar sürekli ve birden fazla bir kayıt ise applicatin.processmessages yerine bir thread kullanmanı tavsiye ederim
çalışmalarınızda başarılar
Allah kolaylık vere...
insanın özü tanımasına engel olan perdeleri;
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
1.kendini beden sanma
2.vehmî benlik
3.beş duyu blokajları
4.toplumsal şartlanmalar ve şartlanmaların oluşturduğu değer yargıları ve değer yargılarından gelen duygular
kişi bu perdelerden arınmadıkça göresel kozasında yaşar ve bir ipek böceği gibi kaynar kazana atılır.
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: SQL İnsert işleminin süresi
Benim burda asıl yapmaya çalıştığım insert işleminin sonucunu beklemeden devam etmek.
bunun bir yöntemi varmı
MS SQL Server 2005 kullanıyorum
Tek bir record insert ediyorum
Insert ettigim dosyanın içerisinde 8 adet field var
dosya fieldlarından 2 adet integer 6 adette varchar 15 uzunlugunda alanlar var
dosyanın autonumber ID key alanıvar tipi bigint
insert into t_XXX (f1, f2,..) values (v1, v2,...) seklinde insert komutu
ADOQuery kullanıyorum
ADOQuery.Prepared := True;
ADOQuery.Parameters.ParamByName('pf1').Value := v1;
...
ADOQuery.ExecSQL;
ADOQuery 'nin Cursor Type özelliği ctKeyset
ADOQuery 'nin lock type özelliği ltOptimistic
ADOQuery 'nin Marchal Options ozelliği moMarshalAll
ADOQuery 'nin ParamCheck özelliği True
bunun bir yöntemi varmı
MS SQL Server 2005 kullanıyorum
Tek bir record insert ediyorum
Insert ettigim dosyanın içerisinde 8 adet field var
dosya fieldlarından 2 adet integer 6 adette varchar 15 uzunlugunda alanlar var
dosyanın autonumber ID key alanıvar tipi bigint
insert into t_XXX (f1, f2,..) values (v1, v2,...) seklinde insert komutu
ADOQuery kullanıyorum
ADOQuery.Prepared := True;
ADOQuery.Parameters.ParamByName('pf1').Value := v1;
...
ADOQuery.ExecSQL;
ADOQuery 'nin Cursor Type özelliği ctKeyset
ADOQuery 'nin lock type özelliği ltOptimistic
ADOQuery 'nin Marchal Options ozelliği moMarshalAll
ADOQuery 'nin ParamCheck özelliği True
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: SQL İnsert işleminin süresi
Asıl nokta şu ki; tek bir kayıt insert ediyorsan işlemin bu kadar uzun sürmemesi lazım.
Ado'yu bir kaç yıl önce sadece deneme amaçlı kullandığım için belki tam bir cevap olmayacak ama üzerine eğilmen gereken konunun "beklemeden devam etmeyi sağlamak" değil, "insert süresini azaltmaya çalışmak" olması gerektiğini söyleyebilirim.
8-10 sn içinde -bir defada- onbinlerce kayıt insert edilebilir. Primary key tanımlanmış ise sorun büyük ihtimalle Query veya Connection ayarlarından kaynaklanıyor. Değişik kombinasyonlar deneyebilirsin belki... Ya da Ado ile ilgili tecrübesi olanların yorumlarını bekleyelim.
Kolay gelsin.
Ado'yu bir kaç yıl önce sadece deneme amaçlı kullandığım için belki tam bir cevap olmayacak ama üzerine eğilmen gereken konunun "beklemeden devam etmeyi sağlamak" değil, "insert süresini azaltmaya çalışmak" olması gerektiğini söyleyebilirim.
8-10 sn içinde -bir defada- onbinlerce kayıt insert edilebilir. Primary key tanımlanmış ise sorun büyük ihtimalle Query veya Connection ayarlarından kaynaklanıyor. Değişik kombinasyonlar deneyebilirsin belki... Ya da Ado ile ilgili tecrübesi olanların yorumlarını bekleyelim.
Kolay gelsin.
Re: SQL İnsert işleminin süresi
Şimdi bir deneme yaptım. Bölüm tanımları tabloma kayıt ekleme. AdoQuery ile.
AdoConnection Provider SQL Native Client seçtim. AdoConnection Provider SQLNCLI.1
Adoquery özellikleri:
MarshalOption: moMarshalModifiedOnly
CursorLocation: clUseServer
LockType :ltOptimistic
CursorType: ctKeyset
Filtered : False
Tabloda primary key alanı var.
Toplam 7 alan var.
insert into tablo
values ('Deneme', 'Deneme', 'H', null, null, null, null)
ADOQuery1.Prepared := True;
ADOQuery1.ExecSQL;
Çok kısa sürdü. İstersen bu ayarlar ile de bir dene.
Kolay gelsin.
AdoConnection Provider SQL Native Client seçtim. AdoConnection Provider SQLNCLI.1
Adoquery özellikleri:
MarshalOption: moMarshalModifiedOnly
CursorLocation: clUseServer
LockType :ltOptimistic
CursorType: ctKeyset
Filtered : False
Tabloda primary key alanı var.
Toplam 7 alan var.
insert into tablo
values ('Deneme', 'Deneme', 'H', null, null, null, null)
ADOQuery1.Prepared := True;
ADOQuery1.ExecSQL;
Çok kısa sürdü. İstersen bu ayarlar ile de bir dene.
Kolay gelsin.
Re: SQL İnsert işleminin süresi
İşllemler arası yığdırma yapıyorsan ondan da kaynaklanıyor olabilir. Bir de gecikme kullandığın veritabanı uzak bir veritabanı ise internetten yada ağ vb. Normalde bir insert işlemi yaklaşık 0.234 ms sürmesi lazım ama birden fazla insert işlemi yaptırıyorsan peşpeşe yapmadan önce bir döngüye al ve teker teker insert işlemi yapmaya zorla. (Not: Bu belirttiğim insert işlem süresi MS Sql Server için geçerli.)
Sular yükselince, balıklar karıncaları yer...Sular çekilince de karıncalar balıkları...Kimse bugünkü üstünlüğüne ve gücüne güvenmemelidir....
Çünkü kimin kimi yiyeceğine.. "Suyun Akışı Karar Verir..."
Çünkü kimin kimi yiyeceğine.. "Suyun Akışı Karar Verir..."