+50gb bir veriyi mysqle aktarıp, daha sonra o verileri sorgulayan bir sistem yapmamız talep edildi.
şu an elinizdeki verinin yapısını tam bilmiyorum ama biz önce veriyi elimizden geldiğince minimize etmeye çalıştık. örnek vermek gerekirse;
isim diye bir tablomuz olsun, içindeki verileri daha optimize şekilde tutalım:
ahmet
mehmet
hakan
ali
bu isimleri direkt varchar(255) olarak tutmak hem fazla yer kaplar hem de sorgularda yavaşlamaya sebep olur. bunun yerine her bir isim için bir id belirleyip, isimleri ayrı bir tabloda tutmak daha verimli olur(genel olarak bazı sütünlardaki veriler bir standarttaysa ve genelde 30-40 karakteri yada 20 karakteri geçmiyorsa 255 kullanmak veriyi büyütür ve optimize olmaz).
örneğin:
1 - ahmet
2 - mehmet
3 - hakan
4 - ali
ana tabloda ise sadece bu idleri tutarsın. rapor ekranında da bu idye göre karşılık gelen ismi bastırırsın. böylece hem sorgular daha hızlı döner hem de veri daha az yer kaplar.
bizde kod, aldığı sorguyu rapora dökerken bu int değerlerinin karşılıklarına göre veriyi gösteriyor. bu yöntemle ciddi bir performans artışı elde ettik.
Net karımız : 50gb veriyi 30gb a kadar düşürdük. 30-40 saniye süren sorgulara 6 saniyeye kadar indirdik.