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!

SQLite - PRAGMA

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