Zero to Hero
친절한 SQL 튜닝 02
Review 2020. 12. 30. 12:02

소프트 파싱 vs 하드 파싱 1. SQL 파싱, 최적화, 로우 소스 생성 과정을 거쳐 생성한 내부 프로시저를 반복 재사용할 수 있도록 캐싱해 두는 메모리 공간을 라이브러리 캐시(Library Cache)라고 한다. 2. 라이브러리 캐시는 SGA(System Global Area)의 구성요소다. SGA는 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스 하는 데이터와 제오 구조를 캐싱하는 메모리 공간이다. 3. SQL문을 전달하면 DBMS는 파싱 후 해당 SQL이 라이브러리 캐시에 있는지 확인한다. 캐시에 있으면 곧바로 실행 단계로 넘어가지만 캐시 미스가 발생하면 최적화 단계를 거친다. 소프트 파싱 --> 라이브러리 캐시에 SQL이 존재해서 바로 실행단계로 넘어가는 과정 하드 파싱 --> 라이브러리 캐..

친절한 SQL 튜닝 01
Review 2020. 12. 30. 11:48

SQL 최적화 1. SQL 파싱 사용자로부터 SQL을 전달받으면 가장 먼저 SQL 파서(Parser)가 파싱을 진행한다. 파싱 순서 1. 파싱 트리 생성: SQL문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성 2. Syntax 체크: 문법적 오류가 없는지 확인, 예를 들어 사용할 수 없는 키워드를 사용했거나 순서가 바르지 않거나 누락된 키워드가 있는지 확인 3. Semantic 체크: 의미상 오류가 없는지 확인, 예를 들어 존재하지 않는 테이블 또는 칼럼을 사용했는지, 사용한 오브젝트에 대한 권한이 있는지 확인 2. SQL 최적화 옵티마이저(Optimizer)가 역할하는 단계. 옵티마이저는 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행 경로를 생성해서 비교한 후 가장 효율적인 하나..

데이터베이스를 지탱하는 기술 02
Review 2020. 12. 27. 12:56

데이터베이스는 어떤 때에 크래쉬 되는가? 1. 소프트웨어 장애 2. OS 장애 3. 하드웨어 장애 디스크 이중화로 데이터 손실 방지하기 1. 데이터는 보통 HDD에 저장된다. 2. 그러나 HDD는 하드웨어 중에서 가장 고장률이 높은 부품이다. 3. RAID 기술을 이용해 데이터 손실을 방지한다. 4. RAID 구성에 따라 한 개가 망가진 상태에서 방치하면 성능이 크게 저하할 수 있고, 두 번째 HDD가 손상되면 데이터 손실의 위험이 있다. 5. 이런 것을 방지하기 위해 HDD가 손상된 경우에 서비스를 멈추지 않고 새로운 HDD로 교체하여 복구하는 "Hot Swap"이라는 기술도 병용된다. 6. 하지만 근본적으로 RAID만으로는 서비스를 운영하는 것은 충분하지 않다. 장애 원인이 HDD 뿐만이 아니기 때문..

데이터베이스를 지탱하는 기술 01
Review 2020. 12. 27. 12:33

데이터베이스를 사용해야 하는 이유 1. 대량의 데이터 중에서 필요한 것을 빨리 반환할 수 있다. 2. 대량의 데이터를 메모리 내에서만으로는 취급할 수 없다. 3. 장애가 발생했을 때 빠른 복구가 어렵다. 4. 병렬성 제어가 어렵다. 5. 데이터 무결성을 보장하는 것이 어렵다. 인덱스(Index) 1. 전체 검색(Full Scan)은 대량의 데이터에 적합하지 않다. 2. 원하는 위치까지 순식간에 도달하는 방법 생각하기 방법 1 사용자 정보를 "고정 길이"로 관리하기 고정 길이 파일로 관리하면 ID에 대해서 파일 위치가 기계적으로 단순히 정해지기 때문에 바로 목표로 하는 데이터에 다다르게 된다. 그러나 불필요하게 소비되는 공간이 너무 많이 실용적이지 않다. 구체적인 문제점 1. 고정 길이 파일이 모든 사용자..