Logo’da fatura kesmek, stok bakmak veya rapor almak birden yavaşladıysa ilk akla gelen çoğu zaman “sunucu yetmiyor, RAM alalım” olur. Sahada baktığımızda ise işin aslı sıkça başka çıkıyor: SQL Server kurulurken varsayılan ayarlarla bırakılmış. Bu ayarlar Logo gibi gün boyu yoğun çalışan bir programa göre değil, genel kullanım için gelmiş. İyi haber şu: çoğu zaman yeni donanım almadan, birkaç doğru ayarla fark edilir rahatlama sağlanabiliyor. Aşağıda en çok işe yarayan beş noktayı sade dille anlatıyoruz.
Önce “şu an ne yazıyor?” diye bakın
Göz kararı değer yazmayın. SQL Management Studio’da aşağıdaki sorguyu çalıştırıp mevcut durumu bir ekran görüntüsüyle saklayın; sonra değişiklik yapın:
SELECT name, value_in_use, description
FROM sys.configurations
WHERE name IN (
N'max server memory (MB)',
N'cost threshold for parallelism',
N'max degree of parallelism',
N'optimize for ad hoc workloads'
)
ORDER BY name;
-- Geçici çalışma alanı (TempDB) dosyaları
SELECT name, type_desc, size * 8 / 1024 AS size_mb,
growth, is_percent_growth, physical_name
FROM tempdb.sys.database_files
ORDER BY type_desc, name;Aşağıdaki rakamlar Logo kullanan birçok firmada iyi bir başlangıçtır. Sunucunuzun RAM’i ve işlemci sayısı farklıysa değerleri ona göre biraz oynatmak gerekir; emin değilseniz birlikte bakmak en güvenlisi.
| Ne? | Kurulumda çoğu zaman | Logo için pratik hedef |
|---|---|---|
| SQL’in kullanacağı bellek üst sınırı | Sınırsız (neredeyse tüm RAM) | Windows + Logo’ya 4–8 GB bırakıp kalanı SQL’e verin |
| Sorguların “çok çekirdeğe bölünme” eşiği | 5 (çok düşük) | 30–50 |
| Tek seferlik sorguların belleği şişirmesi | Kapalı | Açık (1) |
| Geçici alan (TempDB) dosyaları | 1 küçük dosya | Birkaç eşit dosya (en fazla 8), MB ile büyüme |
| Index (fihrist) bakımı | Hepsi sıfırdan / eski yöntem | Hafif dağınıksa düzenle, çok bozulmuşsa yeniden kur + istatistik |
1. Bellek tavanı: SQL her şeyi yutmasın
SQL Server, kurulunca “elimdeki tüm belleği kullanırım” diye gelir. Aynı makinede Logo, Windows ve antivirüs de çalışıyorsa sonuç tanıdıktır: ekranlar kilitlenir, “RAM bitti” sanırsınız, aslında SQL diğerlerine nefes bırakmamıştır.
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 16384; -- örn. 16 GB
RECONFIGURE;2. Küçük işler için tüm işlemciyi bölmeyin
SQL Server, bir işi “yeterince ağır” bulursa birden fazla işlemci çekirdeğine böler. Kurulumdaki eşik değeri çoğu Logo sunucusunda çok düşük kalır. Sonuç: fatura kaydı gibi ufak işler bile gereksiz yere parçalanır, çekirdekler birbirini bekler, işlemci meşgul görünür ama Logo hızlanmaz.
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;3. Tek kullanımlık sorgular belleği şişirmesin
Logo’da filtre değiştirdikçe arka planda sürekli yeni, bir kerelik sorgular oluşur. Varsayılan ayarda SQL Server bunların çalışma planlarını da bellekte tutmaya çalışır. Zamanla “hafıza dolu ama işe yaramıyor” hali oluşur; sık kullanılan gerçek işlere yer kalmaz.
EXEC sp_configure 'optimize for ad hoc workloads', 1;
RECONFIGURE;4. Geçici çalışma alanı (TempDB) dar gelmesin
Logo rapor alırken, sıralama yaparken veya geçici listeler üretirken SQL’in “tezgâh”ı TempDB’dir. Kurulumda çoğu zaman tek ve çok küçük bir dosya bırakılır. Dosya sürekli büyümeye çalışır; disk meşgul olur, raporlar takılır. İşlemci çekirdeği çok, dosya tek ise de aynı tezgâhta kuyruk oluşur.
- Birden fazla veri dosyası kullanın; pratikte en fazla 8 yeter.
- Tüm dosyaların başlangıç boyutu aynı olsun (ör. 512 MB veya 1 GB).
- Büyümeyi yüzde ile değil sabit MB ile yapın (ör. 64 veya 128 MB).
- Mümkünse TempDB’yi sistem diskiyle paylaştırmayın; ayrı, hızlı bir diske koyun.
Dosyaları Management Studio’dan ekledikten sonra boyutları eşitleyin (isimler sunucuya göre değişebilir):
ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'tempdev', SIZE = 512MB, FILEGROWTH = 64MB);
ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'temp2', SIZE = 512MB, FILEGROWTH = 64MB);
ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'temp3', SIZE = 512MB, FILEGROWTH = 64MB);
ALTER DATABASE [tempdb] MODIFY FILE (NAME = N'temp4', SIZE = 512MB, FILEGROWTH = 64MB);
-- Eklediğiniz her veri dosyası için aynı SIZE / FILEGROWTH5. Index bakımı: her gece her şeyi sıfırlamayın
Index’leri bir kitabın fihristi gibi düşünün. Zamanla dağılır; arama yavaşlar. Eski alışkanlık “her gece tüm fihristi baştan yaz” idi. Bu yöntem tabloları kilitler, Logo’yu mesai içinde durdurabilir ve aslında az bozulmuş index’leri de gereksiz yere yeniden kurar.
Hangi tabloda ne kadar dağınıklık var görmek için (veritabanı adını kendinizinkiyle değiştirin):
USE [LogoDB]; -- kendi veritabanı adınız
GO
SELECT
OBJECT_SCHEMA_NAME(ips.object_id) AS schema_name,
OBJECT_NAME(ips.object_id) AS table_name,
i.name AS index_name,
ips.avg_fragmentation_in_percent,
ips.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, N'LIMITED') AS ips
INNER JOIN sys.indexes AS i
ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.database_id = DB_ID()
AND ips.page_count > 1000
AND ips.avg_fragmentation_in_percent > 5
AND i.name IS NOT NULL
ORDER BY ips.avg_fragmentation_in_percent DESC;Listeye göre karar verin; çok küçük index’leri abartılı yeniden kurmayın. Bu işi elle her gece yapmak yerine zamanlanmış bir bakım işi kurmak daha güvenlidir — kurulumunu sizin için de yapabiliriz.
Kısaca
Yeni sunucu almadan önce bu beş noktaya bakmak; Logo’nun açılışını, kayıt hızını ve rapor sürelerini birçok firmada belirgin şekilde iyileştirir. Kendi sunucunuzda hangi değerlerin doğru olduğunu birlikte netleştirmek isterseniz yazının sonundaki formdan bize ulaşmanız yeterli.