BDE ve ADO Query'ler için farklı Select peroformansı.....

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

BDE ve ADO Query'ler için farklı Select peroformansı.....

Mesaj gönderen fahrettin »

Arkadaşlar MSSQL üzerinde bir derdim var.... Şöyle ki:
Bir Select cümlem var. Bunu Query Analyzer üzerinden çalıştırınca 1-2 saniyede netice alıyorum.... Daha doğrusu bir sürü select cümlemin ortak probleminie bir tanesini misal veriyorum.. Tamamen aynı select cümlesini delphi içinden BDE aracılığı ile TQuery üzerinden çalıştırınca da yine aynı 1-2 saniyelik performansı alıyorum... Bu arada SQL Profiler'dan izliyorum bu cümleyi tek bir satır olarak gösteriyor. SQL:BatchCompleted şeklin bir EventClass veriyor.
Lakin ne zamandaki ADO üzerinden bir TADOQuery marifetiyle aynı select cümlemi çalıştırıyorum. O zaman sorgunun tamamlanmasi takriben 9-10 saniye sürüyor. Bu oran yani takriben 5 ila 10 arası perofmans farkı bütün cümlelerimde oluyor.... Bu durumda SQL Profiler'da ise ilginç şeyler görüyorum....

Kod: Tümünü seç

declare @P1 int
set @P1=180150008
declare @P2 int
set @P2=1
declare @P3 int
set @P3=1
declare @P4 int
set @P4=124
exec sp_cursoropen @P1 output, N'select .....
....
', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4
şeklindeki ilek satır ile bir cursor başlatıp akabinde 100-150 arası satırda

Kod: Tümünü seç

exec sp_cursorfetch 180150008, 2, 0, 1
şeklinde fetch komutları gorunuyor..... AdoQuery deki bir kaç parametre ile oynamama rağmen MSSQL in cursor oluşturmasına engel olamadım ve de proformansı yükseltemedim. Yeni MsSQL e geçen biri olarak uğraşmaya devam etmektense bir bilene danışayım istedim... Benzer durumu yaşayan ve de çözen arkadaş var mı acaba?

Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Abi AdoDataset ile denedin mi hiç? Adoquery yerine Adodataset daha iyi olur.

DB olmadığı için deneyemiyorum ama ADO'cuların hep Dataset tavsiye ettiğini hatırlıyorum. AdoTable ve AdoQuery uyumluluk için eklenmiş componentler.

Kolay gelsin.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Hocam ADO componentlerin özelliğidir o. Yani dataları parça parça alır ki OnFetchProgress eventinde arada işlemler yapabiliyorsunuz. Bunu isterseniz ayarlayabiliyorsunuz.

OnFetchProgress eventinin helpinden giderek sorununuz hakkında daha detaylı bilgi ve çözüme ulaşabilirsiniz.

Eğer imkanınız varsa ben şahsen dbExpress componentleri kullanmanızı tavsiye ederim. Zira bu benden daha ziyade Borland'ın tavsiyesi. Ama eğer karar verirseniz geçişte epey sıkıntı yaşayacaksınız.

MS-SQL Server ile ADO kullanın tavsiyesi daha ziyade çok eski zamanlarda yapılan bir tavsiyeydi. Genelde herkesin aklında o şekilde kaldığı için bugün de tekrarlanıyor ancak dediğim gibi Borland BDE'yi bırakın yerine dbExpress'e geçin diye ısrarla tavsiye ediyor ve bunun gerekliliğini kendince ispat ediyordu.

İyi çalışmalar.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

ADODataset de malesef aynı neticeyi verdi...

Teşekkürler Hakan Bey, dbExpress ile istediğim neticeyi aldım... Biraz uğraşarak uygulamayı dbexpress'e geçirmek gerekecek ama çok dert değil...

Kolay gelsin.....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Hocam eğer sadece sonuç döndürecekseniz TSQLQuery kullanın (unidirectional) ama TSimpleDataSet dbExpress'in en kullanışlı componenti. Hem TTable hem TQuery yerine geçiyor.

İyi çalışmalar.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Uygulamanın geneli zaten raporlama üzerine olduğu için TADOQuery'leri TSQLQuery olarak değiştiriyorum... İlk değişiklikler ile 40 saniyeden olması gereken 3-4 saniyelere inen cümleler oldu çok şükür....

Teşekkürler....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
measlan
Üye
Mesajlar: 2
Kayıt: 02 May 2009 09:48

Re: BDE ve ADO Query'ler için farklı Select peroformansı.....

Mesaj gönderen measlan »

arkadaşlar ben sql 2005 te veri tabanı oluşturdum ve bunu delphiye ADOConnection1,adotable ve datasource kullanarak bagladım veri ler datagridde görünüor ancak arama yapamıyorum yani ADOtable nin indexname kısmına sqlde indexlediğim alan çıkıyor ama seçince 'geçerli saglayıcı,dizin işlevselliği için gerekli arabirimi desteklemiyor '...die msj veriyor perşembeye yetiştirmem gereken bi projem var yardımcı olursanız sevinirim yada başka bi baglama yolu yada arama türü varsa söylersenir sevinirim ....tşşkkler...
Cevapla