lostyazilim
tr.link

320 milyon sorguyu nasıl çalıştırırım?

23 Mesajlar 3.771 Okunma
lstbozum
tr.link

eka7a eka7a openix.io Kullanıcı
  • Üyelik 18.06.2013
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılımcı
  • Konum Bursa
  • Ad Soyad E** K**
  • Mesajlar 651
  • Beğeniler 109 / 313
  • Ticaret 2, (%100)
atanik Veritabanından gelen kayıtları limit özelliği ile limitlendirin. Örneğin ilk 100 kayıt çağıracak şekilde. Daha sonra bunu döngüye sokarak 100 un katları şeklinde tüm kayıtları çağırana kadar tekrar ettirin.

Eger liste şeklinde ekrana basılacaksa yine limitlendirme yaparak sayfalama yapmalısınız.

Aksi taktirde limitlendirme yapmadığınızda tek seferde tüm kayıtları çağırır ve tümüne ulaşamadan timeout a düşersiniz.
atanik

kişi bu mesajı beğendi.

Openix.io | $9.90 PositiveSSL | $12.90 RapidSSL
wmaraci
reklam

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Döngü içerisinde veritabanı hit, bir yazılımcının en çok kaçınması gereken konulardan biridir. Kaldı ki siz 7 kez içeri giren bir döngü içerisinde bunu yapıyorsunuz.

Yani veritabanına 323.190.000 kez gidip geliyorsunuz. Sorgunuz 0,001sn sürecek şekilde bile çalışsa 323.190 sn = 5.386 dk = 89,7 saat = 3,7 gün sürer.

Bu hesabı yaparken saniyede 1000 sorgu çalıştıracak bir performansla bu işin gerçekleştiğini varsaydık Burada temel sıkıntı her seferinde veritabanına git gel yapmak gerektiğidir. Sorgunuzu inceleyecek vaktim şuan yok, ama doğru yol bu değil. Olabildiğince az veritabanı git gel yapmanız gerekmekte. Yani mevzu 320milyon veri çekmek değil, veritabanı bunu gayet rahat yönetebilir, sorun 320 kez veritabanından istek yapıp cevap almayı beklemekte.

Böyle bir durumda zaten timeout süresini uzatmak, kaldırmak da sorununuzu çözmez. Ki çözüyor olsa da zaten bu bir çözüm değil üst kapatma olur. Yapmanız gereken döngü içerisinde olabildiğince az sorgu kullanmak. Hele iç içe döngü içerisinde böyle bir şeyi hiç bir zaman kullanmamak, çünkü her içe soktuğunuz döngüde kartezyan çarpımı olarak üst döngünün dönüş sayısı x iç döngünün dönüş sayısı kadar veritabanına istek atıp cevap beklersiniz.
atanik berkaycatak sovetski

kişi bu mesajı beğendi.

atanik atanik WM Aracı Kullanıcı
  • Üyelik 26.11.2010
  • Yaş/Cinsiyet 42 /
  • Meslek bilgisayar mühendisi
  • Konum
  • Ad Soyad A** T**
  • Mesajlar 79
  • Beğeniler 40 / 6
  • Ticaret 0, (%0)

srkn12 adlı üyeden alıntı

atanik dizelerdeki değerler sabit mi değişken mi?

Hepsi sabit değerler
 

 

atakde atakde Merhaba Dünya Kullanıcı
  • Üyelik 14.07.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad M** D**
  • Mesajlar 297
  • Beğeniler 41 / 74
  • Ticaret 35, (%100)
browserda çalışmaz.
atanik

kişi bu mesajı beğendi.

wmaraci
wmaraci

atanik atanik WM Aracı Kullanıcı
  • Üyelik 26.11.2010
  • Yaş/Cinsiyet 42 /
  • Meslek bilgisayar mühendisi
  • Konum
  • Ad Soyad A** T**
  • Mesajlar 79
  • Beğeniler 40 / 6
  • Ticaret 0, (%0)
Destek olmaya çalışan tüm arkadaşlara teşekkür ederim.

cmd komut istemi ile çalıştırdım. söylemeyi unuttum. bu bir defalık yapılması gereken bir işlem olduğundan browser da çalıştıramadım .

şu an komut isteminde çalışıyor ve http://localhost/phpmyadmin/server_status_processes.php takip ediyorum sorunsuz çalışıyor gibi.

localhostta çalıştırdığım için fazla kaynak kullanabilirim uzun süreceğinden bilgisayarı açık bırakacağım. o yüzden en fazla performansı kullanarak yapabilmem için mysql ve php ayarlarında bir şey yapabilir miyim ? Eğer yapabilirsem komutu yeniden mi başlatmalıyım ?
 

 

atanik atanik WM Aracı Kullanıcı
  • Üyelik 26.11.2010
  • Yaş/Cinsiyet 42 /
  • Meslek bilgisayar mühendisi
  • Konum
  • Ad Soyad A** T**
  • Mesajlar 79
  • Beğeniler 40 / 6
  • Ticaret 0, (%0)
tüm gece boyunca bilgisayarı açık bıraktım ve sabah çok fazla yol kat edemediğimi gördüm. Hatta array içinde sayısı az olan 2 döngüyü kaldırıp denedim(manuel olarak 50 dosya yaparım düşüncesi ile). Ama bu seferde yine uzun bir yol kat edemedim.

belki konuyu biraz daha detaylı anlatmam gerekir diye düşündüm. konuyu düzenledim ve güncelleme olarak yazdım https://wmaraci.com/forum/php/320-sorguyu-nasil-calistiririm-610346.html
 

 

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
Sen tam olarak ne yapmak istediğini biraz daha aç. Ona göre ya düzgün bir sql sorgusu yazalım olmadı tabloyu hafızaya alıp oradan dönersin. Bu şekilde olmaz.

Kafanda kurduğun algoritmaya çözüm isteme, ne yapmak istiyorsan tam olarak detaylı bir biçimde anlat ki düzgün bir şekilde çözülsün.
atanik

kişi bu mesajı beğendi.

atanik atanik WM Aracı Kullanıcı
  • Üyelik 26.11.2010
  • Yaş/Cinsiyet 42 /
  • Meslek bilgisayar mühendisi
  • Konum
  • Ad Soyad A** T**
  • Mesajlar 79
  • Beğeniler 40 / 6
  • Ticaret 0, (%0)
çok doğru söylüyorsun. sanırım her şey benim aklımda ve sizinde anlamınızı bekledim. Kusura bakmayın. işin özü aslında şöyle no,tarih,oran HARİÇ diğer kalonlarda tekrar eden kayıtları bulup onların "oran" kolonundaki değerleri toplamak istiyorum.



1601 numaralı ve 1709 numaralı kayıtların aynı olduğunu düşünelim. bu ikisinin "oran" değerlerinin toplanması yaptırmak istiyorum. Toplamda 6289 kayıt ve en fazla 2-3-4 kayıtlar birbiri ile tamamen aynı oluyor.
Bu 6289 kayıt arasında birbiriyle başka no,tarih,oran HARİÇ aynı olanlarda olabilir. yine onlarıda ayrı ayrı yazıp "oran" değerlerini toplamının yapılmasını istiyorum.
Umarım şimdi anlatabilmişimdir. tekrardan kusura bakmayın.
 

 

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
https://stackoverflow.com/questions/16324328/mysql-select-records-for-duplicates-using-multiple-columns
atanik

kişi bu mesajı beğendi.

atanik atanik WM Aracı Kullanıcı
  • Üyelik 26.11.2010
  • Yaş/Cinsiyet 42 /
  • Meslek bilgisayar mühendisi
  • Konum
  • Ad Soyad A** T**
  • Mesajlar 79
  • Beğeniler 40 / 6
  • Ticaret 0, (%0)
no,tarih,oran HARİÇ diğer kolonlarda aynı olanlar mevcut. Bu sorun olur mu , yani hepsi aynı değil ?
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al