• 29-03-2021, 21:37:54
    #1
    Test android uygulamamda çözülen soruları doğruları yanlışları tutan log dosyası bulunmakta, bir uygulamamda bunun dosya boyutu 70mb olmuş durumda bu boyutu düşürebilir miyiz? Çünkü soruları çekmek istediğimde düşük boyutlu veritabanında hemen yansırken dosya boyutu büyük veritabanında işlemler çok geç olmakta. Yada başka bir fikriniz varsa onu da yapabiliriz.
  • 29-03-2021, 21:46:12
    #2
    KhanJitsu adlı üyeden alıntı: mesajı görüntüle
    Test android uygulamamda çözülen soruları doğruları yanlışları tutan log dosyası bulunmakta, bir uygulamamda bunun dosya boyutu 70mb olmuş durumda bu boyutu düşürebilir miyiz? Çünkü soruları çekmek istediğimde düşük boyutlu veritabanında hemen yansırken dosya boyutu büyük veritabanında işlemler çok geç olmakta. Yada başka bir fikriniz varsa onu da yapabiliriz.
    Her 5mb'de bir dosyayı parçala hocam
    eğer mariadb/mysql fln diyorsan da yine tabloyu parçala hocam ve mutlaka redis gibi bir yazılım kullan
  • 29-03-2021, 21:47:47
    #3
    Optimizasyondan ziyade verileri yedeklerken algoritmik olarak bazı düzenlemeler yapabilirsiniz. Örneğin fikir vermesi amacıyla söylüyorum her dakika veri gelen bir sistemde veriler True değerini döndürüyorsa ve siz False değerinin düşük ihitmalle geldiğini düşünüyorsanız sadece False değeri geldiğinde yedekleme yapıyorum. Bu sayede diğer zamanlarda hep True değerinin geldiğini anlıyorum ve kullanıcıya sadece False değerinin geldiği noktaları bildirerek diğer zaman dilimlerini sistemde True olarak gösteriyorum. Bu sayede True değerlerini yedeklemiyorum.
  • 29-03-2021, 22:00:22
    #4
    yalinyalniz adlı üyeden alıntı: mesajı görüntüle
    Her 5mb'de bir dosyayı parçala hocam
    eğer mariadb/mysql fln diyorsan da yine tabloyu parçala hocam ve mutlaka redis gibi bir yazılım kullan
    Bu konuda hiç bir bilgim yok hocam tabloyu parçalamak herhangi bir sıkıntı yaratır mı acaba bana?
  • 29-03-2021, 22:01:40
    #5
    KhanJitsu adlı üyeden alıntı: mesajı görüntüle
    Bu konuda hiç bir bilgim yok hocam tabloyu parçalamak herhangi bir sıkıntı yaratır mı acaba bana?
    Server'ın 2GB içinden tek bir veriyi çekmesi mi kısadır yoksa 5mb içinden tek bir veriyi çekmesi mi?
    InnoDB file per table yap hocam sonra da kullan
  • 29-03-2021, 22:20:05
    #6
    yalinyalniz adlı üyeden alıntı: mesajı görüntüle
    Server'ın 2GB içinden tek bir veriyi çekmesi mi kısadır yoksa 5mb içinden tek bir veriyi çekmesi mi?
    InnoDB file per table yap hocam sonra da kullan
    Fikrinizi sunucu firmama ilettim hocam yarın içerisinde bu işlemlere bakan arkadaş dönüş yapacak, mantık olarak gerçekten işe yarayacak gibi 8gb ram 6x cpu vardı sunucuda %20 işlemci kullanıyordum ama performans alamıyordum tüm sorun veritabanından kaynaklanıyormuş daha yeni çözdüm eğer bu şekilde o sorunu da bitirirsem gerçekten iyi olacak.
  • 29-03-2021, 22:20:51
    #7
    KhanJitsu adlı üyeden alıntı: mesajı görüntüle
    Fikrinizi sunucu firmama ilettim hocam yarın içerisinde bu işlemlere bakan arkadaş dönüş yapacak, mantık olarak gerçekten işe yarayacak gibi 8gb ram 6x cpu vardı sunucuda %20 işlemci kullanıyordum ama performans alamıyordum tüm sorun veritabanından kaynaklanıyormuş daha yeni çözdüm eğer bu şekilde o sorunu da bitirirsem gerçekten iyi olacak.
    Optimizasyon yapılsın, DB önüne de Redis konulsun o bile kafi hocam.
  • 05-04-2021, 22:10:03
    #8
    Bu konuda ücretli yardımcı olabilecek var mı acaba?
  • 10-04-2021, 03:58:18
    #9
    Dosya boyutu arttıkça hız azalıyorsa doğru index kullanmadığın anlamına gelir. Indexler sql yapılarında verilerin nerede olduklarını işaret eden temel yapıtaşlarıdır. Doğru ayarlandığında verilerin sistem tarafından kolayca bulunmasını sağlar.

    mysql sorgusunda where koşulundan sonra x = y olarak belirttiğin fieldlerin doğru yapıda olmalarını ve index atanmış olmalarını check edip düzeltirsen sorunun çözülür.

    Verilen cevapları check edebileceğin bir sistem yaptıysan log tablosu şu şekilde olursa performans açısından işine yarar.

    loglar
    -- ID (log benzersiz id unique & auto inc.)
    -- Sınav ID (bir üst tablodan hangi sınavın cevapları olduğunu karıalaştıracağın) (integer maks 11 length)
    -- User ID (User bilgisini karşılaştıracağın) (integer maks 11 length)
    -- Data (longtext)

    Keyler
    -- ID (primary key)
    -- SInav ID ( index key)
    -- User ID ( index key)

    Sınav sonucları online yapıldığ için log alırken gönderilen formun tamamını $_POST değişkeniyle alıyorsun. Ve bu globalin içerisine array olarak yazılıyor o zaman tamamen bu değişkeni json hale getirip loglamak en mantıklısı olacaktır yani

    <?php
    $log = json_encode($_POST);
    ?>
    Bu $log değişkeninide data fieldinin içerisine gireceksin. logtext olarak orada saklayacaksın. Daha sonra veriyi sinav id ve user id ie çektikten sonra json_encode ile data değerinin içerisindeki verileri okunabilir hale getirebileceksin.

    70mb lik bir tablo öyle ahım şahım bir tablo değil 10 gb lik tablolardan 0.003 saniyede veri çekiyoruz bunu doğru atanmış indexler sağlıyor.

    Bu kadar.