Ringkasan :dalam tutorial ini, kami akan menjelaskan mengapa Anda perlu menggunakan VACUUM
SQLite perintah dan tunjukkan cara menggunakannya untuk mengoptimalkan file database.
Mengapa Anda membutuhkan VACUUM
SQLite perintah
Pertama, ketika Anda menjatuhkan objek database seperti tabel, tampilan, indeks, dan memicu atau menghapus data dari tabel, ukuran file database tetap tidak berubah. Karena SQLite hanya menandai objek yang dihapus sebagai gratis dan menyimpannya untuk penggunaan di masa mendatang. Akibatnya, ukuran file database selalu bertambah besar.
Kedua, saat Anda menyisipkan atau menghapus data dari tabel, indeks dan tabel menjadi terfragmentasi, terutama untuk database yang memiliki jumlah penyisipan, pembaruan, dan penghapusan yang tinggi.
Ketiga, operasi penyisipan, pembaruan, dan penghapusan membuat blok data yang tidak digunakan dalam halaman database individual. Ini mengurangi jumlah baris yang dapat disimpan dalam satu halaman. Oleh karena itu, ini meningkatkan jumlah halaman untuk menampung tabel. Karena itu, ini meningkatkan overhead penyimpanan untuk tabel, membutuhkan lebih banyak waktu untuk membaca/menulis, dan menurunkan kinerja cache.
SQLite menyediakan VACUUM
perintah untuk mengatasi ketiga masalah di atas.
SQLite pertama-tama menyalin data dalam file database ke database sementara. Operasi ini mendefrag objek database, mengabaikan ruang kosong, dan mengemas ulang halaman individual. Kemudian, SQLite menyalin konten file database sementara kembali ke file database asli. File database asli ditimpa.
Karena VACUUM
perintah membangun kembali database, Anda dapat menggunakannya untuk mengubah beberapa parameter konfigurasi khusus database seperti ukuran halaman, format halaman, dan penyandian default. Untuk melakukannya, Anda menetapkan nilai baru menggunakan pragma dan kemudian mengosongkan database.
The SQLite VACUUM
perintah
VACUUM
perintah tidak mengubah konten database kecuali nilai rowid. Jika Anda menggunakan INTEGER PRIMARY KEY
kolom, VACUUM
tidak mengubah nilai kolom tersebut. Namun, jika Anda menggunakan rowid yang tidak di-alias, VACUUM
perintah akan mengatur ulang nilai rowid. Selain mengubah nilai rowid, VACUUM
perintah juga membangun indeks dari awal.
Ini adalah praktik yang baik untuk melakukan VACUUM
perintah secara berkala, terutama saat Anda menghapus tabel atau indeks besar dari database.
Penting untuk dicatat bahwa VACCUM
perintah membutuhkan penyimpanan untuk menampung file asli dan juga salinannya. Juga, VACUUM
perintah membutuhkan akses eksklusif ke file database. Dengan kata lain, VACUUM
perintah tidak akan berhasil dijalankan jika database memiliki pernyataan SQL yang tertunda atau transaksi terbuka.
Saat ini, pada versi 3.9.2, Anda dapat menjalankan VACUUM
perintah pada main
database, bukan file database terlampir.
Meskipun SQLite mengaktifkan mode vakum otomatis yang memicu proses vakum secara otomatis dengan beberapa batasan. Ini adalah praktik yang baik untuk menjalankan VACUUM
perintah secara manual.
Cara menjalankan VACUUM
SQLite perintah
Berikut ini menunjukkan cara menjalankan VACUUM
perintah:
VACUUM;
Code language: SQL (Structured Query Language) (sql)
Pastikan tidak ada transaksi terbuka saat Anda menjalankan perintah.
Pernyataan berikut mengaktifkan mode vakum otomatis penuh:
PRAGMA auto_vacuum = FULL;
Code language: SQL (Structured Query Language) (sql)
Untuk mengaktifkan kekosongan tambahan, Anda menggunakan pernyataan berikut:
PRAGMA auto_vacuum = INCREMENTAL;
Code language: SQL (Structured Query Language) (sql)
Pernyataan berikut menonaktifkan mode vakum otomatis:
PRAGMA auto_vacuum = NONE;
Code language: SQL (Structured Query Language) (sql)
VACUUM
dengan INTO
klausa
Berikut sintaks VACUUM
dengan INTO
klausa:
VACUUM schema-name INTO filename;
Code language: SQL (Structured Query Language) (sql)
VACUUM
pernyataan dengan INTO
klausa menjaga file database asli tidak berubah dan membuat database baru dengan nama file yang ditentukan. Basis data baru akan berisi konten logis yang sama dengan basis data asli, tetapi sepenuhnya dikosongkan.
filename
di INTO
klausa dapat berupa ekspresi SQL apa pun yang dievaluasi menjadi string. Ini harus berupa jalur ke file yang tidak ada atau ke file kosong, atau VACUUM INTO
perintah akan menghasilkan kesalahan.
VACUUM
perintah ini sangat berguna untuk menghasilkan salinan cadangan dari database langsung. Ini aman untuk transaksi, dimana database yang dihasilkan adalah snapshot yang konsisten dari database asli. Namun, jika pemadaman yang tidak direncanakan atau pemadaman listrik mengganggu perintah, database yang dihasilkan mungkin rusak.
Pernyataan berikut menggunakan VACUUM INTO
perintah untuk membuat database baru dengan nama file chinook_backup.db
yang datanya disalin dari main
skema chinook
basis data:
VACUUM main INTO 'c:\sqlite\db\chinook_backup.db';
Code language: JavaScript (javascript)
Dalam tutorial ini, Anda telah mempelajari mengapa Anda perlu menggunakan VACUUM
SQLite perintah dan cara menjalankannya untuk mengoptimalkan database.