본문 바로가기

RDBMS

(27)
[Oracle] Select 쿼리 튜닝 순서 쿼리 튜닝은 온라인 SQL이냐 대용량 배치 SQL이냐에 따라 튜닝방법이 달라집니다. 하지만 대용량 배치는 프로그램 수가 많지 않은 편입니다. 온라인 SQL 튜닝에서도 관점에 따라 튜닝방법이 다르게 됩니다. 예를 들어 Peak Time에 Insert 문이나 Update 문, Select 문이 집중적으로 몰릴 때의 튜닝 방법이 있고, 단순히 SQL 하나에 집중해서 응답시간을 최소화하는 튜닝방법이 있습니다. 본 포스팅은 일반적으로 가장 많은 튜닝 사례에 해당하는 Select문 튜닝방법론을 기술한 포스팅입니다. 학습 용도로 작성한 포스팅으로 본 포스팅의 원본 출처는 Science of Database 블로그 SQL 튜닝방법론 입니다. 온라인 Select문 튜닝 방법론온라인 SQL의 튜닝방법은 여러 가지가 있을 ..
[대용량DB] 데이터 테이블의 종류 및 특성 본 포스팅은 학습 용도로 작성되었습니다. 원본 출처는 http://blog.daum.net/hadmond/7 입니다. DW 시스템 구축시, 구축 대상이 되는 업무계(기간계)시스템의 테이블(table) 종류와 그 특성을 올바로 파악하고 대응하는 것이 중요합니다. 왜 중요한지는 차차 설명이 될것이며, 우선 원천 테이블의 종류와 그 특성에 대해 살펴보겠습니다. 여기서 테이블 종류는 관계형 데이터베이스 이론에 근거한 분류이거나 또는 관련 데이터베이스 솔루션(oracle, sysbase, tibero 등)에서의 테이블 종류가 아닌 업무적 관점에서의 테이블 종류를 말하는 것입니다. 업무관점의 데이터 테이블 종류 1. 원장성 테이블(Master Table) 1) 구성형태업무의 핵심 개체(entity)들로서 주로 업무..
[대용량DB] 여부 컬럼 처리 데이터 모델 작성시, 많이 나타나는 속성 중에 하나가 여부속성 즉 여부컬럼입니다. 여부 컬럼은 테이블상에 보통 _YN, _FLAG로 끝나는 컬럼입니다. 모델링을 할때마다 여부 컬럼을 어떻게 구현해야할까요? 항상 고민거리가 되는 부분입니다. 심한 경우 한 테이블에 여부 컬럼이 백여개 이상인 것들도 존재합니다. 상황에 따라 모델 구성이 제각각으로 이루어질 수 있다고 하지만, 가만히 그 내부를 살펴보면 몇가지 규칙 및 패턴이 있습니다. 이제 모델링 프로젝트에 투입시에 매번 똑같은 고민을 하지말고 패턴을 잘 적용하여 좀 더 알차게 적용해보겠습니다. 여부 컬럼들은 주로 핵심 혹은 메인 테이블에서 발생하곤 합니다. 어떤 여부 컬럼들이 있을까 한번 나열해보겠습니다. 아래는 상품 테이블에서 봄직한 속성들입니다. 사용여..
[MySQL] MySQL 로그 남기기 서버를 운영하면서 로그 파일의 의미는 아주 중요합니다. 문제가 발생했을 때, 그 원인 파악을 조금 더 쉽게 하도록 하여 해결 시간을 단축할 수 있도록 도와줍니다. 아래 내용은 MySQL 운영시 로그 정보를 저장하는 방법입니다. 1. 기본 로그 설정 - 리눅스 [mysqld] # 에러 로그 설정 log-error=/로그저장경로/error.log # 쿼리 로그 설정 log=/로그저장경로/query.log # 바이너리 로그 설정 log-bin=mysql-bin # 슬로우 쿼리(slow query) 로그 설정 log-slow-queries=/로그저장경로/mysql-slow.log long_query_time=5 # UPDATE 쿼리 설정 log-update=update_logs 2. 쿼리 로그 리눅스 환경에서는..
[Real MySQL] 실행 계획 분석 시 주의사항 지금까지 MySQL에서 쿼리를 처리하는 방식이나 실행 계획에 대해 살펴보겠습니다. 쿼리의 실행 계획만으로도 상당히 내용이 많아서 모두 기억하자면 상당히 힘들 것입니다. 그래서 여기서는 쿼리의 실행 계획을 확인할 때 각 칼럼에 표시되는 값 중에서 특별히 주의해서 확인해야 하는 항목만 간략하게 정리했습니다. Select_type 칼럼의 주의 대상 DERIVEDDERIVED는 FROM 절에 사용된 서브 쿼리로부터 발생한 임시 테이블을 의미합니다. 임시 테이블은 메모리에 저장될 수도 있고 디스크에 저장될 수도 있습니다. 일반적으로 메모리에 저장하는 경우에는 크게 성능에 영향을 미치지 않지만, 데이터의 크기가 커서 임시 테이블을 디스크에 저장하면 성능이 떨어집니다. UNCACHEABLE SUBQUERY쿼리의 FR..