[Milvus] 성능 벤치마크

[원본 링크]

VectorDB를 도입하게 돼서 데이터베이스들을 대상으로 좀 공격적인 벤치마크를 해봤다.

공통적으로 cpu 1개, 메모리 8기가 정도만 주고 돌려봤었고, milvus도 그렇게 해보려고 했다.
https://blog.naver.com/sssang97/223840387576
하지만 처음부터 큰 난관에 부딪혔다.

결론부터 서두에 써놓자면, 리소스 효율성이 끔찍하고, 가용성 수준이 심각하게 낮다.
데이터베이스로서의 기본적인 부분들도 갖추지 못했다고 말할 수 있다.

게다가 클러스터 구성도 불필요하게 복잡한 편이라서 관리포인트도 어지럽다.
어지간해서는 추천하지 않는다.

그나마의 장점을 꼽자면, 레이턴시가 좀 낮은 편이었다는 것 정도다.




단점: 정신나간 메모리 사용량과 저가용성

다른 데이터베이스들과 동일한 조건으로 1000만개 삽입 테스트를 먼저 돌렸다.
그냥 데이터 넣는건 pgvector, elasticsearch, qdrant 등 다른 DB들도 좀 오래 걸릴지언정 잘 감당했던 작업이라서, 이것도 별 문제가 없을줄 알았다.

근데 아니었다.

DB가 OOM으로 뻗어버렸다.
DB가 OOM으로 죽었다는 말을 들어본 적이 있나? 나는 지금 처음 보는거같다.

대개 디스크 DB들은 메모리가 부족하면 느려지는 한이 있어도 디스크에 자원을 몰아놓고 메모리를 아끼는 자린고비 생활을 하는데, 이건 그런 기초적인 처리조차 해놓지 않고 몽땅 메모리에 올려버린다는 소리다.

그래서 16기가로 늘리고 다시 돌려봤는데

또 터졌다.

그래서 32기가까지 올렸더니

그제서야 좀 버텼다.

이게 뭐하는 짓인지...
내 시스템에는 절대 도입하고 싶지 않다.




장점: 빠른 레이턴시

그나마의 장점을 꼽자면, 처리속도가 꽤 빨랐다는 것이다.
사실 이만큼 리소스를 독식하는데도 느리면 그게 더 큰 문제이긴 하지만 말이다.

웬만하면 100ms 미만으로 처리가 됐다.

동일스펙으로 qdrant를 띄워서 테스트해봤을 때도 꽤 차이가 났다.

max 레이턴시는 별 차이가 없었지만, 평균 레이턴시는 milvus가 더 좋았다.
하지만 평상시의 메모리 사용량은 qdrant가 훨씬 적다.