db 작업들 병렬화하기 좋은데?
select도 병렬적으로 where절 조건 맞춰서 탐색하고
탐색결과를 모두 수합하고
order by 도, merge sort로 병렬화하고
..
gpu 가속 쓸 일이 많아보이는데??
그리고 gpu까진 안간다고 쳐.
멀티쓰레딩은 무조건 지원 해야할거같은데??
db에 이런 기능이 자동으로 내장되어있음??
자동으로 테이블 크기가지고 쓰레드 배정하고
gpu도 자동으로 사용함??
db 작업들 병렬화하기 좋은데?
select도 병렬적으로 where절 조건 맞춰서 탐색하고
탐색결과를 모두 수합하고
order by 도, merge sort로 병렬화하고
..
gpu 가속 쓸 일이 많아보이는데??
그리고 gpu까진 안간다고 쳐.
멀티쓰레딩은 무조건 지원 해야할거같은데??
db에 이런 기능이 자동으로 내장되어있음??
자동으로 테이블 크기가지고 쓰레드 배정하고
gpu도 자동으로 사용함??
dynamodb같은거 보면 이미 비슷 하던데?
벤더별로 다름. Select 병렬 탐색은 많은 고객들이 원하는 사항이지만 모든 벤더에 다 있진 않음. 존재하는 경우도 있고 일반적으로 메모리 구조 확보해놓고 쭉 긁어오는거라 병렬처리가 쉬운 것은 또 아닌지라. join같은거 들어가면 더 골치아프고 Cluster 구성 하에서 병렬처럼 처리할 순 있음. (얘는 RDB는 아니지만 하둡같은 예시) gpu를 쓸 구석이 있을까? 그부분은 잘 모르겠음. 그거 쓰는 서버는 일단 없는걸로 암. 오라클정돈 쓰려나...오라클 손뗀지 너무오래돼서 모름
일단 내가 일하던 곳에서 쓰던 DB는 클러스터는 병렬처리가 가능했음. 어차피 데이터는 나눠놓고 쓰는거니까 요청한 곳에서 instant 테이블 만들고, order by는 어쩔 수 없이 해당노드에서만 정렬하는 형식
ㅇㅎ... 조인을 생각한다면 확실히 좀 빡세지겠구나
글고 근본적으로 RDB가 들어가는 서버 스케일 생각하면 GPU로도 연산하기 힘들 가능성이 높음 그래서 일반적으론 session을 멀티쓰레딩이나 멀티프로세서로 돌려버리는게 더 효율적임 1놈이 빠르게 1시간짜리 1분에 돌리게 만드는거보다 60놈이 1시간짜리 60개 돌리게 만드는게 더 나은 경우가 대부분이거든 실제 서비스에 세션이 하나만 붙어서 존나큰거 돌리는 경우는 흔치않음. 그런게 필요하면 OLAP성 DB로 넘어가겠지.
세션이 뭔진 모르겠는데, 대충 멀티쓰레딩을 사용한다고 이해하면 되겠군요
아 그 커넥션 같은 개념이 세션인가보군요
DB는 서버고, 서버에 붙는 클라이언트가 세션. 실제론 조금 다르지만 어쨌건 거의 동일한 개념이라 이해하면 됨
커넥션(세션)별로 멀티쓰레딩 or 프로세싱 하는건 대부분의 DB가 지원함 안하면 서비스 못하지 ㅋㅋ
아하... 멀티쓰레딩이 이미 되고있겠구나..
이쪽이 맞말하네 당장에 DB 커넥션풀중 하나인 HikariCP도 여러 커넥션풀을 재활용 돌려가면서 부하분산하고 성능 향상도 한다는 개념으로 핫한건데 멀티쓰레딩 지원 안하면 할 수 없는 기능이긴 하지
데이터베이스 테이블 구조는 실제로는 BTree나 B+Tree를 비롯한 자료구조로 디스크에 저장되는데, gpu 성능을 떠나서(gpu에 있는 alu가 계산하기 좋은거지.. 조건 맞추는데는 별로일 것 같은데.. 그걸 떠나서) 데이터 꺼내면 ram으로 올라가고 그걸 gpu로 보냈다가 다시 결과 받고 하는 시간에 그냥 cpu가 처리하는게 빠를 것 같은데...
배열이 아니라 B트리란 점도 고려를 안했었네 내가...
트리도 근데 병렬 서치가 가능할거같은데? GPU까지 가는건 좀 오바인거같은데 멀티쓰레드까진 될거같음. 8개의 쓰레드를 만들어서 left left left , left left right , ... , right right right 로 분할해서 탐색하면 되잖아
db쪽이 아니여서 실제 멀티스레드를 쓰는지는 모르겠어.. btree면 멀티스레드는 가능할 것 같긴 한데 실제 쓰는지는 모르겠다.. (btree면 자식 노드 갈때 프로세스 나눠 주면 될 것 같긴한데... 그게 더 효율적일지는 모르겠어.. b+tree는... 인덱싱 정보가 윗 단이고 실제 데이터는 맨 마지막에 있어서 조건 만족하는 맨 처음꺼 찾고 그 뒤로 쭉 가면서 조건 만족하나 보면 되서.. 그냥 그렇게 하나 찾고 쭉 보는게 나을 것 같아) db가 스레드 지원하나 궁금하면 알고싶은 db engine doc 가서 보면 될 것 같긴 한데..
디비 작업에 행렬 계산할게 있나ㅇㅅㅇ
대부분 db 버틀넥은 디스크io 임ㅇㅅㅇ
병렬. 디스크 DB라도 버퍼에 데이터 많이들어있으면 필요할 수 있음 select 천만건 했는데 백만건씩 병렬처리하면 10배 빨라지니까 고객입장에선 아 시발 이거 안되나? 생각할 수 있음 in memory DB도 있자너~
https://sqlmaria.com/2018/03/01/can-gpus-speed-up-database-workloads/
gpu 메모리로 옮기는데서 버틀넥 걸리는듯ㅇㅅㅇ
하긴 메모리에서 직접긁는게 보통은 더빠르겠지
gpgpu는 안한다고 쳐도 멀티쓰레딩은 할 수 있잖음?
알아서 쓰겠지ㅇㅅㅇ
딱
트랜잭션이 힘들어짐 ㅇㅁㅇ
커넥션풀은 자네가 삶아묵어부렀나?