Skip to main content
공개 노트

SQLite 3.53.0, 무엇이 달라졌고 왜 바로 봐야 할까

Views 17약 4분생성형 AI 활용
Summary

SQLite 3.53.0, 무엇이 달라졌고 왜 바로 봐야 할까

SQLite 3.53.0이 2026년 4월 공개됐습니다. 이번 업데이트는 단순한 마이너 패치가 아닙니다. 데이터 무결성에 영향을 줄 수 있는 WAL 관련 문제를 고쳤고, CLI 화면은 더 보기 좋아졌으며, SQL 문법과 개발자용 API도 한층 강해졌습니다12

특히 이번 버전은 "SQLite를 그냥 내장 DB" 정도로만 보던 사람도 다시 보게 만들 만합니다. 운영 안정성, 개발 편의성, 쿼리 성능, 그리고 JSON 활용성까지 골고루 손봤기 때문입니다.

SQLite 3.53.0 핵심 업데이트: WAL 버그 수정과 안정성 강화

가장 먼저 봐야 할 건 WAL-reset 데이터 손상 버그 수정입니다. 릴리스 노트에서 가장 첫 항목으로 다뤄질 만큼 중요한 변화입니다.1

SQLite는 가볍지만, 그 가벼움이 "대충 써도 된다"는 뜻은 아닙니다. 특히 모바일 앱, 로컬 캐시, 데스크톱 앱처럼 한 파일에 중요한 데이터를 담는 환경에서는 작은 손상 가능성도 치명적입니다. 이번 수정은 그런 불안을 줄여준다는 점에서 체감 가치가 큽니다.

여기에 표현식 인덱스가 오래된 상태로 남는 문제를 다루는 "self-healing index" 기능도 추가됐습니다. 필요하면 REINDEX EXPRESSIONS로 표현식 인덱스를 다시 빌드할 수도 있습니다.1 예전엔 "뭔가 이상한데 원인을 찾기 어렵다"였던 상황이, 이제는 복구 경로가 조금 더 분명해진 셈입니다.

SQLite CLI 개선: 이제 결과 화면이 훨씬 읽기 쉬워졌다

이번 3.53.0에서 가장 눈에 띄는 변화는 CLI입니다. 새 Query Result Formatter, 즉 QRF가 들어오면서 대화형 CLI 출력이 훨씬 읽기 쉬워졌습니다. 숫자는 기본적으로 오른쪽 정렬되고, 인터랙티브 모드에서는 유니코드 박스 테이블로 결과를 보여줍니다.1

이 변화가 왜 중요할까요. SQLite는 "서버 없는 DB"라서 개발자가 터미널에서 바로 열어보는 일이 정말 많습니다. 그런데 출력이 지저분하면 단순 조회도 피곤해집니다. 이번 개선은 성능보다 사소해 보일 수 있지만, 실제 작업 흐름에서는 꽤 큽니다. Simon Willison도 이번 릴리스에서 CLI와 결과 포매팅 개선을 특히 눈여겨봤습니다.2

추가로 .mode 강화, .timer once, .progress --timeout S, .indexes 패턴 동작 변경 같은 자잘하지만 유용한 개선도 들어갔습니다.1 한마디로 "CLI가 드디어 현대화됐다"는 느낌입니다.

새 SQL 기능: ALTER TABLE과 JSON 활용이 더 편해졌다

개발자 입장에서 반가운 변화는 SQL 문법 확장입니다. 이제 ALTER TABLE로 NOT NULL과 CHECK 제약을 추가하거나 제거할 수 있습니다.1 이전에는 이런 작업이 번거로운 테이블 재생성으로 이어지는 경우가 많았는데, 스키마 관리가 한결 실용적으로 바뀌었습니다.

JSON 쪽도 좋아졌습니다. json_array_insert()와 jsonb_array_insert()가 추가되어 배열 중간 삽입이 쉬워졌습니다.1 SQLite를 설정 저장소, 오프라인 앱 DB, 이벤트 로그 저장소처럼 쓰는 경우 JSON 함수는 생각보다 자주 필요합니다. "관계형인데 문서형처럼도 조금 쓰고 싶다"는 현실적인 요구를 SQLite가 계속 받아주는 흐름으로 보입니다.

또 TEMP 트리거가 메인 스키마 테이블을 조회하거나 수정할 수 있게 된 점, VACUUM INTO가 reserve 바이트 설정을 더 유연하게 다룰 수 있게 된 점도 실무형 개선입니다.1

쿼리 성능과 개발자 API, 이번에도 조용히 강해졌다

겉으로 화려하진 않지만, 쿼리 플래너 개선도 중요합니다. EXCEPT, INTERSECT, UNION 처리 전략이 바뀌었고, 스타 스키마 조인이나 EXISTS 최적화, 불필요한 조인 생략 같은 부분도 다듬었습니다.1 대규모 분석 시스템이 아니어도, 복잡한 리포트성 쿼리에서는 이런 변화가 은근히 차이를 만듭니다.

C API도 확장됐습니다. 문자열 처리 함수, sqlite3_carray_bind_v2(), 새로운 prepare 옵션, 부동소수점 자릿수 제어 옵션 등이 추가됐습니다.1 특히 부동소수점 텍스트 변환이 재구현되면서 기본 반올림 자릿수가 15자리에서 17자리 유효숫자로 바뀐 점은 데이터 비교나 직렬화에 민감한 프로젝트라면 체크할 필요가 있습니다.1

참고로 릴리스 직후 오래된 Visual C++ 2010, 2012 환경에서 INFINITY 관련 빌드 이슈가 보고됐지만, 이후 트렁크에서 우회 수정이 확인됐습니다.3 레거시 빌드 체인을 쓰는 팀이라면 배포 전 확인이 좋겠습니다.

시사점

SQLite 3.53.0은 "기능 몇 개 추가" 수준이 아니라, 실제 사용 경험을 전반적으로 다듬은 업데이트입니다. 안정성을 챙겼고, CLI를 보기 좋게 만들었고, SQL과 JSON 작업도 더 현실적으로 바꿨습니다.

실무적으로는 세 가지를 추천합니다. 먼저 WAL을 쓰는 서비스라면 업그레이드를 우선 검토하세요. 다음으로 CLI를 자주 쓴다면 새 출력 포맷을 직접 체험해 보세요. 마지막으로 스키마 변경이나 JSON 조작이 많은 프로젝트라면 이번 버전의 생산성 향상을 꽤 크게 느낄 가능성이 높습니다.

참고

1SQLite Release 3.53.0 On 2026-04-09

2SQLite 3.53.0

3SQLite User Forum: SQLite 3.53.0 no longer builds on Visual C++ 2010, 2012 due to lack of INFINITY

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기