connection 하나가 pool을 이길 때가 많아
aiosqlite는 connection 하나에서 벌어지는 연산을 백그라운드 thread를 통해 한 줄로 세워. WAL 모드라면 이걸로 웬만한 웹 앱에는 충분해. SQLite 레벨에서 reader와 writer가 서로를 안 막고, connection 단위로 줄 세우는 것도 충분히 빨라서 그 줄이 병목이 되는 일이 거의 없거든.
pool을 고민할 때는 이럴 때야.
- writer가 여럿이면서 write 하나하나가 충분히 오래 걸려서 병렬로 돌릴 이득이 있을 때. SQLite는 한 번에 writer 하나라 드문 경우지만.
- 코어가 많은 머신에서 read가 connection 하나의 처리량을 다 채워버릴 때.
- 안전을 위해 읽기 전용 connection과 쓰기용 connection을 갈라두고 싶을 때.
피파처럼 생긴 앱, 그리고 대부분의 local-first 제품에는 공유 connection 하나가 맞고 더 단순해.
Tip: pool이 정말 필요하면 SQLAlchemy까지 갈 것 없이
asyncio.Queue로 작은 걸 직접 만들어. SQLAlchemy는 query builder가 필요할 때 좋은 거고, 파일 하나짜리 SQLite 앱에는 대개 과해.