SQLite - PRAGMA: Panduan Lengkap untuk Pemula
Hai teman-teman penggemar basis data! Hari ini, kita akan memulai perjalanan yang menarik ke dunia SQLite PRAGMAs. Jangan khawatir jika Anda belum pernah mendengar tentang PRAGMAs sebelumnya - pada akhir panduan ini, Anda akan menggunakan mereka seperti seorang ahli!
Apa Itu PRAGMA?
Sebelum kita mendalam, mari kita mulai dari dasar. Dalam SQLite, PRAGMA adalah perintah khusus yang memungkinkan kita untuk mengubah perilaku pustaka SQLite atau mengquery keadaan internalnya. PERTANYAAN seperti control panel bagi basis data SQLite Anda - mereka memungkinkan Anda untuk menyesuaikan pengaturan dan mendapatkan informasi tentang bagaimana basis data Anda berjalan.
Sekarang, mari kita jelajahi beberapa PRAGMA yang paling sering digunakan dalam SQLite.
PRAGMA auto_vacuum
PRAGMA auto_vacuum seperti memiliki seorang teman yang rajin membersihkan basis data Anda. Itu secara otomatis membersihkan dan mengatur berkas basis data saat Anda menghapus data.
PRAGMA auto_vacuum = FULL;
Perintah ini mengatur mode auto_vacuum ke FULL, yang berarti SQLite akan bekerja keras untuk menjaga berkas basis data Anda sem越小 mungkin.
PRAGMA cache_size
PRAGMA cache_size seperti memberikan basis data Anda otak yang lebih besar. Itu menentukan berapa banyak halaman yang disimpan SQLite dalam memori untuk akses yang lebih cepat.
PRAGMA cache_size = 10000;
Ini mengatur ukuran cache ke 10.000 halaman. Cache yang lebih banyak berarti kinerja yang lebih cepat, tetapi juga menggunakan lebih banyak memori.
PRAGMA case_sensitive_like
PRAGMA ini menentukan apakah operator LIKE sensitif terhadap huruf besar kecil atau tidak. Itu seperti mengajarkan basis data Anda untuk membaca dengan atau tanpa menggunakan kacamata.
PRAGMA case_sensitive_like = TRUE;
Dengan pengaturan ini, 'Apple' LIKE 'app%' akan false, sedangkan 'Apple' LIKE 'App%' akan true.
PRAGMA count_changes
PRAGMA count_changes seperti seorang penilai untuk operasi basis data Anda. Itu memberitahu Anda berapa banyak baris yang diubah oleh pernyataan INSERT, UPDATE, atau DELETE.
PRAGMA count_changes = ON;
Setelah mengatur ini, saat Anda menjalankan pernyataan UPDATE, misalnya, SQLite akan memberitahu Anda berapa banyak baris yang terpengaruh.
PRAGMA database_list
PRAGMA ini seperti direktori bagi basis data Anda. Itu mencantumkan semua basis data yang terlampir, termasuk basis data utama dan lainnya yang Anda hubungkan.
PRAGMA database_list;
Ini akan menunjukkan daftar semua basis data yang terlampir, path berkasnya, dan namanya secara internal.
PRAGMA encoding
PRAGMA encoding menyetel atau mengquery pengejaan teks yang digunakan oleh basis data. Itu seperti memilih bahasa mana yang akan digunakan basis data Anda.
PRAGMA encoding = "UTF-8";
Ini menyetel pengejaan basis data ke UTF-8, yang adalah pilihan umum untuk mendukung beberapa bahasa.
PRAGMA freelist_count
PRAGMA ini memberitahu Anda berapa banyak halaman yang belum digunakan dalam berkas basis data. Itu seperti memeriksa berapa banyak ruang kosong Anda memiliki di unit penyimpanan.
PRAGMA freelist_count;
Ini akan mengembalikan jumlah halaman yang belum digunakan dalam berkas basis data.
PRAGMA index_info dan PRAGMA index_list
PRAGMA ini seperti memiliki perpustakaawan bagi indeks basis data Anda. Mereka menyediakan informasi tentang struktur dan isi indeks Anda.
PRAGMA index_list(table_name);
PRAGMA index_info(index_name);
Perintah pertama mencantumkan semua indeks pada tabel, sedangkan yang kedua memberikan informasi detil tentang indeks tertentu.
PRAGMA journal_mode
PRAGMA ini mengontrol bagaimana SQLite mencatat transaksi. Itu seperti memilih antara jenis sistem cadangan yang berbeda.
PRAGMA journal_mode = WAL;
Ini mengatur mode jurnal ke Write-Ahead Logging (WAL), yang dapat meningkatkan kinerja dalam banyak kasus.
PRAGMA max_page_count dan PRAGMA page_count
PRAGMA ini berhubungan dengan jumlah halaman dalam berkas basis data Anda. Itu seperti menyetel dan memeriksa jumlah maksimum halaman dalam buku.
PRAGMA max_page_count = 1000000;
PRAGMA page_count;
Perintah pertama menyetel jumlah maksimum halaman, sedangkan yang kedua memberitahu Anda berapa banyak halaman yang saat ini digunakan.
PRAGMA page_size
PRAGMA ini menyetel atau mengquery ukuran halaman basis data. Itu seperti menentukan seberapa besar setiap halaman dalam buku Anda harusnya.
PRAGMA page_size = 4096;
Ini menyetel ukuran halaman ke 4096 byte, yang adalah pilihan umum.
PRAGMA parser_trace dan PRAGMA sql_trace
PRAGMA ini seperti mengaktifkan mode debug bagi basis data Anda. Mereka menyediakan informasi detil tentang bagaimana SQLite memproses perintah Anda.
PRAGMA parser_trace = ON;
PRAGMA sql_trace = ON;
Ini dapat sangat membantu saat Anda mencoba memahami mengapa suatu perintah khusus tidak bekerja seperti yang diharapkan.
PRAGMA recursive_triggers
PRAGMA ini mengontrol apakah trigger dapat secara rekursif memicu trigger lain. Itu seperti memungkinkan efek dominos dalam basis data Anda.
PRAGMA recursive_triggers = ON;
Dengan pengaturan ini, trigger dapat menyebabkan trigger lain terbakar, yang dapat menyebabkan trigger lain terbakar, dan seterusnya.
PRAGMA schema_version dan PRAGMA user_version
PRAGMA ini memungkinkan Anda menyetel dan mengquery nomor versi untuk skema basis data Anda. Itu seperti tag versi bagi struktur basis data Anda.
PRAGMA schema_version;
PRAGMA user_version = 1;
Perintah pertama mengquery versi skema saat ini, sedangkan yang kedua menyetel versi pengguna ke 1.
PRAGMA secure_delete
PRAGMA ini mengontrol seberapa teliti SQLite menimpa data yang dihapus. Itu seperti memilih antara menghancurkan dokumen Anda atau hanya membuangnya ke tong sampah.
PRAGMA secure_delete = ON;
Dengan pengaturan ini, SQLite akan menimpa data yang dihapus dengan nol, membuatnya sulit untuk dipulihkan.
PRAGMA synchronous
PRAGMA ini mengontrol seberapa teliti SQLite menulis data ke disk. Itu adalah perbandingan antara keselamatan dan kecepatan.
PRAGMA synchronous = NORMAL;
Ini menyetel tingkat keselamatan moderat, menyeimbangkan antara keselamatan penuh (FULL) dan kecepatan maksimal (OFF).
PRAGMA temp_store dan PRAGMA temp_store_directory
PRAGMA ini mengontrol di mana dan bagaimana SQLite menyimpan data temporer. Itu seperti memilih tempat untuk menyimpan kertas kerja Anda saat bekerja.
PRAGMA temp_store = MEMORY;
PRAGMA temp_store_directory = '/path/to/directory';
Perintah pertama mengatakan kepada SQLite untuk menyimpan data temporer di memori, sedangkan yang kedua menentukan direktori untuk berkas temporer.
PRAGMA writable_schema
PRAGMA ini mengontrol apakah Anda dapat mengubah tabel sqlite_master secara langsung. Itu seperti memiliki kunci utama bagi struktur basis data Anda.
PRAGMA writable_schema = ON;
Bersihkan hati Anda saat menggunakan ini! Itu memungkinkan Anda untuk mengubah struktur dasar basis data Anda, yang dapat berbahaya jika tidak dilakukan dengan benar.
Berikut adalah tabel yang menggabungkan semua PRAGMA yang telah kita diskusikan:
PRAGMA | Deskripsi |
---|---|
auto_vacuum | Mengontrol peng vacuum otomatis basis data |
cache_size | Menyetel jumlah halaman yang disimpan dalam memori |
case_sensitive_like | Mengontrol sensitivitas operator LIKE |
count_changes | Melaporkan jumlah baris yang diubah oleh operasi |
database_list | Mencantumkan semua basis data yang terlampir |
encoding | Menyetel atau mengquery pengejaan teks basis data |
freelist_count | Melaporkan jumlah halaman yang belum digunakan dalam basis data |
index_info | Memberikan informasi tentang indeks tertentu |
index_list | Mencantumkan semua indeks pada tabel |
journal_mode | Mengontrol bagaimana transaksi dicatat |
max_page_count | Menyetel jumlah maksimum halaman dalam basis data |
page_count | Melaporkan jumlah halaman saat ini dalam basis data |
page_size | Menyetel atau mengquery ukuran halaman basis data |
parser_trace | Mengaktifkan informasi parsing detil |
recursive_triggers | Memungkinkan trigger untuk secara rekursif memicu trigger lain |
schema_version | Menyetel atau mengquery nomor versi skema |
secure_delete | Mengontrol seberapa teliti data yang dihapus ditimpa |
sql_trace | Mengaktifkan informasi eksekusi SQL detil |
synchronous | Mengontrol seberapa teliti data ditulis ke disk |
temp_store | Mengontrol di mana data temporer disimpan |
temp_store_directory | Menentukan direktori untuk berkas temporer |
user_version | Menyetel atau mengquery nomor versi pengguna |
writable_schema | Memungkinkan modifikasi langsung tabel sqlite_master |
Dan begitu saja! Anda sekarang siap untuk mulai meng eksperimen dengan PRAGMA SQLite. Ingat, tools ini sangat kuat dan dapat mempengaruhi perilaku serta kinerja basis data Anda, jadi selalu tes secara mendalam sebelum menggunakan mereka dalam lingkungan produksi. Selamat coding!
Credits: Image by storyset