SQLite, hafifliği ve basitliği nedeniyle mobil, masaüstü ve küçük ölçekli web projelerinde en çok tercih edilen veritabanı motorlarından biridir. Ancak sık sık veri ekleme, güncelleme ve silme işlemleri yapıldığında veritabanı dosya boyutunun gereksiz yere büyüdüğünü görebilirsiniz. Peki, SQLite veritabanı boyutu nasıl küçültülür? İşte cevabı.
Neden Veritabanı Boyutu Küçülmez?
SQLite, verileri dosya içerisinde sayfa (page) adı verilen bloklar halinde saklar. Bir kayıt silindiğinde, bu alan dosyadan tamamen çıkarılmaz. Bunun yerine “boş” olarak işaretlenir ve ileride kullanılmak üzere saklanır. Yani dosya boyutu aynı kalır, fakat içeride boş alanlar oluşur.
Örneğin:
- Başlangıçta veritabanı: 2 MB
- Veri ekleme sonrası: 30 MB
- Veriler silinse bile: 30 MB
Bu durum, özellikle büyük veri işlemleri yapan projelerde disk kullanımını artırabilir.
Çözüm: VACUUM Komutu
SQLite, kullanılmayan boş blokları temizleyip veritabanı dosyasını yeniden düzenlemek için VACUUM komutunu sunar.
VACUUM;

Bu komutu çalıştırdığınızda:
- Gereksiz alanlar temizlenir
- Dosya boyutu küçülür
- Veritabanı performansı artar
Örneğin, 30 MB’lık bir dosya VACUUM sonrası 3 MB’a kadar düşebilir.
Alternatif Yöntemler
PRAGMA auto_vacuum = FULL;
Veritabanı oluşturulurken ayarlanabilir. Silinen alanlar otomatik küçülür ancak yazma performansını biraz düşürebilir.
PRAGMA optimize;
Sorgu performansını artırır fakat dosya boyutunu küçültmez.
C# ile SQLite VACUUM Kullanımı
Eğer SQLite veritabanını C# uygulamanızda kullanıyorsanız, VACUUM komutunu kolayca çalıştırabilirsiniz.
using System.Data.SQLite;
class Program
{
static void Main()
{
string connectionString = "Data Source=veritabani.db;Version=3;";
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
using (var command = new SQLiteCommand("VACUUM;", connection))
{
command.ExecuteNonQuery();
}
connection.Close();
}
Console.WriteLine("VACUUM işlemi tamamlandı. Veritabanı boyutu küçültüldü.");
}
}
Bu kod, VACUUM komutunu çalıştırarak veritabanındaki boş alanları temizler ve dosya boyutunu küçültür.
Sonuç
SQLite veritabanı kullanırken boyutun zamanla şişmesi normaldir. Ancak VACUUM komutu sayesinde gereksiz alanları temizleyip veritabanını küçültmek mümkündür. Düzenli aralıklarla bu işlemi yaparak hem disk alanından tasarruf edebilir hem de uygulamanızın performansını artırabilirsiniz.


Yorum Yap