neptune 성능 관련

지금까지는 neptune 성능 측정을 위해 n개의 클라이언트가 하나의 테이블에 데이터를 저장하는 방식으로 테스트를 수행했습니다.
오늘 수십개의 테이블을 생성하고 n개의 클라이언트가 각각의 테이블에 저장하는 테스트를 수행해 보았는데 속도가 2배 이상 빠른 것을 확인하였습니다. 
이유는 하나의 테이블에 n개의 클라이언트가 데이터를 저장할 경우 테이블이 split 되면서 lock 등이 발생하고 n개의 클라이언트가 랜덤하게 키를 생성해서 보내기 때문에 특정 시점에 하나의 Tablet이 split하면서 lock이 발생하면 모든 클라이언트가 해당 Tablet에 속하는 rowkey를 저장할 때는 모두 대기 상태가 되기 때문에 concurrent하게 수행되어야 하지만 부분적으로 sequential 형태로 될 수밖에 없는 상황입니다.
하지만 서로 다른 테이블에 저장하는 경우는 그런 상황은 발생하지 않기 때문에 모든 클라이언트가 concurrent하게 수행되어 TabletServer 측에서 throughput은 훨씬 더 높게 나오는 것 같습니다.

혹시 또 이렇게 포스팅하면 "neptune이 하나의 테이블 만들면 멀티 클라이언트도 병렬로 수행안된다" 라고 오해하실 수도 있는데 split을 위해 lock이 걸리는 시점에만 해당되는 사항입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/357

Leave a comment
« Previous : 1 : ... 83 : 84 : 85 : 86 : 87 : 88 : 89 : 90 : 91 : ... 388 : Next »