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.
Mysql veri çekme hangi durumda daha hızlı olur?
13
●438
- 21-10-2022, 02:53:51Peki minimum 200 bin veri alalim maximum 700 bin veri.blap adlı üyeden alıntı: mesajı görüntüle
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:42Kimlik 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:59Ortalama 5-30 gb arasi bir verim var diyelim hocam.ymazmustafa adlı üyeden alıntı: mesajı görüntüle
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:35Where 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:29Sö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.blap adlı üyeden alıntı: mesajı görüntüle
Deneme yanılma yolu ile in(1,23,4) sorgusunun hızlı veri getirdiğini farkettim. - 21-10-2022, 04:12:52Eee 200 bin veriyi where in ile listeleyince de çökecek hocamSlash adlı üyeden alıntı: mesajı görüntüle
- 21-10-2022, 04:21:36Yüksek boyutlu veriler için postgresql kullanın kafanız rahat etsin