FiveM Sunucularında Veritabanı Performansı Neden Kritik?
FiveM sunucu yönetiminde en çok karşılaşılan ve çözümü genellikle gözden kaçan sorunların başında veritabanı (SQL) kökenli gecikmeler gelir. Sunucudaki oyuncu sayısı arttıkça veya envanter/araç kayıtları çoğaldıkça yaşanan anlık donmalar (lag spike) ve veri kayıpları, doğrudan veritabanı mimarinizle ilgilidir.
2026 yılı itibarıyla eski mysql-async veya ghmattimysql gibi kütüphaneler geçerliliğini yitirmiştir. Güncel FiveM standartlarında maksimum performans ve düşük kaynak kullanımı için oxmysql kütüphanesi standart hale gelmiştir.
Bu rehberde, acemi geliştiricilerden deneyimli sunucu sahiplerine kadar herkesin uygulayabileceği sıfırdan oxmysql kurulumunu, doğru Lua sorgu kullanımını ve veritabanı optimizasyon adımlarını ele alıyoruz.
Adım 1: oxmysql Kurulumu ve Dosya Konumu
İlk olarak güncel oxmysql kütüphanesini indirin ve sunucunuzun dosya dizinine yerleştirin. Doğru klasör yapısı sunucunuzun sorunsuz çalışması için ilk kuraldır.
📁 Dosya Yolu: resources/[scripts]/oxmysql
oxmysql olduğundan, içerisinde fxmanifest.lua dosyasının doğrudan yer aldığından emin olun.Adım 2: server.cfg Bağlantı Ayarları
Veritabanı sunucunuzla (MariaDB / MySQL) FiveM sunucunuz arasındaki iletişimi kurmak için server.cfg dosyanıza doğru bağlantı dizesini (connection string) eklemelisiniz.
📁 Dosya Yolu: server.cfg
# mysql_connection_string Yapılandırması
set mysql_connection_string "mysql://root:güçlü_şifreniz@127.0.0.1/fivem_db?charset=utf8mb4"
# oxmysql Performans ve Hata Ayıklama Ayarları
set mysql_ui true
set mysql_debug false
set mysql_slow_query_warning 150
# Kaynak Başlatma Sıralaması (En üstlerde olmalı)
ensure oxmysql?charset=utf8mb4 parametresi; Türkçe karakterlerin (ğ, ş, ı, İ, ö, ç) veritabanında bozulmadan, doğru şekilde saklanması için kesinlikle şarttır.Adım 3: Lua Kodlarında Doğru oxmysql Kullanımı
Eski yöntemlerde kullanılan senkron (Sync) sorgular, veritabanı yanıt verene kadar tüm FiveM sunucusunu kilitler ve oyuncuların lag yaşamasına neden olur. 2026 standartlarında tüm sorgular Asenkron (Async) veya Export yöntemleriyle yapılmalıdır.
📁 Dosya Yolu: resources/[scripts]/ornek_script/server.lua
-- ❌ YANLIŞ KULLANIM (Sunucuyu kilitler ve lag yaptırır):
-- local result = MySQL.Sync.fetchAll('SELECT * FROM users WHERE identifier = @id', {['@id'] = citizenid})
-- ✅ DOĞRU VE OPTİMİZE KULLANIM (oxmysql Export Yöntemi):
exports.oxmysql:query('SELECT firstname, lastname, money FROM users WHERE citizenid = ?', { citizenid }, function(result)
if result and #result > 0 then
print(('Oyuncu Bulundu: %s %s | Para: %s'):format(result[1].firstname, result[1].lastname, result[1].money))
else
print('Oyuncu kaydı bulunamadı.')
end
end)
-- ✅ AWAIT KULLANIMI (Async Function İçerisinde):
CreateThread(function()
local count = exports.oxmysql:scalar_async('SELECT COUNT(*) FROM users', {})
print(('Toplam Kayıtlı Oyuncu Sayısı: %s'):format(count))
end)Adım 4: Veritabanı İndeksleme (Index) ile 10 Kat Hızlı Sorgular
Tablolarınızda onlarca gigabayt veri biriktiğinde, veritabanı her sorguda tüm tabloyu baştan sona tarar. Bunu önlemek için HeidiSQL veya phpMyAdmin üzerinden sık aranan sütunlara INDEX tanımlamanız gerekir.
Örnek SQL sorgusu ile indeks ekleme:
ALTER TABLE `users` ADD INDEX `idx_citizenid` (`citizenid`);
ALTER TABLE `player_vehicles` ADD INDEX `idx_plate` (`plate`);Bu basit indeksleme işlemi, saniyeler süren oyuncu yükleme sürelerini milisaniyelere düşürecektir.
Sıfırdan Optimize Bir Sunucu İster Misiniz?
Eğer veritabanı optimizasyonları, script entegrasyonları ve kod düzenlemeleriyle tek tek vakit kaybetmek istemiyorsanız; tüm bu teknik yapılandırmaların ve oxmysql entegrasyonlarının hazır olarak sunulduğu, yüksek performanslı DxAV1 - Roleplay Paketi altyapımızı hemen inceleyebilirsiniz.
Sıkça Sorulan Sorular (SSS)
1. oxmysql kullanırken sunucuda lag yaşanır mı?
Hayır. oxmysql Node.js ve C++ tabanlı çalıştığı için SQL sorgularını ana sunucu iş parçacığından (main thread) bağımsız yürütür. Doğru asenkron sorgular kullandığınız sürece sunucunuzda lag oluşmaz.
2. Eski scriptlerim mysql-async kullanıyor, oxmysql ile çalışır mı?
oxmysql, geriye dönük uyumluluk (backward compatibility) kütüphanesine sahiptir. mysql-async veya ghmattimysql çağıran eski scriptlerinizin çoğunu değiştirmeden çalıştırabilir. Ancak en yüksek performans için scriptlerinizi exports.oxmysql yapısına geçirmeniz önerilir.
3. "Connection refused" veya "Access denied" hatası alıyorum, ne yapmalıyım?
server.cfg içerisindeki veritabanı kullanıcı adınızın, şifrenizin ve port numaranızın doğru olduğundan emin olun. Ayrıca MariaDB/MySQL servisinin bilgisayarınızda veya VDS sunucunuzda aktif olarak çalıştığını kontrol edin.
