개발 Q&A

제목 대용량 DB 검색, 대용량 배열 중복값 검색 질문입니다..
글쓴이 아이와사 작성시각 2016/07/04 17:27:39
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 14128   RSS

DB에 제품 시리얼번호 데이터가 100만개 있습니다.

엑셀 CSV로 관리하며, 엑셀 파일 한 개당 시리얼은 10만개 정도 됩니다.

 

중복검사 기능을 만들고 있는데..

쿼리를 어떻게 짜야 덜 무겁게 검색할 수 있을지 감이 안옵니다..

 

where 시리얼 = '입력시리얼1' and 시리얼 = '입력시리얼2'

요런식으로 and로 처리하자니 너무 무식한것같고..(where 10만개..ㄷㄷ)

where in으로 처리해도 너~무 길구요..

 

다른 노하우가 있을것 같은데..조언부탁드립니다..

 

그리고 sql검색은 무지하게 느리지만 어떻게 되긴되더라구요.

이미 DB에 올렸던 엑셀파일로 중복검사를 하면 중복시리얼이 10만개가 검색되어 나오는데

이걸 페이지에 뿌려주려고하면 413 Request Entity Too Large 에러뜨면서 터져버립니다..

호스팅을 받는중이라..어떻게 해결해야할지 막막합니다..ㅜㅜ

 

"기존 데이터에 시리얼번호 xxxxxx가 있습니다."   << 요런식으로 중복시리얼을 표현해주고싶습니다..

 

 다음글 로컬에 설치한 게시판의 속도가 느릴때... (1)
 이전글 NFS에 대한 질문 입니다. (3)

댓글

아이와사 / 2016/07/04 17:35:43 / 추천 0
디비는 마리아DB 10.1 사용중입니다..
kaido / 2016/07/04 17:56:06 / 추천 0

그냥 csv 파일 에서 번호 1개씩 읽어와서 하나씩 비교해서 처리 값을 csv 파일에 리턴해서 보여주면 안되는 것인가요?

보기에는 csv 파일에서 확인 하려는 의도 같습니다.

아이와사 / 2016/07/04 17:59:46 / 추천 0

@카이도

시리얼 번호 한개씩 중복검사를 하게되면 SELECT를 10만번 해야되지 않나요..?

kaido / 2016/07/04 18:04:49 / 추천 0

@아이와사

전체 비교를 해야하니 어느쪽이든 셀렉트는 10만번 일어 납니다.

 

아이와사 / 2016/07/04 18:07:37 / 추천 0

@카이도

어디선가 셀렉트를 너무 많이하면 DB가 못버틴다길래

select 한번에 검색하려고 했었는데 10만번해보는걸로 한번 시도해봐야겠네요..

csv파일에 중복여부를 표현해주는건 정말 생각지도 못했는데 조언감사합니다

kaido / 2016/07/05 08:35:10 / 추천 0

@아이와사

못버틴다는 기준이 10만번을 얼마나 빠르게 접근 했느냐 입니다.

별거 아닌 개인 사이트도 1달간 전체 조회 횟수 카운팅 된거 보면 수십억번은 조회합니다.

10만번 정도는 애교죠.

이런 배치 작업은 적당히 속도 조절을 해서 예외처리를 하고 천천히 진행 하는게 방법입니다.

 

 

 

당근병아리 / 2016/07/05 08:51:16 / 추천 0

시리얼 중복 카운트 테이블이 필요합니다.

번호 / 시리얼 / 갯수 

시리얼은 unique index 으로 중복제거하여 data가 입렵 혹은 변경될때

마다 갯수를 증가 및 감소하면 됩니다.

이렇게 하면 갯수가 2개 이상이라면 중복입니다.

그러면 속도면에서도 휠씬 빠릅니다. ^

 

/ 2016/07/05 10:26:14 / 추천 0

@아이와사

걍 다 디비에 통으로 때려 넣고 씨리얼에 인덱스체크하면.. 속도 빠르지 않나여??

중복검사는 시리얼 인풋으로 받아서 where절에 넣어서 그거 조회 후 조회된게 있으면 중복된거고요.. 100만건 쿼리를 왜 날려요;;

kaido / 2016/07/05 10:47:35 / 추천 0

@닉

보통은 시리얼 중복을 막고 진행을 하는 프로세스이면 애초에 10만건씩 중복 체크라는 이런 작업을 할 이유가 없겠지만

시리얼 중복을 막을 수 없는 상황이 아닌지 유추해 봅니다.

즉 시리얼 생성하는 애랑 그걸 등록해서 관리 하는 애랑 따로 노는 상황?

100만건에서 10만건 중복이 있는지 체크 하시려는거 보면...

애초에 csv로 따로 관리와 체크를 하는 것을 보면 이럴 가능성이 농후 하네요 ( ..)

엑셀 파일로만 업무하는 팀이랑 같이 일하면 흔히 나오는 현상이죠 후~ [옛날 생각 납니다]

/ 2016/07/05 10:50:35 / 추천 0

@kaido

아 ~ 그런건가요.. 그럼 csv를 디비에 넣는 툴 하나 만들고, 중복된 데이터를 다른테이블에 담는 방향으로 해서 중복된 데이터를 비교후 변경하던지 하여 디비에 넣는 로직으로 가면 될거같네요~