100,000 kayıt inserti, networkde 35 dakika sürüyor, select 1
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
100,000 kayıt inserti, networkde 35 dakika sürüyor, select 1
Selamlar.
Sistem özellikleri;
FB 2.0, Win Xp Professional, 512 ram, Celeron 2,6 Cpu, 100 Mpbs network ortamı...
Senaryo detayı;
Delphi7 Enterprise, IBX updateli bileşenlerle erişim.Tablolara erişmek için kullanılan bileşen IBDataset..
Tablo yapısı;
Toplam 17 alan, 1 PK, 1 Date, 2 Char, 2 Integer ve 12 Varchar(20,50 ve 100 size..)
Server makinada ek olarak PhotoShop ile işlem devam ederken, delphi tarafında Append ve Post metodlarıyla kayıt ekleniyor..Süre tam tam tamına 35 dakika...İşlem bitiminde aynı şartlar altında kendi yazmış olduğumuz SQL Mönitöründe söz konusu tablo Select * ... ile çekiliyor, süre 1,3 saniye...
Not : PageSize default değer, herhangi bir değişiklik yapılmadı..
Konu ile ilgili yorumlarınıza başvurmak istedim...
Teşekkürler..
_________________
aLonE CoDeR
Sistem özellikleri;
FB 2.0, Win Xp Professional, 512 ram, Celeron 2,6 Cpu, 100 Mpbs network ortamı...
Senaryo detayı;
Delphi7 Enterprise, IBX updateli bileşenlerle erişim.Tablolara erişmek için kullanılan bileşen IBDataset..
Tablo yapısı;
Toplam 17 alan, 1 PK, 1 Date, 2 Char, 2 Integer ve 12 Varchar(20,50 ve 100 size..)
Server makinada ek olarak PhotoShop ile işlem devam ederken, delphi tarafında Append ve Post metodlarıyla kayıt ekleniyor..Süre tam tam tamına 35 dakika...İşlem bitiminde aynı şartlar altında kendi yazmış olduğumuz SQL Mönitöründe söz konusu tablo Select * ... ile çekiliyor, süre 1,3 saniye...
Not : PageSize default değer, herhangi bir değişiklik yapılmadı..
Konu ile ilgili yorumlarınıza başvurmak istedim...
Teşekkürler..
_________________
aLonE CoDeR
- Terminator
- Üye
- Mesajlar: 313
- Kayıt: 13 Ara 2005 01:45
- Konum: İzmir, ama Aydın Efesi!
Re: 100,000 kayıt inserti, networkde 35 dakika sürüyor, sele
FB2 ile yarattıysan Pagesize 4096 dır. çok eskiden, IB6 ve öncesi 1K idi.bLue aLonE yazdı:Selamlar.
Sistem özellikleri;
FB 2.0, Win Xp Professional, 512 ram, Celeron 2,6 Cpu, 100 Mpbs network ortamı...
Senaryo detayı;
Delphi7 Enterprise, IBX updateli bileşenlerle erişim.Tablolara erişmek için kullanılan bileşen IBDataset..
Tablo yapısı;
Toplam 17 alan, 1 PK, 1 Date, 2 Char, 2 Integer ve 12 Varchar(20,50 ve 100 size..)
Server makinada ek olarak PhotoShop ile işlem devam ederken, delphi tarafında Append ve Post metodlarıyla kayıt ekleniyor..Süre tam tam tamına 35 dakika...İşlem bitiminde aynı şartlar altında kendi yazmış olduğumuz SQL Mönitöründe söz konusu tablo Select * ... ile çekiliyor, süre 1,3 saniye...
Not : PageSize default değer, herhangi bir değişiklik yapılmadı..
Konu ile ilgili yorumlarınıza başvurmak istedim...
Teşekkürler..
_________________
aLonE CoDeR
İşlem çok yavaş, yüzlerce sebebi olabilir ama FB2 olmadığını söyleyebilirim.
6 Yıl önce yaptığım bir test vardı, birine cevap yazmak için yapmıştım.
FB 1, AMDK2-350 makina 196MB RAM, 3.5 GB quantum fireball HD.
"saniyede" 3000 kayıt yapıyordu primary keyli seninkine benzer bir tabloya.
Firebird forumunda saniyede onbinlerce kayıt yapanlar vardı makinası iyi olan.
Dataset üzerinden insert etmek yerine, "bufferlamadan" doğrudan insert etmeyi dene. 100,000 kayıtlık bir post ve bunu datasete almak ağır bi iş.
Firebird Foundation Member #208
http://www.firebirdsql.org
http://www.firebirdsql.org
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
Sınamada insert ü baz almak doğru değil. Önemli olan çoğu zaman select hızıdır. Ancak Sorgun için bence 1,3 saniye uzun bir süre. 100 bin kayıt abartılacak bir rakam değil. Ancak sorgunun ne olduğuna da bağlı tabi.
@Terminatör' ün söylediği gibi dataset yerine insert sorguları çalıştırarak verileri girersen daha hızlı olacağını tahmin ediyorum. Çünkü dataset çalışma mantığı gereğince eklediği satırları sürekli ramde tutacağı için insert edecek makinede bir yavaşlama sözkonusu olacaktır.
@Terminatör' ün söylediği gibi dataset yerine insert sorguları çalıştırarak verileri girersen daha hızlı olacağını tahmin ediyorum. Çünkü dataset çalışma mantığı gereğince eklediği satırları sürekli ramde tutacağı için insert edecek makinede bir yavaşlama sözkonusu olacaktır.
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
@Terminator;
Öncelikle cevap için teşekkürler..
Ben de FB'de sorun olmadığını düşünüyorum zira aynı şartlar altında select 1,3 saniye sürüyor..Sorun tahmin ettiğim kadarıyla Dataset nesnesinden kaynaklanıyor..İşleri biraz hafifletince direk insert şeklinde deneyip sonucu buraya yazayım ben.
Tekrar teşekkürler...
Kolay gele..
Öncelikle cevap için teşekkürler..
Ben de FB'de sorun olmadığını düşünüyorum zira aynı şartlar altında select 1,3 saniye sürüyor..Sorun tahmin ettiğim kadarıyla Dataset nesnesinden kaynaklanıyor..İşleri biraz hafifletince direk insert şeklinde deneyip sonucu buraya yazayım ben.
Tekrar teşekkürler...
Kolay gele..
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
bLue aLonE yazdı:@Ali Erdoğan;
1,3 Saniye 100,000 kayıt için neden uzun bi süre? Sorgu aynı tablo üzerinde "Select * from tablo " şeklinde çekiliyor, bir buçuk saniye bile sürmüyor, bu gerçekten uzun bi süre mi?

-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Benim amacım da bu işlemin bu kadar uzun sürmesine istinaden select çekmenin maliyetini bulmaktı yani test için yaptım.Elbetteki 100,000 kaydı aynı anda oluşturmak söz konusu olmaz güncel hayatta (gene de kesin konuşmamak gerek, istisnalar çıkabilir..).Ama aynı şartlar altında bir insert'in (dataset nesnesiyle de olsa..) bu kadar sürmesi beni şaşırttı.Olayı bir de insert into ile ilk fırsatta deneyeceğim.
Kolay gele..
Kolay gele..
Eğer insert işlemi yaptığın kod bloğunu gönderirsen belki problem daha rahat tespit edilecektir.
Ben problemin kaynağının şunlardan birisi olabileceğini düşünüyorum:
1. DataSet nesnesinin afterpost, beforepost, onnewrecord, beforeinsert vs. gibi eventlerinde ekstra işlem yaptırıyor olabilirsin (örneğin Refresh gibi).
2. Toplu kayıt girerken DataSet nesnelerini DisableControls ve EnableControls yapmamış olabilirsin ve her kayıttta bağlı komponentleri update ediyordur.
3. En iyisi sen bize insert kodlarını ve DataSet'in event kodlarını (afterpost vs.) gönder. Galiba en iyisi bu olacak.
Zira 100.000 kayıt için 35 dakika ancak BLOB alanlar falan varsa mümkün. Zaten sen de yok demişsin.
İyi çalışmalar.
Ben problemin kaynağının şunlardan birisi olabileceğini düşünüyorum:
1. DataSet nesnesinin afterpost, beforepost, onnewrecord, beforeinsert vs. gibi eventlerinde ekstra işlem yaptırıyor olabilirsin (örneğin Refresh gibi).
2. Toplu kayıt girerken DataSet nesnelerini DisableControls ve EnableControls yapmamış olabilirsin ve her kayıttta bağlı komponentleri update ediyordur.
3. En iyisi sen bize insert kodlarını ve DataSet'in event kodlarını (afterpost vs.) gönder. Galiba en iyisi bu olacak.
Zira 100.000 kayıt için 35 dakika ancak BLOB alanlar falan varsa mümkün. Zaten sen de yok demişsin.
İyi çalışmalar.
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
@Hakan Can;
Kodları buraya yazmam firma prensipleri gereği mümkün değil.Biz DataSet nesnelerinin On... eventlerine kod yazmıyoruz hiçbir zaman..Enable ve Disable kontrolü yapılıyor..Olay DataSet nesnesinin verileri buffera almasından kaynaklanıyor (yanılmıyorsam..).Değişik alternatifler üzerinde testler yapıyorum, net bir sonuca ulaşınca topice yazacağım.İlgin için teşekkürler..
Kolay gele..
Kodları buraya yazmam firma prensipleri gereği mümkün değil.Biz DataSet nesnelerinin On... eventlerine kod yazmıyoruz hiçbir zaman..Enable ve Disable kontrolü yapılıyor..Olay DataSet nesnesinin verileri buffera almasından kaynaklanıyor (yanılmıyorsam..).Değişik alternatifler üzerinde testler yapıyorum, net bir sonuca ulaşınca topice yazacağım.İlgin için teşekkürler..
Kolay gele..
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
- Terminator
- Üye
- Mesajlar: 313
- Kayıt: 13 Ara 2005 01:45
- Konum: İzmir, ama Aydın Efesi!
peki, 100,000 kaydın boyuna eşdeğer bir dosyayı (mesela 50MB)bLue aLonE yazdı:Tekrar selamlar.
Olayı Insert Into ile denedim, süre 8,36 dakika.Ortalama saniyede 194 kayıt insert ediyor.Network ortamından sıyrılıp lokalde denedim değişen birşey olmadı.PK için tanımladığım Insert Trigger'ini disable yaptım, (PK'yı manuel veriyorum..) gene değişen birşey olmadı..İlginç..
aynı diske paste eder misin.. yani diskinin yazma performansına bir bakalım.
Bir de unutmadan, dosyanın soyadı ne? GDB mi? öyleyse, FDB yapıp dener misin... bir windows sistem dosya soyadıyla aynı oldugu için system restore GDB dosyalarını felç ediyor. system restoreyi kapatarak da deneyebilirsin.
Firebird Foundation Member #208
http://www.firebirdsql.org
http://www.firebirdsql.org
Selamlar,
Aslında süreler çok da kötü değil ! Saniyede 194 Kayıt fena bir hız değil ama daha da hızlı yapılabilir kanaatindeyim. Ben bloblu kayıtlarda aşağı yukarı o sayıları elde ediyorum.
Ama Photoshop ile aktif olarak çalışılıyor mu o anda? Yada FB'nin çalıştığı makinada o anda çalışan başka bir şey var mı? Windows Güvenlik Duvarı açık mı? Virüs tarayıcı var mı ? Vs. vs.
Performans çok ilginç bir konudur, bir sürü etmen olabilir. Diskler nasıl? IDE, SATA, SCASI ?
gibi gibi
Aslında süreler çok da kötü değil ! Saniyede 194 Kayıt fena bir hız değil ama daha da hızlı yapılabilir kanaatindeyim. Ben bloblu kayıtlarda aşağı yukarı o sayıları elde ediyorum.
Ama Photoshop ile aktif olarak çalışılıyor mu o anda? Yada FB'nin çalıştığı makinada o anda çalışan başka bir şey var mı? Windows Güvenlik Duvarı açık mı? Virüs tarayıcı var mı ? Vs. vs.
Performans çok ilginç bir konudur, bir sürü etmen olabilir. Diskler nasıl? IDE, SATA, SCASI ?
gibi gibi
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Haa bir de,
IB Bileşenlerinde IBSQL adı altında (Üzerinde Yıldırım işareti bulunan) bir component var. Onunla deneyin. O normal SQL componentinden çok daha hızlı yapar. Unidirectional çalıştığı için prepare edersiniz çağırmadan önce, sonra parametreleri basr gönderirsiniz. Ondan sonraki döngülerde hiç Prepare ettirmeden PAramByName .... Zank diye EXECSQL çekersiniz.
Daha da hızlanır programınız.
IB Bileşenlerinde IBSQL adı altında (Üzerinde Yıldırım işareti bulunan) bir component var. Onunla deneyin. O normal SQL componentinden çok daha hızlı yapar. Unidirectional çalıştığı için prepare edersiniz çağırmadan önce, sonra parametreleri basr gönderirsiniz. Ondan sonraki döngülerde hiç Prepare ettirmeden PAramByName .... Zank diye EXECSQL çekersiniz.
Daha da hızlanır programınız.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
@Terminator;
45.5 Mb bir klasör 12 saniyede paste edildi, anormal değil gibi..Dosya uzantısı FDB, GDB kullanmayı pek tercih etmiyoruz..GDB dosyası hakkında yeni birşey öğrenmiş olduk bu arada OS'la çakışması söz konusu olabilirmiş, bunu gözönünde bulundururuz artık..
@Kuri_YJ;
Aslında zaman pek anormal değil ama yine de gerek tecrübe edinmek açısından ve gerekse stabiliteyi maksimum tutmak adına fırsat buldukça olayı irdelemek gerektiğini düşünüyorum.Test yapan arkadaşlar da sürenin abartılacak düzeyde olmadığını beyan ettiler gerçi ama...Ek olarak, güvenlik duvarı kapalı, herhangi bir antivirüs yazılım çalışmıyor ve maalesef disk hakkında hiçbir bilgim yok, zira hiç fırsat olmadı bakmaya makinalar geldi geleli.Beni şaşırtan konu ise select çektiğim nokta..Bu kadar kısa süreceğini tahmin etmiyordum insert süresini görünce..Bir de ilk fırsatta, söylediğin gibi IBSQL bileşeniyle test edicem.İlerleyen günlerde olayı diğer erişim componentleriyle de yapmayı düşünüyorum.Sonuçları buraya yazarım yine..
İlginiz için teşekkürler..
Kolay gelsin..
45.5 Mb bir klasör 12 saniyede paste edildi, anormal değil gibi..Dosya uzantısı FDB, GDB kullanmayı pek tercih etmiyoruz..GDB dosyası hakkında yeni birşey öğrenmiş olduk bu arada OS'la çakışması söz konusu olabilirmiş, bunu gözönünde bulundururuz artık..
@Kuri_YJ;
Aslında zaman pek anormal değil ama yine de gerek tecrübe edinmek açısından ve gerekse stabiliteyi maksimum tutmak adına fırsat buldukça olayı irdelemek gerektiğini düşünüyorum.Test yapan arkadaşlar da sürenin abartılacak düzeyde olmadığını beyan ettiler gerçi ama...Ek olarak, güvenlik duvarı kapalı, herhangi bir antivirüs yazılım çalışmıyor ve maalesef disk hakkında hiçbir bilgim yok, zira hiç fırsat olmadı bakmaya makinalar geldi geleli.Beni şaşırtan konu ise select çektiğim nokta..Bu kadar kısa süreceğini tahmin etmiyordum insert süresini görünce..Bir de ilk fırsatta, söylediğin gibi IBSQL bileşeniyle test edicem.İlerleyen günlerde olayı diğer erişim componentleriyle de yapmayı düşünüyorum.Sonuçları buraya yazarım yine..
İlginiz için teşekkürler..
Kolay gelsin..
- Terminator
- Üye
- Mesajlar: 313
- Kayıt: 13 Ara 2005 01:45
- Konum: İzmir, ama Aydın Efesi!
45MB için 12 saniye az değil, senin disklerin sanırım yazma performansı düşük. 5 yıl önceki diskim bile 30MB/sn işlem yapıyordu.
45MB klasörü, aynı diskten okuyup yazsan bile, en kötü ihtimalle 2 saniyeyi okumaya ayıralım, 3 saniyeyi de yazmaya ayıralım yine de 5 saniye eder.
FB de bir sorun olmadığına eminim çünkü insert ve selectler FB nin en güçlü yanları sayılabilir, her ikisi de sharing-lock dışı işlemler.
Normal bir makina bile kullansan, saniyede en az 2000 kayıt yapabilmen lazım o söylediğin yapıdaki bir tabloya.
En iyisi sen aynı uygulamayı temiz ve farklı bir makinada dene.
Sistemle ilgili sorunun var sanırım ve bu sohbet edilerek anlaşılamayabilecek kadar complex bir durum.
daha önceki topiclerde de söylediğim gibi, makinanda saçma sapan çalışan bir antivirus antibilmemne gibi dosya takibi ve kontrolü yapan programlar olabilir, her okuma ve/veya yazma işleminde devreye girip sistemi kıvrandırabilir bazıları, ya da saçma sapan I/O yapan bir proses. Task manager kullanıp bunları sürekli takip etmen gerekir. vs vs..
Hele hele günlerdir burda konuştuğum cluster sizeın 4096 dan küçükse, hiiç gözüme gözükme!!!
45MB klasörü, aynı diskten okuyup yazsan bile, en kötü ihtimalle 2 saniyeyi okumaya ayıralım, 3 saniyeyi de yazmaya ayıralım yine de 5 saniye eder.
FB de bir sorun olmadığına eminim çünkü insert ve selectler FB nin en güçlü yanları sayılabilir, her ikisi de sharing-lock dışı işlemler.
Normal bir makina bile kullansan, saniyede en az 2000 kayıt yapabilmen lazım o söylediğin yapıdaki bir tabloya.
En iyisi sen aynı uygulamayı temiz ve farklı bir makinada dene.
Sistemle ilgili sorunun var sanırım ve bu sohbet edilerek anlaşılamayabilecek kadar complex bir durum.
daha önceki topiclerde de söylediğim gibi, makinanda saçma sapan çalışan bir antivirus antibilmemne gibi dosya takibi ve kontrolü yapan programlar olabilir, her okuma ve/veya yazma işleminde devreye girip sistemi kıvrandırabilir bazıları, ya da saçma sapan I/O yapan bir proses. Task manager kullanıp bunları sürekli takip etmen gerekir. vs vs..
Hele hele günlerdir burda konuştuğum cluster sizeın 4096 dan küçükse, hiiç gözüme gözükme!!!

Firebird Foundation Member #208
http://www.firebirdsql.org
http://www.firebirdsql.org