Bir siteden 350bin veri çekip , kendi sitemize ekleyip her gün veya 2-3 günde bir güncelleme yapmaya çalışıyoruz,
Bunu php ile yazdığımda timeout alıyor veya çok yavaş çekiyorum.Bu sorunları yaşamamak için c# ile veri çekip kendi pc imde mssql veritabanına kaydediyorum. Daha sonra bunu php ye üç yöntemle gönderiyorum.
Yöntem 1: MSSQL den tek tek veri çekip PHP ye get form ile gönderiyorum
Yöntem 2: MSSQL den tek tek veri çekip insert scripti generate ediyorum.Bunuda json ile gönderiyorum.
Yöntem 3: MSSQL den veri çekip 5bin li veriler şeklinde JSON ile gönderiyorum.
Karşılaştığım sorunlar, c# da kendi pc im üzerindeki mssql veritabanında 350bin veriyi select ile alırken çok yavaş çalışıyor, en az 1-2 saat sürüyor belki daha da fazla. Bunun haricinde JSON ile gönderdiğimde timeout bol bol alıyorum.Insert scripti oluşturup .sql dosyası generate ettiğimde dosya boyutu çok büyük oluyor.
Yukarda yazdıklarımı hep deneme yanılma yoluyla bulmaya çalıştım ve çalışmaya devam ediyorum. Bu konuda tecrübeli olan arkadaşlardan destek almak istiyorum. Lokalime phpmyadmin kurup orada işlem yapmayı düşündüm daha hızlı olabilir belki diye ama bilemiyorum sonucu, Sizce nasıl bir yöntem kullanmalıyım _?
c# ve PHP ile ilgili Performans ile ilgili soru
8
●567
- 09-01-2016, 21:43:48async & await olayını bir araştırın hocam ve databaseden verileri okurken aynı zamanda okunan veriyi anında post edin bu şekilde yaptığınızda işlemleriniz hem kasmayacaktır hemde C# tarafı çok akıcı bir şekilde işleyecektir
- 09-01-2016, 22:29:58onu yazmayı unuttum , thread kullanıyorum 8 farklı metod yazdım her thread 1 metodu çağıracak şekilde yinede yavaşlık söz konusuemrebeyoglu adlı üyeden alıntı: mesajı görüntüle

--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:29:58 -->-> Daha önceki mesaj 21:54:24 --
sizin kullanmış olduğunuz hızlı database okuma kodu örneği varmıydı hocamemrebeyoglu adlı üyeden alıntı: mesajı görüntüle - 10-01-2016, 00:21:42senin bilgisayarında sıkıntı olabilir hocam,
şirketteki bilgisayara 200 bin veriyi ekliyorum 5 saniyede bitiyor, select sorgusu da bir kaç saniyede..
mssql kullanıyoruz.. gerçi bahsettiğim süreler direk sql üzerinden sorgulama süreleri.. ama c#*üzerinden denesem de o kadar sürmez hocam.. belki paging tarzı bir şeyler yapılabilir multi-threading tabanlı..
ama en basit yol, db yi taşı..
ya da hız arıyorsan nosql çözümlerine bak. - 10-01-2016, 01:16:50İlk önce bu işlem için php, elini ayağını birbirine karıştırmaktan başka birşey yapmaz.
Mutlaka ki birebir çalışabilecek bir aktarıma ihtiyacın var. İşlemler çok parçalanıyor arada ekstra veritabanı ve manuel işlemler sana her halükarda x2 vakit kaybettiriyor fakat bunları geçelim select olayında biryerlerde ciddi problemler olduğu aşikar. Bu problemi bulup çözmek ne kadar vaktini alır bilemiyorum ama nodejs+nosql ile asenkron çalışan iki kademeli bir web servis ile koşturmak, bu problemi çözmek için ideal duruyor. - 10-01-2016, 02:00:41select i mssql de 6 sn de çekiyorum bende ama c# üzerinden çalıştırıp bir string değişkene attırıyorum, çok uzun sürüyor 1-2 saatte bile bitmiyorertan2002 adlı üyeden alıntı: mesajı görüntüle
çalıştırdığım kod aşağıdaki;
SqlConnection cnna = new SqlConnection("server=.;Database=data;Integrated Security=true"); // Bağlantı oluştur cnna.Open(); SqlCommand sorgu = new SqlCommand(); sorgu.Connection = cnna; sorgu.CommandType = CommandType.StoredProcedure; sorgu.CommandText = "sel_Request"; SqlDataReader reader = sorgu.ExecuteReader(); Int32 say = 0; while (reader.Read()) { say++; sorgum += "INSERT INTO `Request` VALUES(null..)"; } cnna.Close(); - 10-01-2016, 12:06:37Anladım hocam,
Büyük ihtimalle tablonun tasarımı ile ilgili problemler var + sorgunu tam bilmiyorum ama eğer kompleks bir sorgu ise bu da cost'u arttırır.
http://stackoverflow.com/a/28271028/1022138
burada bir kaç tane öneri var, denersen düşürür.
Ayrıca test amaçlı olarak
linq to sql
ve entity framework (linq to entities)
ile verileri çeker misin.
ikisi de stored procedure ları destekliyor, hem o şekil hem de direk sorguyu linq üzerinden yaparak dener misin, performansı merak ediyorum
