SQLite - PRAGMA: Panduan Lengkap untuk Pemula
Hai sana, para penggemar basis data yang bersemangat! 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 kontrol panel untuk 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 umum digunakan dalam SQLite.
PRAGMA auto_vacuum
PRAGMA auto_vacuum seperti memiliki teman yang rajin membersihkan untuk 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 menjadi sekecil mungkin.
PRAGMA cache_size
PRAGMA cache_size seperti memberikan basis data Anda otak yang lebih besar. Itu menentukan berapa banyak halaman yang disimpan SQLite di memori untuk akses yang lebih cepat.
PRAGMA cache_size = 10000;
Ini mengatur ukuran cache ke 10.000 halaman. Cache yang lebih besar berarti performa yang lebih cepat, tetapi juga menggunakan lebih banyak memori.
PRAGMA case_sensitive_like
PRAGMA ini menentukan apakah operator LIKE case-sensitive atau tidak. Itu seperti mengajarkan basis data Anda untuk membaca dengan atau tanpa kacamata.
PRAGMA case_sensitive_like = TRUE;
Dengan pengaturan ini, 'Apple' LIKE 'app%' akan false, sedangkan 'Apple' LIKE 'App%' akan benar.
PRAGMA count_changes
PRAGMA count_changes seperti penghitung skor 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 untuk basis data Anda. Itu mencantumkan semua basis data yang terpasang, termasuk basis data utama dan yang lainnya yang Anda hubungkan.
PRAGMA database_list;
Ini akan menampilkan daftar semua basis data yang terpasang, jalur berkas mereka, dan nama internal mereka.
PRAGMA encoding
PRAGMA encoding menyetel atau query pengkodean teks yang digunakan oleh basis data. Itu seperti memilih bahasa mana yang akan digunakan basis data Anda.
PRAGMA encoding = "UTF-8";
Ini menyetel pengkodean basis data ke UTF-8, yang adalah pilihan umum untuk mendukung banyak 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 punya 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 untuk 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 performa 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 query ukuran halaman basis data. Itu seperti memutuskan seberapa besar setiap halaman dalam buku Anda harus menjadi.
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 untuk 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 query tertentu Anda tidak bekerja seperti yang diharapkan.
PRAGMA recursive_triggers
PRAGMA ini mengontrol apakah trigger dapat secara rekursif memicu trigger lain. Itu seperti memungkinkan efek dominó 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 query nomor versi untuk skema basis data Anda. Itu seperti tag versi untuk struktur basis data Anda.
PRAGMA schema_version;
PRAGMA user_version = 1;
Perintah pertama query versi skema saat ini, sedangkan yang kedua menyetel versi pengguna ke 1.
PRAGMA secure_delete
PRAGMA ini mengontrol betapa 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 betapa hati-hati SQLite menulis data ke disk. Itu adalah kesepakatan antara keselamatan dan kecepatan.
PRAGMA synchronous = NORMAL;
Ini menyetel level 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 di mana untuk menempatkan kertas buangannya saat Anda 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 secara langsung mengubah tabel sqlite_master. Itu seperti memiliki kunci master untuk struktur basis data Anda.
PRAGMA writable_schema = ON;
Berhati-hati dengan 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 | Mengendalikan pembersihan otomatis basis data |
cache_size | Menyetel jumlah halaman yang disimpan di memori |
case_sensitive_like | Mengendalikan case sensitivity operator LIKE |
count_changes | Melaporkan jumlah baris yang diubah oleh operasi |
database_list | Mencantumkan basis data yang terpasang |
encoding | Menyetel atau query pengkodean 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 | Mengendalikan 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 query ukuran halaman basis data |
parser_trace | Mengaktifkan informasi parsing detil |
recursive_triggers | Memungkinkan trigger untuk secara rekursif memicu trigger lain |
schema_version | Menyetel atau query nomor versi skema |
secure_delete | Mengendalikan betapa teliti penghapusan data |
sql_trace | Mengaktifkan informasi eksekusi SQL detil |
synchronous | Mengendalikan betapa hati-hati data ditulis ke disk |
temp_store | Mengendalikan di mana data temporer disimpan |
temp_store_directory | Menentukan direktori untuk berkas temporer |
user_version | Menyetel atau query nomor versi pengguna |
Dan begitu saja! Anda sekarang siap untuk mulai meng eksperimen dengan PRAGMA SQLite. Ingat, tools ini sangat kuat dan dapat mempengaruhi perilaku dan performa basis data Anda, jadi selalu tes secara menyeluruh sebelum menggunakan mereka dalam lingkungan produksi. Selamat coding!
Credits: Image by storyset