19P by GN⁺ 2일전 | ★ favorite | 댓글 1개
  • SQLite의 단일 작성자 구조와 내장형 특성이 오히려 확장성과 성능을 높이는 요인으로 작용함을 실험으로 입증
  • 동일한 조건에서 Postgres는 네트워크 지연 시 348 TPS까지 하락했지만, SQLite는 네트워크 제거로 44,096 TPS를 달성
  • 단일 작성자 모델을 활용한 배치 처리와 SAVEPOINT 기반 세분화 트랜잭션으로 최대 186,157 TPS, 안정적 구성 시 102,545 TPS 기록
  • Amdahl의 법칙이 네트워크 기반 데이터베이스의 병목을 설명하며, SQLite는 이를 회피함으로써 높은 효율을 유지
  • 이 결과는 로컬 환경에서의 SQLite 활용 가능성과 네트워크 병목 제거의 중요성을 강조함

SQLite의 구조와 실험 환경

  • SQLite는 MVCC가 없고 단일 작성자만 허용하지만, 이러한 구조가 오히려 높은 확장성을 가능하게 함
    • 내장형 데이터베이스로서 네트워크 오버헤드가 없음
  • 벤치마크는 Apple M1 Pro, 16GB 메모리의 MacBook Pro(2021) 환경에서 수행
  • 실험은 완벽한 최적화가 아닌, 일반적인 조건에서도 높은 쓰기 처리량을 달성할 수 있음을 보여주는 목적으로 진행

TPS 정의와 트랜잭션 예시

  • TPS는 단순한 쓰기 속도가 아니라 상호작용형 트랜잭션(Interactive Transaction) 을 의미
    • 예: 계좌 간 송금 시 여러 쿼리와 애플리케이션 코드가 하나의 트랜잭션 내에서 실행
  • 트랜잭션은 오류 발생 시 상태를 롤백할 수 있어 일관성 유지에 핵심적 역할

벤치마크 구성

  • Clojure 기반 가상 스레드(virtual threads) 를 사용해 대규모 동시 요청을 시뮬레이션
  • Postgres는 HikariCP 기반 커넥션 풀로 구성, SQLite는 단일 작성자와 코어 수만큼의 읽기 연결을 사용
  • 두 데이터베이스 모두 id, balance 필드를 가진 단순한 account 테이블을 사용하며, 10억 개의 행을 삽입
  • 사용자 활동은 파워 법칙 분포(0.9995) 를 따르며, 약 10만 명의 활성 사용자가 존재

네트워크 데이터베이스(Postgres) 성능

  • 동일 서버 내에서 Postgres는 13,756 TPS 달성
  • 네트워크 지연 5ms 추가 시 1,214 TPS, 10ms 시 702 TPS로 급감
  • 직렬화 격리 수준 적용 후 660 TPS, 추가 쿼리 포함 시 348 TPS로 하락
  • 이는 Amdahl의 법칙에 따라 네트워크 병목이 전체 성능을 제한함을 보여줌
    • 네트워크 지연이 증가하면 트랜잭션 락 경쟁이 심화되어 확장 불가능

SQLite의 내장형 이점

  • 네트워크 제거 후 SQLite는 44,096 TPS 달성
    • 네트워크 병목이 사라지면서 Amdahl의 법칙의 영향을 최소화
  • 단일 작성자 구조를 활용해 배치 처리(batch processing) 적용 시 186,157 TPS까지 상승
    • 동적 배치 크기 조정으로 지연(latency)과 처리량(throughput) 을 자동 최적화

SAVEPOINT를 통한 세분화 트랜잭션

  • 배치 내 개별 트랜잭션 실패를 방지하기 위해 SAVEPOINT를 사용한 중첩 트랜잭션 적용
    • 실패 시 해당 트랜잭션만 롤백, 전체 배치는 유지
  • 이 방식으로도 121,922 TPS 유지

읽기/쓰기 혼합 부하 테스트

  • 전체 요청의 75%를 읽기, 25%를 쓰기로 구성
  • 별도의 읽기 스레드 풀을 사용하여 읽기 요청이 쓰기를 방해하지 않도록 분리
  • 결과적으로 102,545 TPS 달성

성능 비교 요약

조건 Postgres SQLite
네트워크 없음 13,756 44,096
5ms 지연 1,214 n/a
10ms 지연 702 n/a
10ms + 직렬화 660 n/a
배치 처리 n/a 186,157
배치 + SAVEPOINT n/a 121,922
배치 + SAVEPOINT + 읽기 n/a 102,545

결론

  • SQLite는 단일 작성자 모델과 내장형 구조 덕분에 네트워크 기반 데이터베이스보다 훨씬 높은 TPS를 달성
  • Amdahl의 법칙이 제시하는 네트워크 병목 한계를 회피함으로써 효율성을 극대화
  • 전체 코드는 GitHub에서 공개되어 있으며, 관련 주제로 Amdahl의 법칙, 파워 법칙, SQLite 확장 사례 등의 자료가 함께 제시됨
  • SQLite는 로컬 환경에서의 고성능 트랜잭션 처리에 매우 효과적인 선택지임

[출처] https://news.hada.io/topic?id=24792

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 29365
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 30216
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 40448
» [SQLite]10만 TPS와 10억 행 처리: SQLite의 놀라운 효율성 졸리운_곰 2025.12.05 37
1123 [MySQL] VScode extension 으로 MySQL DB 연결하기 file 졸리운_곰 2025.08.21 27
1122 [기계학습][머신러닝] [인공지능] 지도학습, 비지도학습, 강화학습 file 졸리운_곰 2025.03.14 141
1121 [암호화폐] [파이썬] 암호화폐 자동매매(1): 변동성 전략 +상승장 졸리운_곰 2025.03.13 72
1120 [DB modeling, DB 모델링] [DB] DB 설계 과정 file 졸리운_곰 2025.03.10 37
1119 [기계학습][머신러닝][딥러닝] 머신러닝 하루 만에 배우려고 하지 마라 file 졸리운_곰 2025.03.09 40
1118 [데이터분석 & 데이터 사이언스] 수많은 데이터 사이언티스트들이 직장을 떠나는 이유는 무엇인가? file 졸리운_곰 2025.03.09 38
1117 [DB modeling, DB 모델링] [DATABASE] 기본키(PK), 외래키(FK) file 졸리운_곰 2025.01.29 91
1116 [DB modeling, DB 모델링] 바쁜 데이터 전문가를 위한 7가지 무료 데이터베이스 다이어그래밍 도구 : 7 free database diagramming tools for busy data folks file 졸리운_곰 2025.01.19 166
1115 [DeepLearning] Learning to generate lyrics and music with Recurrent Neural Networks : 순환 신경망을 사용하여 가사와 음악을 생성하는 방법 배우기 file 졸리운_곰 2024.11.29 88
1114 [암호화폐] Solana 토큰 만들기 — MeMe Coin file 졸리운_곰 2024.11.15 178
1113 [MySQL] Workbench로 ERD 그리기 file 졸리운_곰 2024.10.29 197
1112 [DB modeling, DB 모델링] ERD 다이어그램 그리는 방법 file 졸리운_곰 2024.10.29 114
1111 [NoSQL 데이터모델] MongoDB - 데이터 모델 졸리운_곰 2024.08.10 261
1110 [MySQL] 고성능 스토리지 기반의 DB통합 : MySQL 컨솔리데이션(Consolidation) file 졸리운_곰 2024.08.10 223
1109 [표준SQL] 퀴즈로 배우는 SQL : 전기 요금 계산 file 졸리운_곰 2024.08.10 221
1108 [표준SQL] 퀴즈로 배우는 SQL : 파이프 연결하기 file 졸리운_곰 2024.08.10 204
1107 [표준SQL] 퀴즈로 배우는 SQL : 공통점이 가장 많은 친구 찾기 file 졸리운_곰 2024.08.10 479
1106 [표준 SQL] 퀴즈로 배우는 SQL : 일별 누적 접속자 통계 구하기 file 졸리운_곰 2024.08.10 199
1105 [표준 SQL] 퀴즈로 배우는 SQL : 구분자로 나누어 행,열 바꾸기 file 졸리운_곰 2024.08.10 147
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED