FiveM Sunucularında Veri Ön Bellekleme (Caching) Nedir?
Modern bir FiveM sunucusunda, oyuncu sayısı arttıkça veritabanı (SQL) sorguları sunucunun en büyük dar boğazı haline gelir. Sürekli olarak oxmysql üzerinden veri çekmek yerine, sık kullanılan verileri (örneğin; oyuncu envanter bilgileri, garaj listeleri veya market stokları) sunucu belleğinde (RAM) tutmak, "Data Caching" olarak adlandırılır. Bu yöntem, sunucunuzun işlem yükünü %30'a kadar azaltabilir.
1. Adım: Basit Bir Cache Sistemi Kurgulayın
Verileri veritabanından her seferinde çekmek yerine bir table içerisinde saklayın. İşte temel bir örnek:
-- Server tarafında basit bir önbellek yapısı
local vehicleCache = {}
function GetVehicleData(plate)
if vehicleCache[plate] then
return vehicleCache[plate] -- Veri bellekte varsa doğrudan döndür
else
local result = MySQL.query.await('SELECT * FROM owned_vehicles WHERE plate = ?', {plate})
if result[1] then
vehicleCache[plate] = result[1] -- Veriyi belleğe kaydet
return result[1]
end
end
end2. Adım: Bellek Yönetimi ve Temizlik (Garbage Collection)
Önbellek kullanırken dikkat edilmesi gereken en kritik nokta, verilerin bayatlamamasıdır. Oyuncu sunucudan çıktığında veya bir araç satıldığında, bellekteki veriyi temizlemeniz gerekir.
AddEventHandler('playerDropped', function()
local src = source
-- Oyuncu ayrıldığında ilgili önbellek verilerini temizle
playerCache[src] = nil
end)server.cfg dosyanızda set sv_maxClients değeriniz 128 ve üzeri ise, mutlaka bu tarz bir önbellekleme mekanizması kullanmalısınız. Aksi takdirde veritabanı bağlantılarınız zaman aşımına uğrayabilir.3. Profesyonel Çözümlere Geçiş
Manuel önbellekleme süreçleri karmaşıklaştığında hatalara davetiye çıkarabilir. Eğer bu optimizasyon süreçleriyle tek tek uğraşmak yerine, halihazırda optimize edilmiş ve veri yönetimi profesyonelce yapılandırılmış bir altyapı arıyorsanız, DxAV1 - Roleplay Paketi tam size göre. Paketlerimiz, veritabanı sorgularını minimize eden hazır önbellek katmanları ile gelir.
Sıkça Sorulan Sorular (SSS)
- Soru: Önbellekleme sunucumun RAM kullanımını çok artırır mı?
Cevap: Doğru yönetilen bir önbellek sistemi, veritabanı sorgularının yarattığı CPU yükünü düşürür. RAM kullanımı bir miktar artabilir ancak bu, sunucu kararlılığı için kabul edilebilir bir takastır.
- Soru: Tüm verileri önbelleğe almalı mıyım?
Cevap: Hayır. Sadece sık erişilen (okunan) verileri önbelleğe alın. Nadir güncellenen veriler için veritabanı sorgusu yeterlidir.
- Soru: Önbellek verisi sunucu çökerse kaybolur mu?
Cevap: Evet, RAM verileri geçicidir. Bu yüzden her güncellemede veritabanına yazmayı (persistence) ihmal etmeyin.
