SQLite 3.53: 주요 버그 수정과 새로운 SQL 함수
SQLite 3.53이 출시되었습니다 — 공공 도메인에 속한 가볍고 임베디드 가능한 C 데이터베이스 엔진입니다. 라이선스 제한 없이 앱에 통합하기에 완벽한 라이브러리죠. 이전 릴리스인 3.51은 2025년 11월로 거슬러 올라가며, 버전 3.52는 취소됐습니다. 컨소시엄에서 개발을 지원합니다.
이번 버전은 WAL 모드 안정성, ALTER TABLE 개선, JSON 도구에 초점을 맞췄습니다. 테이블 병합과 UNION/INTERSECT/EXCEPT 작업 성능을 높이는 쿼리 최적화가 포함됐습니다.
WAL 모드 데이터베이스 손상 치명적 수정
Write-Ahead Logging 모드에서 데이터베이스 손상을 유발하는 버그가 수정되었습니다. 이 문제는 2010년 (SQLite 3.7.0)으로 거슬러 올라가며, 레이스 컨디션에서 드러났습니다: 여러 연결이 동시에 DB를 열고 동일한 파일에 트랜잭션을 쓰거나 커밋하려 할 때 발생하죠. 실패 사례는 매우 드물었고 테스트 시나리오에서만 재현됐습니다.
WAL을 사용하는 멀티스레드 앱에서 동시 접근이 일상인 경우 이 수정은 매우 중요합니다. 중고급 개발자들은 회귀 없이 이 잠재적 취약점을 제거한 점을 높이 평가할 겁니다.
DDL 개선: ALTER TABLE 및 REINDEX EXPRESSIONS
ALTER TABLE 명령어가 이제 NOT NULL과 CHECK 제약 조건 삭제를 지원합니다. 전체 테이블 재구축 없이 스키마를 진화시킬 때 편리하죠.
새로운 REINDEX EXPRESSIONS 명령어는 표현식(컬럼 위 함수나 연산)에 대한 인덱스를 재구축합니다. 데이터 변경 후 오래된 인덱스를 복구하는 데 쓰입니다.
예시 시나리오:
- UPPER(column) 인덱스가 업데이트 중에 저하됩니다.
- REINDEX EXPRESSIONS(name)이 무결성을 복구합니다.
다른 데이터베이스의 테이블에 대한 임시 트리거(CREATE TEMP TRIGGER)가 이제 테이블 수정이나 데이터 읽기를 할 수 있습니다.
JSON 함수 및 VACUUM 개선
JSON 배열에 요소를 삽입하면서 순서와 타입을 유지하는 json_array_insert()와 jsonb_array_insert()가 추가됐습니다.
URL 타겟을 사용한 VACUUM INTO가 이제 reserve=N을 지원해 데이터베이스 백업 복사본 수를 설정할 수 있습니다.
새로운 JSON 기능 목록:
- json_array_insert(json, path, value): 경로별 삽입.
- jsonb_array_insert(jsonb, path, value): 성능을 위한 바이너리 버전.
- 위치 지정 및 이름 지정 삽입 지원.
sqlite3 CLI 유틸리티 개선
읽기 쉬운 쿼리 결과 출력을 위해 QRF(Query Result Formatter) 라이브러리가 통합됐습니다.
명령어 변경 사항:
.mode에 새로운 형식 추가 (기본값으로 프레임 테이블).- 테이블 출력에서 숫자 오른쪽 정렬.
- 도트-명령어 뒤 세미콜론
;무시. - 명령줄에서 .sql/.txt 파일을 SQL + 도트-명령어로 실행.
.timer once— 다음 쿼리에만 타이밍 측정..progress -timeout S— 타임아웃 시 중단..indexes가 테이블이 아닌 인덱스 이름에 패턴 적용.
이 기능들은 터미널에서 디버깅과 분석 속도를 높여줍니다.
최적화 및 플랫폼 변경
쿼리 플래너가 테이블 병합과 EXCEPT/INTERSECT/UNION에 최적화됐습니다 — 대규모 데이터셋에서 성능 향상.
Float-to-text 변환 속도가 빨라졌습니다 (sprintf 같은 작업).
WebAssembly 빌드: 새로운 VFS opfs-wl이 opfs와 유사하게 Web Locks API를 사용해 잠금을 처리합니다.
sqlite3_rsync: 네트워크 rsync를 위한 -p/--port 옵션.
Windows RT 지원 중단.
핫 패스에서 벡터화로 float-to-text 성능이 개선됐습니다.
주요 요약
- 멀티 연결 접근 시 드물지만 치명적인 WAL 레이스 수정.
- ALTER TABLE에서 NOT NULL/CHECK 삭제; 표현식 기반 인덱스를 위한 REINDEX EXPRESS.
- JSON/디버깅을 위한 json_array_insert()와 QRF 탑재 CLI.
- UNION/EXCEPT 및 float 포맷팅 최적화.
- WebAssembly: Web Locks 사용 opfs-wl VFS.
— Editorial Team
아직 댓글이 없습니다.