okky1922
257
2019-05-17 14:28:52
7
415

Mysql 질문


서버에서 Mysql CPU 사용량이 계속 300이 넘어 질문드립니다..


자주 실행되는 쿼리문을 보면 count(*)이 있는데


Q1. 800만건 정도 들어있는 테이블에 count(*) 을 사용하게 되면 무리가 가게 되나요??


Q2. CPU 사용량을 낮출 방법이 어떤것이 있을까요..



1
0
  • 답변 7

  • 우왕굳
    295
    2019-05-17 14:45:59

    Q1. 네 ...800만건을 센다는건 무리가 갑니다.

    Q2. where 절이 있다면 index를 걸어서 해결하시던가. 아니면 별도의 트리거를 생성해서 별도 테이블에 카운트된값을 저장하시면 될것같습니다.

    0
  • okky1922
    257
    2019-05-17 15:00:17

    우왕굳 WHERE 을 사용하여 실제 조회되는 데이터 항목은 10 ~ 15만건 정도입니다

    0
  • 우왕굳
    295
    2019-05-17 15:10:29

    그럼 해당 where 절에 속한 컬럼값 index 설정하셔도 느리다면 별도로 트리거 생성하시는게 나을것같습니다.

    0
  • okky1922
    257
    2019-05-17 15:12:11

    우왕굳 

    INDEX 관련 질문이있는데



    1,2 번 방법이 차이가 나는건가요??

    1번 방법이 맞는건가요??

    0
  • 우왕굳
    295
    2019-05-17 15:19:26

    차이는 아마 안날거같아요.

    index이름을 정해주고 3개컬럼 넣어주고 

    따로따로 이름정해주고 1개씩 컬럼 넣는거라 1번으로 사용해보시고,

    느리면 트리거로 사용하시는게 나으실거에요.

    해당 테이블 count된 숫자가 점점 많아질수록 index로도 한계가 올수도 있어요

    0
  • okky1922
    257
    2019-05-17 15:26:01

    우왕굳 아하 감사합니다


    궁금증이 한개더 있는데 혹시 JOIN문 없이

    그냥 TABLE 한개를 조회하는데도 INDEX 있는거와 없는거의 차이가 있는지요?

    0
  • 우왕굳
    295
    2019-05-17 15:34:47

    더 많을수록 차이가 크긴하겠지만 
    인덱스 개념을 찾아서 공부하시면 될것같습니다.

    일단 데이터값은 정렬되지 않고 들어온순서대로 되어있고, 인덱스로 저장한값은 정렬되어 보관하기 때문에 정렬된 데이터에서 검색하는 것이 더빠르다는 개념으로 알고있습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.