Ara

Sqlite Veritabanı Boyutu Nasıl Küçültülür? | Vacuum Komutu

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; 

SQLite Veritabanı Boyutu Nasıl Küçültülür? | VACUUM Komutu

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.

Author

Bilgisayar programcılığı bölümü mezunuyum. Web ve masaüstü uygulama geliştiricisiyim. C#,.Asp.Net Core, JQuery, Ajax, Entity Framework konularında bilgi sahibiyim. Bu sitenin kurucusuyum . Aynı zamanda şiir yazmayı seven birisiyim. 2023 yılında "Gökkuşağının Koyu Tonu" adlı ilk şiir kitabım yayınlandı. Yazmaya devam ediyorum.
Yorum Yap
Yorumlar (0)