안녕하세요 sql 대용량(?) 쿼리 및 몇가지 질문입니다. 0 0 1,009

by 롤리키드 [SQLServer] mssql mysql 쿼리 설계 대용량 [2020.06.16 11:16:36]


안녕하세요 db 관련 공부를 하다 알게되어 가입하게 되었습니다.

공부를 하다 궁금하게 생겨 초보적인 질문을 몇개 하려고 합니다.

 

1. 현재 사용하고 있는 sql은 ms sql과 mysql을 2개 사용하고 있습니다. mysql의 경우 order by를 사용하여 테이블 전체를 관찰할떄(select * from ~) 속도 차이가 

거의 없습니다. 데이터 갯수는 약 190만개 쯤 인데 둘 다 97초 쯤 걸립니다. select * from 을 사용하는게 좋지 않다는건 알고 있습니다만 type이 all 일 경우와 index의 경우 속도

차이가 없는것이 의문이 들어서요.  데이터는 10초에 한번씩 저장되고 있습니다.

 

2. 같은 테이블 및 데이터는 아니지만 비슷하게 사용하고 있는 ms sql에서는 order by를 사용할 경우 오히려 현저하게 느린 현상을 보이고 있습니다.

ms sql의 테이블은 10분,1분,10초마다 저장되고 각각 주기적으로 데이터를 지우고있습니다(오래된 데이터를 지우는데 제가 만든게 아니라 주기는 잘 모르겠습니다,)

또 각각 bakup용 테이블을 만들어 이곳에는 모든 데이터를 저장하고 있구요. 

위와 같이 select * from ~ 사용하여 1분 backup용 테이블을 쿼리했을때 order by를 사용하면 50초 사용하지 않으면 9초가 걸립니다.

이 테이블에는 약 64만건의 데이터가 저장되어있는데 약 40초간의 속도 차이가 걸리는 이유가 궁금하며 64만건의 데이터를 전체 불러왔을때도 9초나 걸리는게 맞는지

궁금합니다.

10초짜리 테이블은 상상이상으로 무지막지하게 느립니다. select No from ~ 식으로 pk 값 또는 필드 하나만 선택하여 불러오는데 9분이 걸리고 있고 10초짜리 backup 테이블은 쿼리할 엄두가 안나더군요... 10초짜리 테이블에는 현재 약 64만개의 데이터가 축적되어있고 backup용에는 최소 2백만게 이상은 저장되어있으리라 생각됩니다.

 

3. 또 이를 바탕으로 궁금한게 생겼는데, ms sql의 10초짜리 테이블에 들어가는 데이터의 크기가 아이러니 하게도 10분짜리,1분짜리 테이블 보다 월등하게 큽니다.

데이터양도 많고 크기도 큰지라 속도가 엄청 느리구나 정도로 받아들이고 있는 단계인데, 만약 A 테이블은 축적된 데이터의 양이 많은대신 하나 하나의 데이터 크기는 작고,

B테이블은 A테이블에 비해 축적된 양은 적미나 하나의 데이터 크기가 크다고 했을때 쿼리속도면에서는 어떤게 더 영향이 큰가요?.

즉, db성능(?)에 영향을 많이 주는것은 데이터의 크기 인지 축적된 데이터의 양인지 궁금합니다.

또 같은 구문을 쿼리했을때 sql 마다 성능 차이가 나는지 궁금합니다.(!번 질문처럼 order by에 따른 sql 별 속도 차이가 나는게 신기해서요)

 

아직 필요한 값들만 불러오면 될지, 전체를 불러와서 보여야 할지 모르는 단계인지라 * 를 사용하여 쿼리를 종종 하고 있습니다. 여러가지 구문을 만드는 방법이 있는건 알겠지만

아직 초보인지라 떠올리면서 다루기가 쉽지는 않더군요. 설계나 쿼리 등에 대해서는 공부를 계속해 나가면서 발전해나가야겠죠.... 긴 글 봐주져서 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입