사용자 도구

사이트 도구


database:mysql:performance

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
database:mysql:performance [2019/03/31 13:56]
kwon37xi
database:mysql:performance [2019/03/31 14:17]
kwon37xi
줄 14: 줄 14:
   * MySQL은 기본적으로 Read 에 Lock을 걸지 않는다. MVCC로 ISOLATION Level에 따라 값을 가져온다.   * MySQL은 기본적으로 Read 에 Lock을 걸지 않는다. MVCC로 ISOLATION Level에 따라 값을 가져온다.
   * [[database:mysql:user_lock|MySQL User Lock]]   * [[database:mysql:user_lock|MySQL User Lock]]
 +
 +===== Covering Index (커버링 인덱스) =====
 +  * select 대상 필드, order by, group by 등에 속하는 필드들을 모두 인덱스에서 값을 얻어올 수 있는 인덱스. 매우 속도가 빠르다.
 +  * PK 가 아닌 모든 인덱스는 그 끝단 데이터로 PK도 함께 가지고 있다. 따라서 PK는 인덱스에서 읽을 수 있다.
 +  * 실행 계획을 봤을 때 **Extra: Using index**가 있다면 커버링 인덱스로 모두 해결된 것.
 +  * 커버링 인덱스를 만들 때는 다음 순서로 한다.
 +    * WHERE 조건에 있는 컬럼 최우선
 +    * ORDER BY / GROPU BY 컬럼 그 다음
 +    * SELECT 에 있는 컬럼을 마지막
 +  * [[https://blog.toadworld.com/2017/04/06/speed-up-your-queries-using-the-covering-index-in-mysql|Speed up your queries using the covering index in MySQL]]
 +  * [[http://gywn.net/2012/04/mysql-covering-index/|MySQL에서 커버링 인덱스로 쿼리 성능을 높여보자!! | gywndi's database]]
 +  * 커버링 인덱스도 데이터이므로 마구 만들면 안 된다. 데이터량이 폭증하게 된다.
 +  * **SELECT/WHERE/ORDER BY/GROUP BY**에 커버링 인덱스에 속하는 컬럼과 PK 외에 다른 것이 들어오면 인덱스 사용을 중단할 수도 있다. -> 성능저하.
 +
 ===== 모니터링 툴 ===== ===== 모니터링 툴 =====
   * [[http://slipp.net/questions/84|MySQL 관리툴들]]   * [[http://slipp.net/questions/84|MySQL 관리툴들]]
줄 56: 줄 70:
   * [[http://www.myexpospace.com/oracle2012/SessionFiles/CON8979_PDF_8979_0001.pdf|MySQL 5.6 Optimization]]   * [[http://www.myexpospace.com/oracle2012/SessionFiles/CON8979_PDF_8979_0001.pdf|MySQL 5.6 Optimization]]
   * [[http://gywn.net/2017/06/mysql-os-cache-management/|[MySQL] 바쁜 서비스 투입 전, 이런 캐시 전략 어때요? | gywndi's database]]   * [[http://gywn.net/2017/06/mysql-os-cache-management/|[MySQL] 바쁜 서비스 투입 전, 이런 캐시 전략 어때요? | gywndi's database]]
 +  * [[https://d2.naver.com/helloworld/1155|성능 향상을 위한 SQL 작성법]]
database/mysql/performance.txt · 마지막으로 수정됨: 2020/08/26 16:05 저자 kwon37xi