본문 바로가기

좋아하는 것_매직IT/100.면접준비

SQL 튜닝이란?

반응형

블로그 목적

  • SQL 튜닝에 대해서 공부및 정리후 나만의 노하우와 지식을 공유한다.

블로그 요약

  • SQL 튜닝에 대해서 알아본다.

블로그 상세 내용

SQL 튜닝? 먹는거임?

  • 여러분들은 언제 SQL 튜닝이라는 말을 아시게 되셨나요?
  • 보통 IT 시스템 구축 프로젝트를 진행하신 분들께서는 리팩토링과 더불어 SQL 튜닝에 대해서 들어보셨을건데요..
  • 하지만, "SQL 튜닝" 이 무슨일을 하는것인지에 대해서 정확히 아는 사람이 드문것도 사실입니다.
  • 거의 "SQL 튜닝" 은 DBA 만 하는거 아니야? 라는 고정관념에 빠져있을때가 많이 있죠..
  • 특히, 자기가 2년차 아래의 개발자이면, "SQL 튜닝" ? 많이 들어봤는데...(잘모르겠네...) 라고 말씀하실건데요..
  • 이번 블로그를 통해서 "SQL 튜닝"이 무엇인지? 정확하게 간략하게 정리해 보려고 합니다.
  • 아인슈타인이 아래말을 했다죠?
    • "단순하게 설명할 수 없다면, 아직 잘 모르는 것이다" 라고요..
  • 그래서, 이번 블로그는 최대한 단순함을 목적으로 하고 있습니다.
    • 누가 "SQL 튜닝" 이 몬가요? 물어보면..
      • 아! "SQL 튜닝"은 무엇입니다!! 조건 반사(?)적으로 나올 수 있게요..^^;

SQL 튜닝이란?

  • SQL 튜닝이 갖는 정확한 의미는 무엇일까요?
  • 그전에 우리는 DBMS 란 용어를 머릿속에 넣어두어야 합니다.
  • DBMS에 대해서 알아보면..
    • Database Management System 의 약자인데요...
  • DBMS의 종류를 잠깐 알아보면..
    • ORACLE 사의 ORACLE 
    • ORACLE 사의 MySQL:
    • 알티베이스 사의 Altibase
    • IBM사의 DB2
    • 마이크로소프트사의 MS-SQL
    • 등등이 존재하죠..
  • 해당 제품들은요 효율적인 데이터베이스 관리를 위해서 개발된 소프트웨어라고 보시면 되는데요...
  • 그럼 SQL 이란 무엇일까요?
    • SQL 에 대해서 알아보면...
      • Structured Query Language 의 약자인데요..
    • SQL 종류는 크게 3가지로 구분됩니다. 
      • DML(Data Manipulation Language)
        • 테이블의 데이터를 조작하는 명령어
          • INSERT (삽입)
          • DELETE (삭제)
          • SELECT (조회)
          • UPDATE (갱신)
      • DCL(Data Control Language)
        • 데이터베이스, 테이블 접근권한, CRUD 권한정의하는 명령어
          • GRANT (데이터베이스 객체 권한부여)
          • REVOKE (부여된 객체권한 취소)
      • DDL(Data Definition Language)
        • 데이터베이스, 테이블 스키마 정의, 수정, 삭제 하는 명령어
          • CREATE (데이터베이스 객체를 생성)
          • DROP (데이터베이스 객체 삭제)
          • ALTER (기존 데이터베이스 객체 재정의)
    • 즉, SQL 은 데이터베이스를 만드는 것은 물론, 만들어진 데이터베이스에 데이터를 입력및 변경,삭제하는 작업과 데이터베이스조회등등의 작업을 위해서 필수언어라고 보시면 됩니다.
  • 그럼, SQL 을 알아야하는 사람은 누구일까요?
    • DBA 만 알아야 할까요? 아님 개발자도?
    • 맞습니다.
      • DBA 와 개발자 모두 알아야하는 언어입니다.
      • 그래야, 소통을 할 수 있겠죠...(무엇이든 내가 알아야 소통이 됩니다.!!)
  • 즉, SQL 도 하나의 언어인데요..
    • 예를들어 C++이란 언어가 있지만, 해당 문법은 정형화가 되어있습니다.
    • 하지만, 같은 프로젝트의 요구사항을 가지고 코딩을 하더라도 개발자마다의 코딩하는 스타일및 방식은 천차만별인데요...
    • 문법과 어법에 맞게 제대로 쓰는 사람이 있는가 반면에, 그렇지 못한 사람도 있을 수 있을것이고요...
  • SQL 도 한가지 언어이기때문에, 같은 요구사항이지만, 개발자마다, 아님 DBA마다 똑같은 SQL을 작성할 가능성은 현저하게 떨어지죠...
  • 하지만요..
    • 이런차이점이 때때로, 전체 성능에 엄청난 차이를 불러온다는 사실을 아시나요?
  • 그래서, 개발자는 SQL 을 "잘 사용하는 방법"에 대해서 항상공부하고 정확히 숙지해야합니다.
  • 너무 돌아왔는데요...
  • SQL 튜닝!! 무엇일까요?
    • 한마디로 요약하자면, 성능을 감안해서 SQL을 잘쓰는것!!
    • 그것이 바로 SQL 튜닝이다라고 머릿속에 넣어두시면 좋을것 같네요..
  • 즉, SQL 튜닝은 최소한의 CPU 및 I/O 메모리를 사용해서 최대한 빠른 시간 내에 원하는 데이터 작업을 수행하도록 만드는 것을 목표로 하고 있습니다.
  • 보통 이와 같은 튜닝을 전문으로 하는 사람을 "튜너" 라고 말합니다.
  • 아무튼 이번 블로그, "SQL 튜닝이란 무엇인가?" 에 대한 간단한 정의는 여기까지고요..
  • 다음 블로그는 
    •  "그럼, SQL 튜닝이 왜필요하고, 언제하는가?"에 대해서 공부해서 나눠보도록 하겠습니다. 
  • 그럼 결론을 정리해보겠습니다.

결론

  • 하나, DBMS에 대해서 알아보면..Database Management System 의 약자입니다.
    • DBMS의 종류를 잠깐 알아보면..
      • ORACLE 사의 ORACLE 
      • ORACLE 사의 MySQL:
      • 알티베이스 사의 Altibase
      • IBM사의 DB2
      • 마이크로소프트사의 MS-SQL
      • 가 존재하고요..
  • 둘, SQL 에 대해서 알아보면...
    • Structured Query Language 의 약자인데요..
    • SQL 종류는 크게 3가지로 구분됩니다. 
      • DML(Data Manipulation Language)
        • 테이블의 데이터를 조작하는 명령어
      • DCL(Data Control Language)
        • 데이터베이스, 테이블 접근권한, CRUD 권한정의하는 명령어
      • DDL(Data Definition Language)
        • 데이터베이스, 테이블 스키마 정의, 수정, 삭제 하는 명령어
  • 셋, SQL 튜닝!! 무엇일까요?
    • 한마디로 요약하자면,  "성능을 감안해서 SQL을 잘쓰는것!!"
    • 그것이 바로 SQL 튜닝이다라고 머릿속에 넣어두시면 좋을것 같네요..
728x90
300x250