SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

VAKUM SQLite

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MIN SQLite

  2. TypeError yang tidak tertangkap tidak dapat memanggil metode 'opendatabase' dari plugin SQLite yang tidak ditentukan dengan cordova 3.5

  3. Bagaimana cara memulai SQLCipher untuk android?

  4. Android:Sisipan Massal, saat InsertHelper tidak digunakan lagi

  5. SQLiteDiskIOException:kode kesalahan 10:kesalahan disk I/O muncul kembali di ICS dan Samsung Nexus di DROP TABLE