RealMySQL(8)
-
16장 복제
문제 1. 레플리카 서버를 구축하는 목적 4가지를 말씀해주세요스케일 아웃데이터 백업데이터 분석데이터 지리적 분산문제 2. 바이너리 로그 파일 위치 기반 복제란?레플리카 서버에서 소스 서버의 바이너리 로그 파일명과 파일 내에서의 위치로 개별 바이너리 로그 이벤트를 식별해서 복제가 진행되는 형태문제 3. GTID를 사용하는 복제 환경에서 안전하지 않은 쿼리 패턴은?트랜잭션을 지원하는 테이블과 지원하지 않는 테이블을 함께 변경하는 쿼리 혹은 트랜잭션create table … select … 구문트랜잭션 내에서 creat temporary table, drop temporary table 구문 사용소스 서버에서 레플리카 서버로 복제되어 적용될 때 단일 트랜잭션으로 처리되지 않을 수 있음GTID는 트랜잭션 단위로..
2024.07.01 -
14장 스토어드 프로그램
문제 1. 스토어드 프로시저의 파라미터 종류와 차이점을 말해주세요.IN 타입 : 입력 전용 파라미터OUT 타입 : 출력 전용 파라미터INOUT : 입출력 모두 가능문제 2. 일회성 이벤트를 등록하려면 ON SCHEDULE (A)를 사용하고, 반복성 이벤트를 등록하려면 ON SCHEDULE (B)를 사용한다.(A) : AT (B) : EVERY문제 3. 스토어드 프로그램의 입력 파라미터, DECLARE로 정의한 로컬 변수, 테이블 칼럼이 같은 이름을 가질 경우 우선순위를 말해주세요.DECLARE로 정의한 로컬 변수스토어드 프로그램의 입력 파라미터테이블 칼럼
2024.07.01 -
13장 파티션
문제 1. 파티션을 사용하는 이유단일 INSERT와 단일 또는 범위 SELECT의 빠른 처리데이터의 물리적인 저장소를 분리이력 데이터의 효율적인 관리문제 2. 다음과 같이 생성된 테이블에 입사 일자가 2001년부터 2005년 이하인 레코드를 가지는 파티션을 추가하는 SQL을 작성해주세요. CREATE TABLE employees ( id INT NOT NULL, first_name VARCHAR(30), last_name VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01’, ... ) PARTITION BY RANGE( YEAR(hired) ) ( PARTITION p0 VALUES LESS THAN (1991), ..
2024.07.01 -
10장 실행계획
문제 1. MySQL 8.0부터 인덱스되지 않은 칼럼들에 대해서도 데이터 분포도를 수집해서 저장하는데 이 정보를 무엇이라고 합니까?히스토그램문제 2. 일부 파티션만 접근해서 읽었을 때, 실행 계획에서 type이 ALL이라고 뜨는 이유는 무엇인가요파티션은 물리적으로 개별 테이블처럼 별도의 저장 공간을 가지기 때문에 해당 파티션을 풀 스캔할 경우 type이 ALL로 나옵니다.문제 3. 실행 계획에서 rows 칼럼이 나타낸 것은 무엇인가요?실행 계획의 효율성 판단을 위해 예측했던 레코드 건수쿼리를 처리하기 위해 얼마나 많은 레코드를 읽고 처리해야 하는지를 의미함문제 4. 이 쿼리는 salary 칼럼으로 만들어진 인덱스를 사용할 수 없습니다. 그 이유와 인덱스를 사용할 수 있도록 튜닝한 쿼리를 알려주세요.sel..
2024.07.01 -
9장 옵티마이저와 힌트
문제 1. 정렬해야 할 레코드 수가 소트 버퍼로 할당된 공간보다 큰 경우 어떻게 처리하나요?메모리의 소트 버퍼에서 정렬을 수행하고 그 결과를 임시로 디스크에 기록다음 레코드를 가져와서 다시 정렬해서 반복적으로 디스크에 임시 저장각 버퍼 크기만큼 정렬된 레코드를 다시 병합하면서 정렬 수행 ⇒ 멀티 머지문제 2. P2. 투 패스 정렬 방식을 사용하는 경우는?레코드의 크기가 max_length_for_sort_data 시스템 변수에 설정된 값보다 클 때BLOB이나 TEXT 타입의 컬럼이 SELECT 대상에 포함될 때문제 3. 조인 버퍼를 사용하면 정렬 순서가 흐트러질 수 있는 이유를 설명해주세요.조인 버퍼를 사용할 경우 드라이빙 테이블에서 조건에 맞는 레코드들을 조인 버퍼에 저장 후 드라이븐 테이블을 읽고 조..
2024.07.01 -
8장 인덱스
문제 1. (dept_no, emp_no) 로 구성된 인덱스가 있을 때 select * from employees where emp_no > 2000; 을 실행했더니 인덱스 풀 스캔 방식을 사용했습니다. 그 이유는 무엇일까요.조건절에 첫번째 칼럼이 아닌 두번째 칼럼을 사용했기 때문에 인덱스 풀 스캔 방식을 사용문제 2.(dept_no, emp_no) 로 구성된 인덱스가 있을 때 select * from employees where emp_no > 2000; 을 실행했더니 인덱스 스킵 스캔 방식을 사용했습니다. dept_no 의 유니크 값은 {1, 2} 입니다. 옵티마이저는 내부적으로 어떤 최적화 과정을 실행했을지 설명해주세요.select * from employees where dept_no = 1 an..
2024.07.01