çok yavaş TableAdapter ile Oracle SP çağırma

oy
3

1ms: Ben sql editörü (oracle) içinde çalıştırıldığında süper hızlı çalışan bir sorgu var.

bir DataSet-TableAdapter tarafından yürütülen aynı sorgu (saklı bir prosedür olarak) 2 saniye sürer. Sadece 20rows alınırken ediyorum.

Bir TableAdapter kullanıyorum beri dönüş değerleri ref imleç saklanır.

Ben 2'000 satır getirilirken olsaydı ben biraz zaman DataSet oluşturmak için gerekli olduğunu anlayabildim ama sadece 20 satırlar için 2 saniye benim için çok fazla görünüyor.

bu tek yol veya kahin üzerine SP yürütmek için daha iyi bir yol yoktur? Ne performanslarını geliştirme çizmeyi deneyebilirim?

Yardım ettiğin için teşekkür ederim!


google arama, sorunun refcursor ile olduğu görülmektedir. Diğerleri insanlar aynı performans sorununu karşılaştığı, ancak hiçbir çözüm sağlanır.

Oluştur 09/12/2008 saat 16:00
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
2

Hangi veri sağlayıcı kullanılır?

Eğer System.Data.OracleClient başvurmak veya ODP.NET (Oracle .NET uygulamalarını bağlamak için Oracle'ın veri sağlayıcısı) kullanın veya Devart (eski bilinen corelab gibi) sağlayıcısını kullanmak do yapın.

Ben Sen oracle bünyesinde ücretsiz olarak ODP.NET indirebilirsiniz Oracle 9. birlikte ODP.NET ile iyi deneyimleri var. Bkz: http://www.oracle.com/technology/tech/windows/odpnet/index.html

Bir Oracle 9 veritabanına bağlanmak için en son sürümünü (11.1.0.6.20) kullanabilir.

Cevap 10/12/2008 saat 12:28
kaynak kullanıcı

oy
0

Tamam. Ben sorunun ne olduğunu gördük.

Başlangıçta bunun DataProvided bir sorun olduğunu düşündüm, ama o değildi. Ben SQLServer 2000'de aynı sorunu keşfetti ....

google arama ben yürütme planı hakkında bir şey öğrendim. Bu şekilde alarak,% 50 sorgu performansı artırdı.

Sorunun kısa özgeçmiş koduyla bir SP çalıştırırken, DBMS yürütme planı ile bazı sorunlar vardır ve dizinleri kullanmak olmamasıdır ...

Daha iyi bir cevap bu yazı içinde: SQL Server Parametre Sniffing (veya Sızdırma)

Umarım bu sana yardımcı olmuştur.

Cevap 12/12/2008 saat 11:45
kaynak kullanıcı

oy
0

Ayarını emin olun CommandTypeetmek CommandType.StoredProcedure.

(Örnek için MSDN ):

OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "COUNT_JOB_HISTORY";
cmd.CommandType = CommandType.StoredProcedure;
Cevap 10/12/2008 saat 08:42
kaynak kullanıcı

oy
0

Eğer bir TableAdaptor yerine DataReader kullandığınızda ne kadar zaman alır? Ben DataReader çalışacaktı. Ben datareader ile ilgili sorunlar karşılaştım.

Cevap 09/12/2008 saat 16:43
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more