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 86597
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78996
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95740
158 [기계학습][머신러닝] [인공지능] 지도학습, 비지도학습, 강화학습 file 졸리운_곰 2025.03.14 1338
157 [기계학습][머신러닝][딥러닝] 머신러닝 하루 만에 배우려고 하지 마라 file 졸리운_곰 2025.03.09 1204
156 [DeepLearning] Learning to generate lyrics and music with Recurrent Neural Networks : 순환 신경망을 사용하여 가사와 음악을 생성하는 방법 배우기 file 졸리운_곰 2024.11.29 1003
155 [tensorflow 1.13 1.x 버전 설치법] [TensorFlow] Anaconda 가상환경 이용하여 TensorFlow GPU 설치 졸리운_곰 2024.01.08 1574
154 [AutoML][AutoKeras] [OSS] AutoKeras로 자동학습(AutoML) 하기 file 졸리운_곰 2023.07.02 1558
153 [Tensorflow 2.0] 모델 저장하고 불러오기 졸리운_곰 2023.05.21 1008
152 [pytorch] Pytorch에서 학습한 모델 저장 및 불러오기 졸리운_곰 2023.05.21 1826
151 [pytorch] Using BERT with Pytorch file 졸리운_곰 2023.03.06 1089
150 [pytorch] Full NMT model from pretrained BERT file 졸리운_곰 2023.03.06 937
149 [기계학습][딥러닝] PyTorch Hello World 졸리운_곰 2023.02.12 1229
148 [기계학습] [번역] TensorFlow Lite 튜토리얼 3 부 : Raspberry Pi의 음성 인식 졸리운_곰 2022.11.18 1104
147 [기계학습] [번역] TensorFlow Lite 튜토리얼 2 부 : 음성 인식 모델 교육 졸리운_곰 2022.11.18 1196
146 [기계학습] [번역] TensorFlow Lite 튜토리얼 1 부 : Wake Word 기능 추출 졸리운_곰 2022.11.18 1059
145 [기계학습][딥러닝] Generative Adversarial Net (GAN) PyTorch 구현: 손글씨 생성 file 졸리운_곰 2022.11.18 1002
144 [기계학습][딥러닝] Flask를 이용하여 파이토치를 REST API로 베포하기 file 졸리운_곰 2022.11.12 1010
143 [기계학습][머신러닝][딥러닝] Vanilla GAN file 졸리운_곰 2022.11.08 812
142 [기계학습][머신러닝][딥러닝] Generative Adversarial Net (GAN) PyTorch 구현: 손글씨 생성 file 졸리운_곰 2022.11.08 1425
141 [기계학습][머신러닝][딥러닝] DCGAN 튜토리얼 file 졸리운_곰 2022.11.08 1020
140 [PyTorch] pytorch 기본 문법 및 코드, 팁 snippets file 졸리운_곰 2022.10.20 1065
139 [tensorflow] [인공지능] TensorFlow GPU 동작 확인 방법 file 졸리운_곰 2022.09.04 1006
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED