-
[세미나] 데이터 시대 인덱스를 바라보는 새로운 눈일상/세미나&강연 2018. 10. 5. 16:40
2018년 7월 17일 역삼역 마루180의 이벤트 홀에서 [데이터 시대 인덱스를 바라보는 새로운 눈]을 주제로 한 이병국 DBA님의 발표가 있었습니다. 주로, 데이터베이스의 인덱스 생성도에 대한 이야기를 나눈다는 것이 흥미를 자극해 신청했습니다.
사실 인덱스를 자세히 공부해본 적은 없습니다.
조인을 이용해 쿼리를 짤 때, 그 결과가 조회되는 속도를 인덱스를 통해서 빨라질 수 있다.
PK는 인덱스다..정도의 개념만 알고 있고 속도가 빨라졌으면 해서 가끔 FK 칼럼에 인덱스를 생성해본 경험만 있었습니다.
이것도 사실.. 구글링을 하다가 인덱스를 생성하면 속도가 빨라진다해서 추가한거지만요..
이렇게 개요만 알고 있었습니다.
제 이전글, [수요인문학콘서트] 4차 산업혁명과 창조적 혁신, 미래 무엇이 차이를 만드는가? 에도 언급되어있듯이 데이터의 중요성은 점점 강조될 것입니다.
그러므로, 이제 데이터와 DB에 대한 깊은 이해는 튜너와 DBA의 영역이 아닌 개발자에게도 해당된다고 할 수 있죠.
세미나 홈페이지에 기재된 짤막한 발표내용입니다.
제4차산업혁명이 화두로 떠오르면서 데이터와 데이터베이스(DB)의 중요성이 어느 때보다 강조되고 있습니다. 얼마 전까지만 해도 DB에 대한 깊은 이해는 튜너나 DBA의 영역처럼 여겨지기도 했습니다. 하지만 데이터 시대의 도래와 함께 상황은 달라졌습니다. 개발자도 DB에 대한 폭넓은 이해가 요구되고 있습니다.
체계적인 DB 지식은 시스템 성능뿐 아니라 관리성과 즉결되기 때문입니다. 더 나아가 기업 차원에서는 개발 생성성을 제고하고 무형 자산인 데이터를 체계적으로 관리할 수 있기 때문입니다
이 차원에서 최근 DBguide.net에서 ‘오라클 DB 이야기’ 연재로 큰 인기를 얻었던 이병국 DBA를 초청해 ‘데이터 시대 인덱스를 바라보는 새로운 눈’이라는 주제의 세미나를 개최합니다. 이 세미나에서는 ‘인덱스 생성도’라는 이 강사만의 접근법으로 인덱스를 다루는 방법과 SQL 작성 노하우를 공유하게 됩니다.
발표목차- - 인덱스는 분류다.
- - 누구도 알려주지 않았던 ‘인덱스 생성도’의 비밀
- - 인덱스에 대한 오해와 진실
- - 개발자를 위한 SQL 작성 노하우 ‘공정쿼리’
- - 쉬운 쿼리가 성능을 보장한다.
이번 세미나를 통해 공정쿼리의 중요성을 배웠습니다.
세미나의 가제를 정한다면 공정쿼리라고 말할 수 있을 정도로 발표자님이 강조하신 내용이기도하죠.
공정쿼리 = 무엇을 조회할 것인가(쿼리결과) + 어떻게 조회할 것인가(쿼리과정)
공정쿼리는 누구나 쉽게 작성할 수 있고, 누구나 쉽게 이해할 수 있는 쿼리이며, 무엇을 어떻게 조회할 것인가에 대한 고민을 통해 공정쿼리가 나올 수 있습니다.
사담)
개념을 듣는 순간 일하는 중에 로직 수정을 위해 열어본 프로시저 하나가 생각났습니다.
반복문 안의 조건문, 조건문 안의 또 다른 조건문. 로직을 이해하는 데에도 많은 시간이 걸렸습니다.
단 1줄의 쿼리를 추가하려고 했을뿐인데요. 그 때, 개발코드뿐만 아니라 쿼리의 가독성도 중요하다고 생각했습니다. 발표자님을 통해 당시의 기억이 다시 떠올랐죠.
SELECT 테이블 접근 순서대로 조회칼럼을 나열
FROM 테이블 접근 순서대로 테이블을 나열
WHERE 테이블 접근 순서대로 조인절을 나열
AND ...
AND 테이블 접근 순서대로 조건 칼럼을 나열
공정쿼리는 위와같이 테이블 접근 순서대로 칼럼, 테이블, 조인절, 조건을 나열합니다.그렇다면 테이블 접근 순서는 어떻게 정할까요?1. 진입형 테이블을 결정합니다.우리는 고객의 주문내역을 조회하고 싶습니다.고객테이블에서 고객명으로 고객고유넘버를 알아낸 후 주문테이블을 스캔하는 게 일반적이죠.여기서 진입형 테이블은 고객테이블이 됩니다.추가로, 선택도가 좋은 테이블을 진입형 테이블로 결정하는 게 좋습니다.만약 주문테이블의 선택도가 더 좋은 경우에는 주문-> 고객 순서대로 접근하는 것이 좋죠.2. INNER 조인을 우선시합니다3. 연결 축소형을 우선시합니다.연결축소형 : 조인 연결 후 조회 레코드 수가 줄어드는 경우연결확대형 : 조인 연결 후 조회 레코드가 늘어나는 경우당연히 조인 연결 후 조회 레코드 수가 줄어드는 경우를 우선시해야합니다.공정쿼리로 작성하면 얻을 수 있는 이점은 무엇이 있을까요?첫 째, 테이블의 접근순서를 알 수 있습니다.둘 째, 인덱스 생성 위치를 알 수 있습니다.보통 조인절 우측편 칼럼과 조건절의 첫번째 칼럼을 인덱스로 생성합니다.참고)오픈 전에 인덱스를 일괄로 만들 때, 공정쿼리를 통해 한눈에 인덱스를 파악할 수 있으면 인덱스 생성시 편의합니다.세미나에선 발표자님께서 심부름을 예제로 들어주셔서 쉽게 이해할 수 있었습니다.
설명이 필요하신 분은 해당 사이트에 발표자료가 올라와있으니 참고하시면 됩니다. -> 바로가기
'일상 > 세미나&강연' 카테고리의 다른 글
[수요인문학콘서트] 4차산업혁명과 창조적 혁신, 미래 무엇이 차이를 만드는가? (0) 2018.07.05 [수요인문학콘서트] 인공지능과 뇌과학 시대의 호모사피엔스 (0) 2018.07.01