SQLite - VACUUM: Menyusun Database Anda

Hai sana, para ahli basis data masa depan! Hari ini, kita akan melihat aspek menarik di SQLite yang berkaitan dengan menjaga database Anda rapi dan bersih. Itu seperti memberikan rumah digital Anda pembersihan musim semi! Ayo jelajahi dunia VACUUM di SQLite.

SQLite - VACUUM

Apa Itu VACUUM?

Sebelum kita masuk ke hal-hal kecil, mari kita pahami apa itu VACUUM. Bayangkan Anda memiliki rak buku (database Anda) yang penuh dengan buku (data Anda). Pada saat Anda menambahkan dan menghapus buku, Anda mungkin akan mendapatkan ruang kosong atau buku yang keluar dari urutan. VACUUM seperti mengatur ulang rak buku Anda, menghapus ruang kosong, dan membuat segalanya lebih efisien.

Dalam istilah SQLite, VACUUM membantu optimalkan database Anda dengan:

  1. Mengambil kembali ruang yang belum digunakan
  2. Mendefragmen file database
  3. Mungkin meningkatkan performa kueri

Sekarang, mari kita jelajahi dua cara utama untuk melakukan optimisasi ini: VACUUM Manual dan Auto-VACUUM.

VACUUM Manual

Dasar-Dasar

VACUUM Manual seperti memutuskan untuk membersihkan kamar Anda saat Anda merasa itu menjadi terlalu kotor. Anda harus memulainya sendiri, tetapi itu memberikan Anda kontrol atas saat pembersihan terjadi.

Ini adalah cara Anda dapat melakukan VACUUM manual:

VACUUM;

Ya, itu saja! Hanya satu perintah, dan SQLite akan mulai menyusun database Anda.

Kapan Menggunakan VACUUM Manual

Anda mungkin ingin menggunakan VACUUM manual dalam situasi seperti:

  1. Setelah menghapus sejumlah besar data
  2. Setelah membuat perubahan signifikan pada struktur database Anda
  3. Ketika Anda melihat ukuran file database Anda jauh lebih besar dari data yang sebenarnya

Contoh Skenario

Ayo jelajahi contoh praktis untuk melihat VACUUM manual dalam aksi.

-- Buat tabel contoh
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT,
author TEXT
);

-- Sisipkan beberapa data
INSERT INTO books (title, author) VALUES
('1984', 'George Orwell'),
('To Kill a Mockingbird', 'Harper Lee'),
('Pride and Prejudice', 'Jane Austen');

-- Periksa ukuran database ( Anda akan melakukan ini di luar SQLite, di sistem file Anda )
-- Misalnya, itu adalah 20KB

-- Sekarang, hapus beberapa data
DELETE FROM books WHERE id = 2;

-- Ukuran file mungkin masih 20KB

-- mari VACUUM
VACUUM;

-- Sekarang jika Anda periksa ukuran file lagi, itu seharusnya lebih kecil!

Dalam contoh ini, meskipun setelah menghapus data, ukuran file tidak berubah segera. Tetapi setelah menjalankan VACUUM, SQLite mengatur ulang database, mungkin mengurangi ukurannya.

Auto-VACUUM

Mengerti Auto-VACUUM

Auto-VACUUM seperti memiliki robot kecil yang secara otomatis membersihkan kamar Anda sedikit demi sedikit setiap kali Anda membuat kotoran. Itu adalah fitur yang, saat diaktifkan, secara otomatis mengambil kembali ruang saat Anda menghapus data.

Mengaktifkan Auto-VACUUM

Untuk mengaktifkan Auto-VACUUM, Anda perlu mengatur itu saat Anda pertama kali membuat database Anda. Ini adalah cara:

PRAGMA auto_vacuum = FULL;

Ada tiga mode untuk auto_vacuum:

Mode Value Description
NONE 0 Auto-vacuum dinonaktifkan (default)
FULL 1 Vacuum secara otomatis setelah setiap transaksi
INCREMENTAL 2 Vacuum secara increment, menyebar pekerjaan di seluruh transaksi

Contoh Auto-VACUUM dalam Aksi

Ayo lihat bagaimana Auto-VACUUM bekerja dengan contoh:

-- Aktifkan Auto-VACUUM (buat ini sebelum membuat tabel apapun)
PRAGMA auto_vacuum = FULL;

-- Buat tabel books kami
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT,
author TEXT
);

-- Sisipkan beberapa data
INSERT INTO books (title, author) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald'),
('Moby-Dick', 'Herman Melville'),
('War and Peace', 'Leo Tolstoy');

-- Hapus rekord
DELETE FROM books WHERE id = 2;

-- Dengan Auto-VACUUM, ruang secara otomatis direklaim!
-- Tidak perlu menjalankan VACUUM secara manual

Dalam kasus ini, saat Anda menghapus rekord, Auto-VACUUM secara otomatis menyusun, mengambil kembali ruang tanpa Anda melakukan tindakan ekstra.

Memilih Antara VACUUM Manual dan Auto-VACUUM

Jadi, mana yang Anda pilih? Itu tergantung pada kebutuhan Anda:

  1. VACUUM Manual bagus jika:
  • Anda ingin memiliki kontrol penuh atas saat optimisasi terjadi
  • Database Anda tidak sering berubah
  • Anda baik-baik saja dengan ukuran file yang mungkin lebih besar antara VACUUM
  1. Auto-VACUUM ideal jika:
  • Anda ingin menggunakan pendekatan "set it and forget it"
  • Database Anda sering berubah
  • Menyimpan ukuran file sekecil mungkin selalu penting

Ingat, itu seperti memilih antara membersihkan kamar Anda sendiri saat Anda merasa itu diperlukan (VACUUM Manual) atau memiliki vacuum robot yang berjalan sedikit demi sedikit setiap hari (Auto-VACUUM).

Kesimpulan

Dan begitulah, teman-teman! Kita telah menjelajahi dunia VACUUM di SQLite, dari pembersihan manual hingga pembersihan otomatis. Apakah Anda memilih untuk menjadi master kebersihan database Anda atau membiarkan SQLite menangani itu secara otomatis, Anda sekarang memiliki pengetahuan untuk menjaga database Anda berjalan mulus dan efisien.

Ingat, database yang rapi adalah database yang bahagia! Jadi maju dan VACUUM dengan kepercayaan. Siapa sangka bahwa pemeliharaan basis data bisa menjadi... enggak, saya katakan "menyenangkan"? Selamat coding, para maestro data masa depan!

Credits: Image by storyset