• 21-10-2022, 02:29:40
    #1
    Selamlar,
    Hangi kodlar mysql cpu oranını arttirma dan en az tuketim ve en hızlı veri sonucunu verir?
    Tabloda 700 bin veri olduğunu düşünelim.


    SELECT * FROM table WHERE id BETWEEN 1 and 4;


    2.kod

    SELECT * FROM table WHERE id IN (1,2,3,4);

    Yukarıdaki ilk 1 ve 2.islemde
    Veritabanına tek sorgu mu gider yoksa id sayısına göre ayrı ayrı bir bağlantı mi gider?

    3.kodtada for each döngüsü ile tek tek sql baglantisi ile çekim islemi.
  • 21-10-2022, 02:49:28
    #2
    Bir ve iki numarada tek sql isteği gider.
  • 21-10-2022, 02:53:51
    #3
    blap adlı üyeden alıntı: mesajı görüntüle
    Bir ve iki numarada tek sql isteği gider.
    Peki minimum 200 bin veri alalim maximum 700 bin veri.

    Bu verileri cektikten sonra array içinde topluyorum.

    Önce toplam tablodaki veri sayısını alip between ile 1, count mu yapmak mantıklı olur yoksa örneğin veri sayısını for each döngüsü ne alip tek sorguda birden fazla veri cekmek yerine,

    BETWEEN den sonra limit 1,20.000 demek mi mantıklı olur
    Yani her cekim isleminde 20 bin veri getirmesimi daha hızlı olur yoksa
    BETWEEN 1,200.000 mi?

    Ayni sekilde, 2.sorguda

    In kelimesi ile başlayan (1,200.000) e kadar veri id si yazmak mi mantıklı olur?
  • 21-10-2022, 02:55:42
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    genelde get komutunu kullanırlar sunucu yeterliyse ğek sorun yaşamazsınız 1gb e yakın mysql verim var kasma yok hâlâ.
  • 21-10-2022, 02:59:59
    #5
    ymazmustafa adlı üyeden alıntı: mesajı görüntüle
    genelde get komutunu kullanırlar sunucu yeterliyse ğek sorun yaşamazsınız 1gb e yakın mysql verim var kasma yok hâlâ.
    Ortalama 5-30 gb arasi bir verim var diyelim hocam.
    Bu kodlari uygulamadan önce sayfa açılış hizim ortalama olarak 1-4 saniye arasi degisken surelere düşürdüm.
    Amacım server load oranını düşürüp mysql cpu tüketimini düşürüp.
    En verimli ve hızlı şekilde sayfa açılışı sağlamak.
    Veri girişinde varmi yokmu eklimi degilmi isleminde internet ortamindaki sorgularin hepsi veri sayisindan dolayı time load a düşürüyor sayfayi bende böyle bir yol ile tek sorguda veriyi cekip array içine aldiktan sonra aranilacak ne ise array içinde tek tek arttırıyorum.

    Bunun haricinde birde random limit sorgusunda cpu load tavan yaptığı için id biliniyormus gibi islem yapıyorum ve açılış hizina etkisi oluyor
    Burda sunucuyu zorlayan tek şey veri cekme anı oluyor.
    Daha farklı teknikler ile veri cekme nasıl yapılabilir?
  • 21-10-2022, 03:36:35
    #6
    Where yerine sadece SELECT * FROM table kullanarak tüm verileri getirebilirsiniz. Sadece 200 bin veri getirmek istiyorsanız SELECT * FROM table LIMIT 200000 yazarak limitlendirebilirsiniz. Son eklenenden başlamak isterseniz SELECT * FROM table ORDER BY id DESC yazabilirsiniz. Yani sorgulu teke indirmek çok kolay.
  • 21-10-2022, 03:42:29
    #7
    blap adlı üyeden alıntı: mesajı görüntüle
    Where yerine sadece SELECT * FROM table kullanarak tüm verileri getirebilirsiniz. Sadece 200 bin veri getirmek istiyorsanız SELECT * FROM table LIMIT 200000 yazarak limitlendirebilirsiniz. Son eklenenden başlamak isterseniz SELECT * FROM table ORDER BY id DESC yazabilirsiniz. Yani sorgulu teke indirmek çok kolay.
    Söylediğiniz bu işlemde daha önce sorun yaşadığım için alternatif aradim sunucun yanıt vermesi 1.5 dakikanin üzerine çıkabiliyor ortalama en dusuk yanıt verme süresi 45 saniye oluyor.
    Deneme yanılma yolu ile in(1,23,4) sorgusunun hızlı veri getirdiğini farkettim.
  • 21-10-2022, 04:12:52
    #8
    Slash adlı üyeden alıntı: mesajı görüntüle
    Söylediğiniz bu işlemde daha önce sorun yaşadığım için alternatif aradim sunucun yanıt vermesi 1.5 dakikanin üzerine çıkabiliyor ortalama en dusuk yanıt verme süresi 45 saniye oluyor.
    Deneme yanılma yolu ile in(1,23,4) sorgusunun hızlı veri getirdiğini farkettim.
    Eee 200 bin veriyi where in ile listeleyince de çökecek hocam
  • 21-10-2022, 04:21:36
    #9
    Yüksek boyutlu veriler için postgresql kullanın kafanız rahat etsin