×

دستور PRAGMA در SQLite

فصل بیست و دوم :

دستور PRAGMA در SQLite

از این دستور برای کنترل کردن متغیر های محیطی (environmental variables) داخل محیط SQLite استفاده میشود.
برای مشاهده یک مقدار PRAGMA کافیست بروش ذیل عمل کنیم :
PRAGMA pragma_name;
همچنین جهت تنظیم مقدار یک PRAGMA نیز از دستور ذیل استفاده میشود :
PRAGMA pragma_name = value;

auto_vacuum Pragma

برای ست کردن و مشاهده وضعیت auto-vacuum دیتابیس بکار می رود (بعدا در موردش توضیح میدیم)
PRAGMA [database.]auto_vacuum;
PRAGMA [database.]auto_vacuum = mode;

که مقدار mode می تواند یکی از مقادیر ذیل باشد.

توضیح Pragma Value
جهت غیر فعالسازی امکان auto-vacuum دیتابیس که تنظیم پیش فرض می باشد. و بدین معناست که که فایل دیتابیس هیچوقت بطور اتوماتیک shrink نمی شود ، مگراینکه بصورت دستی و با دستور VACUUM خودمان اینکار را انجام دهیم. 0 or NONE
Auto-vacuum فعال میشود و کاملا اتوماتیک دیتابیس را پس از حذف یکسری رکورد ها از جداول و یا حذف یکسری از آبجکت ها shrink میکند. 1 or FULL
Auto-vacuum فعال است ولیکن باید بصورت دستی انجام شود. 2 or INCREMENTAL

cache_size Pragma

جهت مشاهده و یا تنظیم موقتی مقدار cache (بخوانید کش) بکار میرود
PRAGMA [database.]cache_size;
PRAGMA [database.]cache_size = pages;

که مقدار pages تعداد pageی را مشخص میکند که بایستی در حافظه رم cache شود. (هر فایل دیتابیس از یک یا چند page تشکیل شده است)
مکانیزم داخلی page cache دارای مقداری برابر با 2000 است و مینیمم ان نیز 10 page می باشد.

case_sensitive_like Pragma

جهت کنترل case-sensitivity (حساسیت به حروف بزرگ و کوچک) عبارت LIKE بکار میرود . همانطور که میدانیم عبارت LIKE به حروف بزرگ و کوچک حساس نیست(فصول قبل) بنابراین مقدار پیشفرض این pragma برابر با false می باشد که با این دستور می توان انرا true کرد و پس از ان عبارت LIKE به حوف کوچک و بزرگ حساس باشد.
PRAGMA case_sensitive_like = [true|false];
نکته : دستوری برای مشاهده مقدار تنظیم شده این pragma وجود ندارد (برعکس قبلی ها که یشود مقدار انها را مشاهده کرد)

count_changes Pragma

هنگامی که یکی از دستورات INSERT، UPDATE و یا DELETE را اجرام میکینیم SQLite به ما نمی گوید که در نتیجه این دستورات چه تعداد رکورد تاثیر پذیرفته اند چون مقدار اینpragma بصورت پیشفرض False است . حال اگر انرا به true تنظیم کنیم در نتیجه اجرای دستورات ذکر شده بالا یک جدول تک ستونی و تک رکوردی باز میگردد که تعداد رکورد تاثیر پذیرفته از اجرا دستورت مذکور را بصورت یک عدد به ما اعلام میدارد.
PRAGMA count_changes;
PRAGMA count_changes = [true|false];

database_list Pragma

جهت لیست کردن تمامی دیتابیس های attach شده کنونی بکار میرود
PRAGMA database_list;
این pragma جدولی سه ستونی را باز میگرداند و بازای هر دیتابیس attach شده یک رکورد را بر میگرداند . که در ستونها به ترتیب : شماره توالی ، نام دیتابیس و فایل آنرا نشان میدهد.

encoding Pragma

تنظیم این pragma کنتل میکند که رشته ها چگونه encode و در فایل دیتابیس ذخیره شوند .
PRAGMA encoding;
PRAGMA encoding = format;

که مقدار format می تواند یکی از مقادیر UTF-8, UTF-16le, or UTF-16be باشد.

freelist_count Pragma

این pragma یک مقدار عدد صحیحی را باز میگرداند که معرف تعداد page های دیتابیس است که خالی بوده و در دسترس قراردارند
PRAGMA [database.]freelist_count;

index_info Pragma

اطلاعاتی را درباره ایندکس دیتابیس باز میگرداند
PRAGMA [database.]index_info( index_name );
که نتیجه اجرای آن جدولیست که شامل یک ردیف بازای هر ستون موجود در ایندکس های جداول می باشد.

index_list Pragma

این pragma تمامی ایندکس هایی که برای یک جدول ساخته شده اند را باز میگرداند
PRAGMA [database.]index_list( table_name );
تعداد pragma ها خیلی بیشتر از موارد ذکر شده بالا میباشند که برای مشاهده مشخصات و جزییات انها می توانید به سایت sqlite مراجعه کنید.


مفاهیم و موضوعات این فصل عبارتند از :

  • دستور PRAGMA در SQLite

vatantop
نظرات و سوالات درج سوال/ نظر