처리율이 성능에서 중요한 이유는 시스템의 자원 용량을 결정하는 요인이기 때문. 처리율이 높은 시스템일수록 'CPU나 메모리 같은 하드웨어 자원이 매우 필요하다는 것'을 의미.
동시 실행 처리 수가 증가할수록 준비해야 할 자원도 증가하며 한 가지 자원이라도 한계에 이른 시점에서 성능이 나빠지기 시작.
즉, 응답 시간이 상승하기 시작하고, 반대로 처리율이 떨어지기 시작.
최초로 한계에 이른 자원을 '버틀넥 포인트', 병목 이라고 함.
이처럼 처리율과 응답 시간이 극단적으로 나빠지기 시작하는 처리량을 한계점 이라 함.
돌발형 액세스 집중에 대응하는 수단의 한 가지, '클라우드'.
클라우드는 가상화를 기반으로 자원량을 유연하게 변동할 수 있는 기술, 물리 자원의 임대 모델.
스케일 업, 스케일 아웃이 예전과 비교하면 쉬우며, 짧은 시간 내에 실시할 수 있음.
데이터베이스는
1. 취급하는 데이터 양이 가장 많다
2. 자원 증가를 통한 해결이 어렵다
의 경우, 병목이 됨.
데이터베이스는 SQL 문을 받으면 문법적으로 잘못된 부분이 없는지를 점검. 이 동작을 파스(Parse)라고 함. 이 역할을 담당하는 내부 프로그램은 파서(Parser).
SQL문에 필요한 데이터를 얻기 위한 방법으로 데이터베이스는 어떤 계획으로 데이터에 도달할 지를 결정해야 함. 이 계획을 실행계획 또는 액세스 플랜이라 부름. 실행계획을 결정하는 내부 프로그램을 옵티마이저 라고 부름.
데이터베이스가 더 효율적인 실행계획을 만들 수 있다고 판단하기 때문.
통계정보란, 옵티마이저가 실행계획을 세울 때 참조하는 정보.
1. 테이블의(대강의) 행수/열수
2. 각 열의 길이와 데이터형
3. 테이블의 크기
4. 열에 대한 기본키나 NOT NULL 제약의 정보
5. 열 값의 분산과 편향
show table status;
show index from 테이블명;
analyze table 테이블명;
관계형 모델의 릴레이션은 SQL에서 말하는 테이블에 해당.
관계형 모델의 릴레이션에는 몇 가지 '속성(attribute)'가 있고 이는 이름과 형 이름으로 구성.
속성은 SQL에서 말하는 열에 해당.
행은 튜플(tuple).
릴레이션은 튜플의 집합.
릴레이션에 대한 연산이 집합에 대한 연산에 대응됨. (관계대수)
데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것.
테이블의 이름이나 열, 자료형을 결정하는 것.
테이블 정의에만 그치지 않음.
물리명의 경우 CREATE TABLE 명령으로 테이블을 작성할 때 사용하는 이름. 변경 불가.
논리명은 해당 테이블을 실제로 부를 때 사용하는 이름. 변경 가능.
열명 | 자료형 | NULL | 기본값 |
---|---|---|---|
상품코드 | CHAR(4) | No | |
상품명 | VARCHAR(30) | Yes | |
가격 | INTEGER | Yes |
열명 | 논리명 | 자료형 | NULL | 기본값 |
---|---|---|---|---|
item_code | 상품코드 | CHAR(4) | No | |
item_name | 상품명 | VARCHAR(30) | Yes | |
price | 가격 | INTEGER | Yes |
데이터베이스의 열에 저장할 수 있는 크기는 의외로 작음. VARCHAR 형으로 지정할 수 있는 최대 크기는 기껏해야 수천 바이트. 조금 큰 파일을 저장하려면 LOB (Large Object)형을 사용. 다만, LOB는 인덱스를 지정할 수 없음.
AUTO_INCREMENT 는 자동 증가 열. 이 경우 PRIMARY KEY 또는 UNIQUE로 유일성을 지정해야 함.
ER(Entity Relationship).
엔티티, 개체는 테이블 또는 뷰를 의미.
상품코드 |
---|
상품명 메이커코드 가격 |
연계를 표시할 때는 서로 몇 개의 데이터 행과 연관되는지, 즉 몇 대 몇의 관계를 가지는지를 숫자나 기호로 나타낼 수 있음.