[데이터베이스 & SQL 첫걸음] 14주차 공부

김서영·2021년 12월 20일
0

부록_성능을 생각하자

성능이란

성능을 측정하는 2가지 지표

  1. 처리 시간 / 응답 시간 : 어떤 특정 처리의 시작부터 종료까지 걸린 시간
  2. 처리율 (단위 시간의 지표) : 특정 처리(트랜잭션)을 단위 시간에 몇 건 처리 가능한가

정점과 한계점

처리율이 성능에서 중요한 이유는 시스템의 자원 용량을 결정하는 요인이기 때문. 처리율이 높은 시스템일수록 'CPU나 메모리 같은 하드웨어 자원이 매우 필요하다는 것'을 의미.

동시 실행 처리 수가 증가할수록 준비해야 할 자원도 증가하며 한 가지 자원이라도 한계에 이른 시점에서 성능이 나빠지기 시작.
즉, 응답 시간이 상승하기 시작하고, 반대로 처리율이 떨어지기 시작.
최초로 한계에 이른 자원을 '버틀넥 포인트', 병목 이라고 함.

이처럼 처리율과 응답 시간이 극단적으로 나빠지기 시작하는 처리량을 한계점 이라 함.

주기형과 돌발형

돌발형 액세스 집중에 대응하는 수단의 한 가지, '클라우드'.
클라우드는 가상화를 기반으로 자원량을 유연하게 변동할 수 있는 기술, 물리 자원의 임대 모델.
스케일 업, 스케일 아웃이 예전과 비교하면 쉬우며, 짧은 시간 내에 실시할 수 있음.

데이터베이스와 병목의 관계

데이터베이스는
1. 취급하는 데이터 양이 가장 많다
2. 자원 증가를 통한 해결이 어렵다
의 경우, 병목이 됨.

성능을 결정하는 요인

구문 오류가 없는지를 보는 파스

데이터베이스는 SQL 문을 받으면 문법적으로 잘못된 부분이 없는지를 점검. 이 동작을 파스(Parse)라고 함. 이 역할을 담당하는 내부 프로그램은 파서(Parser).

실행계획과 옵티마이저

SQL문에 필요한 데이터를 얻기 위한 방법으로 데이터베이스는 어떤 계획으로 데이터에 도달할 지를 결정해야 함. 이 계획을 실행계획 또는 액세스 플랜이라 부름. 실행계획을 결정하는 내부 프로그램을 옵티마이저 라고 부름.

옵티마이저에 실행계획을 맡기는 이유

데이터베이스가 더 효율적인 실행계획을 만들 수 있다고 판단하기 때문.

옵티마이저가 참조하는 통계정보

통계정보란, 옵티마이저가 실행계획을 세울 때 참조하는 정보.
1. 테이블의(대강의) 행수/열수
2. 각 열의 길이와 데이터형
3. 테이블의 크기
4. 열에 대한 기본키나 NOT NULL 제약의 정보
5. 열 값의 분산과 편향

show table status;
show index from 테이블명;
analyze table 테이블명;

복수의 테이블 다루기

관계형 모델

관계형 모델 (Relational Model)

관계형 모델의 릴레이션은 SQL에서 말하는 테이블에 해당.
관계형 모델의 릴레이션에는 몇 가지 '속성(attribute)'가 있고 이는 이름과 형 이름으로 구성.
속성은 SQL에서 말하는 열에 해당.
행은 튜플(tuple).

릴레이션은 튜플의 집합.
릴레이션에 대한 연산이 집합에 대한 연산에 대응됨. (관계대수)

  • 하나 이상의 관계를 바탕으로 연산
  • 연산한 결과, 반환되는 것 또한 관계
  • 연산을 중첩 구조로 실행해도 상관없음

관계형 모델과 SQL

  • 합집합, UNION
  • 차집합, EXCEPT
  • 교집합, INTERSECT
  • 곱집합
  • 선택, WHERE
  • 투영, SELECT
  • 결합, JOIN

데이터베이스 설계

데이터베이스 설계

데이터베이스 설계

데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것.
테이블의 이름이나 열, 자료형을 결정하는 것.
테이블 정의에만 그치지 않음.

논리명과 물리명

물리명의 경우 CREATE TABLE 명령으로 테이블을 작성할 때 사용하는 이름. 변경 불가.
논리명은 해당 테이블을 실제로 부를 때 사용하는 이름. 변경 가능.

테이블 정의서 사례
열명자료형NULL기본값
상품코드CHAR(4)No
상품명VARCHAR(30)Yes
가격INTEGERYes

열명논리명자료형NULL기본값
item_code상품코드CHAR(4)No
item_name상품명VARCHAR(30)Yes
price가격INTEGERYes

고정길이와 가변길이

데이터베이스의 열에 저장할 수 있는 크기는 의외로 작음. VARCHAR 형으로 지정할 수 있는 최대 크기는 기껏해야 수천 바이트. 조금 큰 파일을 저장하려면 LOB (Large Object)형을 사용. 다만, LOB는 인덱스를 지정할 수 없음.

기본키

AUTO_INCREMENT 는 자동 증가 열. 이 경우 PRIMARY KEY 또는 UNIQUE로 유일성을 지정해야 함.

ER 다이어그램

ER(Entity Relationship).
엔티티, 개체는 테이블 또는 뷰를 의미.

ER 다이어그램의 개체

상품코드
상품명
메이커코드
가격

연계를 표시할 때는 서로 몇 개의 데이터 행과 연관되는지, 즉 몇 대 몇의 관계를 가지는지를 숫자나 기호로 나타낼 수 있음.

  • 일대일
  • 일대다
  • 다대다
    외부참조제약(외부키 제약)으로 지정되는 경우가 있음.
profile
하지만 저는 이겨냅니다. 김서영이죠?

0개의 댓글