본문 바로가기

전공/DB

[CS면접 질문 정리] 데이터베이스 📌 DBMS는 무엇인가요? - DBMS는 데이터베이스 관리 시스템을 나타냅니다. 사용자가 데이터에 관한 정보를 가능한 한 효율적이고 효과적으로 구성, 복원 및 검색 할 수 있도록하는 응용 프로그램 모음입니다. 널리 사용되는 DBMS 중 일부는 MySql, Oracle 등입니다. 📌 데이터베이스 종류 별로 설명해 주세요 - 데이터를 보존하는 형식에 따라 나뉩니다. - 계층형 데이터 베이스는 데이터를 폴더와 파일 등 계층 구조로 데이터를 저장하는 방식입니다. 하드디스크가 예시로 있고, 최초로 등록된 데이터베이스 타입입니다. - 관계형 데이터베이스는 데이터를 2차원의 표 형식으로 관리하는 데이터베이스입니다. 데이터를 column과 row로 구성된 하나 이상의 테이블로 나타내며, primary key가 각 ro.. 더보기
[데이터베이스] 전공 필기 시험 정리 ✔️ 데이터베이스 종류 데이터를 보존하는 형식에 따라 나뉨 1. 계층형 데이터베이스 데이터를 폴더와 파일등의 계층 구조로 데이터를 저장하는 방식 하드디스크나 DVD 파일시스템, IMS 최초로 등록된 데이터베이스 타입 2. 관계형 데이터베이스 데이터를 2차원 표 형식으로 관리하는 데이터베이스 데이터를 Column과 row를 이루는 하나 이상의 테이블로 정리해 Primary key가 각 row를 식별 row는 레코드나 튜플로 부르며, 일반적으로 각테이블[관계]는 하나의 엔티티 타입을 대표 Column은 엔티티 종류의 인스턴스의 속성이 되는 값을 대표 예 : Oracle, MySQL, Access 3. 객체지향 데이터베이스 '가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것'이 객체지향 데이터베이스 .. 더보기
MySQL튜닝6) 튜닝 심화 예제 1. 실습 데이터 세팅 - 실습 데이터 URL : https://github.com/7ieon/SQLtune - 실습 데이터 정보 2. JOIN / 서브쿼리 변형하여 SQL문 재작성으로 착한 쿼리 만들기 1) 처음부터 모든 데이터를 가져오지 않기 # 쿼리문 - 사원번호가 10001 ~ 10100번까지인 사원들의 평균연봉, 최고연봉, 최저연봉을 구하는 쿼리 # AS_IS -- 3.593 sec / 0.000 sec select 사원.사원번호, 급여.평균연봉, 급여.최고연봉, 급여.최저연봉 from 사원, ( select 사원번호, round(avg(연봉),0) as 평균연봉, round(max(연봉),0) as 최고연봉, round(min(연봉),0) as 최저연봉 from 급여 group by 사원번호 .. 더보기
MySQL튜닝5) 튜닝 기본 예제 1. 실습 데이터 세팅 - 실습 데이터 URL : https://github.com/7ieon/SQLtune - 실습 데이터 정보 2. SQL문 단순 수정으로 착한 쿼리 만들기 1) 사원번호가 1100으로 시작하면서 사원번호가 5자리인 사원 정보 출력 # AS_IS -- 0.329 sec / 0.000 sec SELECT * FROM 사원 WHERE SUBSTRING(사원번호,1,4) = 1100 AND LENGTH(사원번호) = 5 # Tuning - 기본키인 사원번호 접근 시 WHERE 절에서 가공하여 접근 => Table Full Scan이 발생 (type = 'ALL') # TO_BE -- 0.000 sec / 0.000 sec SELECT * FROM 사원 WHERE 사원번호 BETWEEN 11.. 더보기
MySQL튜닝4) 실행계획 살펴보기2 1. Extra 컬럼 - SQL문을 어떻게 수행할 것인지에 대한 추가 정보를 보여주는 항목 - 부가 정보들은 세미클론(;)으로 구분하여 여러 가지 정보를 나열할 수 있으며 30여 가지 항목으로 정리할 수 있다. - MySQL에서는 extra에서 수행되는 정보가 모두 출력되지는 않으므로 참고하는 수준으로 해석하는 것이 좋다. # const row not found - 쿼리의 실행 계획에서 const 접근 방식으로 테이블을 읽었지만 실제로 해당 테이블에 레코드가 1건도 존재하지 않았을 경우 # distinct - JOIN시 필요한 것만 JOIN했고 중복된 값 제거한 경우 EXPLAIN SELECT DISTINCT d.dept_no FROM departments d, dept_emp de WHERE de.de.. 더보기
MySQL튜닝3) 실행계획 살펴보기1 1. 실행계획 (MySQL Explain) -SQL문으로 요청한 데이터를 어떻게 불러올 것인지에 관한 계획(경로) - MySQL 튜닝에서 가장 중요한 것은 쿼리와 스키마 최적화이다. 스키마 설계는 한번 진행되면 그 테이블을 사용하는 모든 쿼리에 영향을 주기 때문에 좀처럼 변경하기 힘들지만 쿼리는 해당 쿼리만 수정하면 되므로 변경하기 쉽다. Slow Query를 없애는 것은 성능을 향상 시키기 위한 매우 중요한 수단이므로 어플리케이션의 성능을 향상 시키고 싶다면 우선적으로 쿼리의 튜닝을 검토해봐야 한다. 성능 진단의 가장 첫걸음은 실행한 SQL이 DB에서 어떻게 처리되는 지를 파악하는 것이다. 사람이 이해할 수 있는 언어로 구성된 SQL을 실행하도록 DB에 명령을 내리면 DB는 내부적으로 SQL 파싱 (문.. 더보기
MySQL튜닝2) SQL 튜닝 용어 이해하기2 1. 오브젝트 스캔 종류 DB의 오브젝트 스캔 종류 테이블 스캔: 인덱스를 거치지 않고 테이블의 데이터로 직접 접근 인덱스 스캔: 인덱스를 통해 테이블 데이터에 접근 1. 테이블 스캔 / 테이블 풀 스캔 (Table Full Scan) 인덱스를 거치지 않고 테이블 데이터에 직행하여 처음과 끝까지 스캔하는 방식 WHERE 조건문을 기준으로 활용할 인덱스가 없는 경우, 전체 데이터 대비 대량의 데이터가 필요할 때 사용 대량의 데이터에 접근할 때 테이블 풀 스캔을 쓰면, 인덱스를 통한 랜덤 액서스가 발생하지 않아 이점이 있음 2. 인덱스 스캔 인덱스 풀 스캔 (Index Full Scan) 테이블에 접근하지 않고, 인덱스 내의 열만을 참조하여 처음부터 끝까지 스캔하여 데이터에 접근하는 방식 인덱스는 테이블의 .. 더보기
MySQL튜닝1) SQL 튜닝 용어 이해하기 1. MySQL 서버 = MySQL 엔진 + 스토리지 엔진 (물리 엔진 용어) MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 나눠볼 수 있다. MySQL 엔진은 클라이언트로부터 오는 요청 처리(요청된 SQL 문장을 분석, 최적화, ...)를 담당하고, 스토리지 엔진은 실제 데이터를 디스크 스토리지에 저장하거나 조회하는 부분을 담당한다. 1) MySQL 엔진 사용자가 요청한 SQL 문을 넘겨받은 뒤 SQL 문법 검사와 적절한 오브젝트 활용 검사를 하고, SQL 문을 최소 단위로 분리하여 원하는 데이터를 빠르게 찾는 경로를 모색하는 역할을 수행한다. 또한 스토리지 엔진으로부터 전달받은 데이터 중 불필요한 데이터는 제거하거나 가공 및 연산하는 역할을 한다. 즉, SQL 문의 시작 및 마무리 단계에.. 더보기