SQLite 프라그마
SQLite의 PRAGMA 명령은 SQLite 환경 내의 다양한 환경 변수 및 상태 플래그를 제어하는 데 사용할 수 있는 특수 명령입니다. PRAGMA 값은 필요에 따라 읽고 설정할 수 있습니다.
구문
현재 PRAGMA 값을 쿼리하려면 pragma의 이름만 제공하면 됩니다:
PRAGMA에 대한 새 값을 설정하려면 구문은 다음과 같습니다.
모드를 설정합니다. 이름 또는 이에 상응하는 정수이지만 반환된 값은 항상 정수입니다.
auto_vacuum Pragma
auto_vacuum Pragma 자동 진공 모드를 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA [database.]auto_vacuum = mode;
그 중 mode can은 다음 중 하나입니다.
Pragma 값 | 설명 | ||||||||
---|---|---|---|---|---|---|---|---|---|
0 또는 없음 | 자동 진공을 비활성화합니다. 이는 기본 모드로, VACUUM 명령을 수동으로 사용하지 않는 한 데이터베이스 파일 크기가 줄어들지 않음을 의미합니다. | ||||||||
1 또는 FULL | 완전 자동인 자동 진공을 활성화합니다. 이 모드에서는 데이터베이스에서 데이터가 제거될 때 데이터베이스 파일이 축소될 수 있습니다. | ||||||||
2 또는 INCREMENTAL | 자동 진공을 활성화하지만 수동으로 활성화해야 합니다. 이 모드에서는 인용 데이터가 유지되며 무료 페이지는 무료 목록에만 배치됩니다. 이 페이지는
|
cache_size Pragma
cache_size Pragma는 메모리에 있는 페이지 캐시의 최대 크기를 가져오거나 일시적으로 설정합니다. 구문은 다음과 같습니다:
PRAGMA [database.]cache_size = 페이지;
페이지 값은 캐시의 페이지 수로 표현됩니다. 내장된 페이지 캐시의 기본 크기는 2,000페이지이고 최소 크기는 10페이지입니다.
case_sensitive_like Pragma
case_sensitive_like Pragma는 내장된 LIKE 표현식의 대소문자 구분을 제어합니다. 기본적으로 이 Pragma는 false입니다. 즉, 내장된 LIKE 연산자는 대소문자를 무시합니다. 구문은 다음과 같습니다.
현재 이 Pragma의 현재 상태를 쿼리할 수 있는 방법은 없습니다.
count_changes Pragma
count_changes Pragma는 INSERT, UPDATE 및 DELETE와 같은 데이터 작업 문의 반환 값을 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA count_changes = [true|false];
기본적으로 이 Pragma는 false이며 다음 문은 아무것도 반환하지 않습니다. true로 설정하면 언급된 각 명령문은 작업의 영향을 받는 행을 나타내는 단일 정수 값으로 구성된 단일 행, 단일 열 테이블을 반환합니다.
database_list Pragma
database_list Pragma는 모든 데이터베이스 연결을 나열하는 데 사용됩니다. 구문은 다음과 같습니다.
이 Pragma는 데이터베이스가 열리거나 연결될 때마다 단일 행과 3개의 열이 있는 테이블을 반환합니다. 데이터베이스의 시퀀스 번호, 이름 및 관련 파일이 제공됩니다.
encoding Pragma
encoding Pragma는 문자열이 인코딩되고 데이터베이스 파일에 저장되는 방식을 제어합니다. 구문은 다음과 같습니다.
PRAGMA 인코딩 = 형식;
형식 값은 UTF-8, UTF-16le 또는 UTF-16be.
freelist_count Pragma
freelist_count Pragma 현재 무료이며 사용 가능한 것으로 표시된 데이터베이스 페이지 수를 나타내는 정수를 반환합니다. 구문은 다음과 같습니다.
형식 값은 UTF-8, UTF-16le 또는 UTF-16be 중 하나일 수 있습니다.
index_info Pragma
index_info Pragma는 데이터베이스 인덱스에 대한 정보를 반환합니다. 구문은 다음과 같습니다.
결과 집합은 해당 인덱스와 테이블에 포함된 모든 열이 됩니다. 열 순서. 인덱스 열과 열 이름은 행을 나타냅니다.
index_list Pragma
index_list Pragma는 테이블과 관련된 모든 인덱스를 나열합니다. 구문은 다음과 같습니다:
결과 집합에는 지정된 열 시퀀스의 각 인덱스에 대해 하나의 행, 인덱스 이름, 인덱스가 고유한지 여부를 나타내는 플래그가 표시됩니다.
journal_mode Pragma
journal_mode Pragma 로그 파일이 저장되고 처리되는 방법을 제어하는 로그 모드를 가져오거나 설정합니다. 구문은 다음과 같습니다:
PRAGMA 저널_모드 = 모드;
PRAGMA 데이터베이스.journal_mode;
PRAGMA 데이터베이스.journal_mode = 모드;
5가지 로그 모드가 지원됩니다:
Pragma 值 | 描述 |
---|---|
DELETE | 默认模式。在该模式下,在事务结束时,日志文件将被删除。 |
TRUNCATE | 日志文件被阶段为零字节长度。 |
PERSIST | 日志文件被留在原地,但头部被重写,表明日志不再有效。 |
MEMORY | 日志记录保留在内存中,而不是磁盘上。 |
OFF | 不保留任何日志记录。 |
max_page_count Pragma
max_page_count Pragma 데이터베이스에 허용되는 최대 페이지 수를 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA [database.]max_page_count = max_page;
기본값은 1,073,741,823입니다. 기가비트 페이지, 즉 기본 페이지 크기가 1KB인 경우 데이터베이스에서 늘어나는 1MB입니다.
page_count Pragma
page_count Pragma는 현재 데이터베이스의 웹 페이지 수를 반환합니다. 구문은 다음과 같습니다.
데이터베이스 파일의 크기는 page_count * page_size이어야 합니다.
page_size Pragma
page_size Pragma는 데이터베이스 페이지의 크기를 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA [database.]page_size = bytes;
기본적으로 허용되는 크기는 다음과 같습니다. 512, 1024, 2048, 4096, 8192, 16384, 32768바이트. 기존 데이터베이스의 페이지 크기를 변경하는 유일한 방법은 페이지 크기를 설정한 다음 즉시 데이터베이스를 VACUUM하는 것입니다.
parser_trace Pragma
parser_trace Pragma는 SQL 명령을 구문 분석하면서 인쇄의 디버깅 상태를 제어합니다. 구문은 다음과 같습니다.
기본적으로 false로 설정되어 있지만 true로 설정하면 활성화됩니다. 이 시점에서 SQL 파서는 구문 분석할 때 SQL 명령을 인쇄합니다. 상태에요.
recursive_triggers Pragma
recursive_triggers Pragma 재귀 트리거 기능을 가져오거나 설정합니다. 재귀 트리거가 활성화되지 않은 경우 하나의 트리거 작업은 다른 트리거를 트리거하지 않습니다. 구문은 다음과 같습니다.
PRAGMA recursive_triggers = [true|false];
schema_version Pragma
Schema_version Pragma는 데이터베이스 헤더에 저장된 스키마 버전 값을 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA [database.]schema_version = number;
이것은 32비트 부호 있는 형식입니다. 정수 값, 아키텍처 변경 사항을 추적하는 데 사용됩니다. 이 값은 스키마 변경 명령(예: CREATE... 또는 DROP...)이 실행될 때마다 증가됩니다.
secure_delete Pragma
secure_delete Pragma는 데이터베이스에서 콘텐츠가 삭제되는 방법을 제어하는 데 사용됩니다. 구문은 다음과 같습니다.
PRAGMA secure_delete = [true|false];
PRAGMA Database.secure_delete;
PRAGMA Database.secure_delete = [true|false ];
안전 삭제 플래그의 기본값은 일반적으로 꺼져 있지만 SQLITE_SECURE_DELETE 빌드 옵션을 통해 변경할 수 있습니다.
sql_trace Pragma
sql_trace Pragma는 SQL 추적 결과를 화면에 덤프하는 데 사용됩니다. 구문은 다음과 같습니다.
PRAGMA sql_trace = [true|false];
SQLite는 SQLITE_DEBUG 지시문을 사용하여 Pragma를 컴파일해야 합니다. 참조될 수 있습니다.
동기식 Pragma
동기식 Pragma SQLite가 물리적 저장소에 데이터를 쓰는 방식을 제어하는 현재 디스크의 동기화 모드를 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA [database.]synchronous = mode;
SQLite는 다음 동기화 모드를 지원합니다.
Pragma 值 | 描述 |
---|---|
0 或 OFF | 不进行同步。 |
1 或 NORMAL | 在关键的磁盘操作的每个序列后同步。 |
2 或 FULL | 在每个关键的磁盘操作后同步。 |
temp_store Pragma
temp_store Pragma는 임시 데이터베이스 파일에 사용되는 저장 모드를 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA temp_store = mode;
SQLite는 다음 저장 모드를 지원합니다.
Pragma 值 | 描述 |
---|---|
0 或 DEFAULT | 默认使用编译时的模式。通常是 FILE。 |
1 或 FILE | 使用基于文件的存储。 |
2 或 MEMORY | 使用基于内存的存储。 |
temp_store_directory Pragma
temp_store_directory Pragma 임시 데이터베이스 파일에 사용되는 위치를 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA temp_store_directory = 'directory_path';
user_version Pragma
user_version Pragma 데이터베이스 헤더에 저장된 사용자 정의 버전 값을 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA [database.]user_version = number;
이것은 32비트 부호 있는 형식입니다. 정수 값은 버전 추적 목적으로 개발자가 설정할 수 있습니다.
writable_schema Pragma
writable_schema Pragma는 시스템 테이블을 수정할 수 있는지 여부를 가져오거나 설정합니다. 구문은 다음과 같습니다.
PRAGMA writable_schema = [true|false];
이 Pragma가 설정되면 테이블은 sqlite_로 시작됩니다. sqlite_master 테이블을 포함하여 생성 및 수정이 가능합니다. 전체 데이터베이스가 손상될 수 있으므로 이 Pragma를 사용할 때는 주의하십시오.