반응형
[MsSQL] 쿼리튜닝 - Join Hint와  Leading Table
DATABASE/MsSQL2024. 12. 28. 18:09[MsSQL] 쿼리튜닝 - Join Hint와 Leading Table

쿼리 튜닝쿼리를 튜닝하다보면 여러 상황을 만나게 되는데, 그 중에 MsSQL쿼리의 Join에 대한 힌트들에 대해서 간단하게 소개해보도록하겠다. 사실 Oracle 쿼리튜닝 책만 읽어서 MsSQL에 대해서 자세하게 모르고 있었는데, 최근 사내에서 운영중인 MsSQL의 쿼리에 문제들이 있어 튜닝을 해야했었다. 팀장님이 잠시 자리를 비운사이 문제의 쿼리를 확인하고 조치하려했으나, 확인까지만하고 어떻게 조치해야하나 고민을 하며 자신있게 해결하지 못하였다. 팀장님이 돌아오신 후 Inner Loop Join으로 바꿔서 튜닝을 하라 라고 말씀하셨는데, 정확히 힌트에 대해 알지 못하다보니 자신있게 한다고 말을 못 했던게 많은 아쉬움으로 남는다. 조금 다른이야기였지만, 아무튼 Join에 대한 힌트들에 대해서 소개해보도록 ..

[PostgreSQL] PG17 설치의 모든 것 - Data / Wal 분리부터 환경변수까지
DATABASE/PostgreSQL2024. 12. 21. 21:04[PostgreSQL] PG17 설치의 모든 것 - Data / Wal 분리부터 환경변수까지

PostgreSQL 설치의 모든 것새롭게 요즘 배우고 있는 데이터베이스 PostgreSQL이다.오픈소스의 DBMS이다보니 새로운 버전이 매년 나오고, 설치부터 세팅까지 직접해줘야한다는 불편함이 있다. 심지어 기존에 사용하던 CentOS7이 EOS가 되기에 새로운 Linux 버전인 Rocky 9 를 OS로 하여 PostgreSQL을 설치해 보았다. PostgreSQL 17버전을 설치하는 방법을 소개하며,PG의 인스턴스의 디렉토리를 OS와 분리된 다른 영역에 설치하는 방법Wal 디렉토리를 분리하여 심볼릭 링크를 설정하는 방법기본적으로 편의를 위한 환경변수를 설정하는 방법 등에 대해 소개해 보도록 하겠다. PostgreSQL Install원하는 PostgreSQL 버전의 설치를 위해 공식 홈페이지에 접속한다...

DATABASE/Databse2024. 12. 7. 17:54[Database] WAL 이란? - 데이터 쓰기의 이해와 WAL을 쓰는 이유

WAL (Write-Ahead Logging)Write-Ahead Logging 즉, 로그 먼저 쓰기 라고 할 수있는 WAL은 데이터베이스의 쓰기를 빠르게 완료하며, 데이터의 무결성과 일관성 유지에 매우 큰 역할을 한다. WAL은 어떻게 데이터 쓰기를 빨리 할 수 있으며, 어떤 부분에서 무결성과 일관성 유지에 도움을 주는지 간략하게 설명해보도록 하겠다. Data Write 란?데이터베이스에 데이터를 변경하면, 저장되어있는 해당 디스크의 값을 바꿔주어야한다. 삽입과 삭제도 마찬가지다. 데이터베이스 성능에 가장 큰 영향을 주는 것이 물리적인 디스크 I/O 인데,과연 데이터 하나 조그마한 것이 바뀔 때마다 디스크 I/O가 발생하면 빠를 수 있겠는가. 원초적인 이야기로 돌아가서 전반적인 데이터베이스의 구조와 엔..

DATABASE/Databse2024. 11. 25. 19:06[DBA] 여러 DBMS 마다의 DBA의 중점 역할 차이

DBA - DATABASE ADMINISTRATORDBA란 무엇일까?항상 고민하고 어디까지가 내 일인가에 대해서 의문을 품으며 일을 하고있는 것 같다. 물론 회사마다 팀마다 느낌이 조금씩 다르겠지만, 뭔가 명확하지 않고 시키면 다하는 듯한 느낌이 들때가 많다.DBA가 무엇인가에 대해서는 예전에 적어둔 글이 있는데, 지금 다시 읽어보면 그게 맞을까? 싶다 DBA - 데이터베이스 관리자(DataBase Administrator)Intro 안녕하세요. 초보 DBA 다뉴입니다. Database 관련 글을 쓸 때면, 초보 DBA 라는 말로 저를 소개하곤 하는데요. 관련 직무에 종사한지 5년이 넘었지만, 이제야 본격적으로 DBA 직무를 맡게 되어 그da-new.tistory.com우리 회사의 우리팀은 여러가지 데이..

[Oracle] 오라클 종료 - Shut Down Option
DATABASE/Oracle2024. 11. 22. 13:35[Oracle] 오라클 종료 - Shut Down Option

Oracle Shut DownOracle Database를 종료할때 사용 할 수 있는 4가지의 ShutDown 옵션에 대해서 소개해 보도록 하겠다.각 옵션별로 세션의 작업과 데이터의 무결성 그리고 속도에 차이가 있으므로 필요에 맞게 사용하는 것이 중요하다.옵션설명NORMAL새로운 연결 불가, 기존 세션이 완료 될 때까지 대기IMMEDIATE기존 세션 강제 종료 및 트랜잭션 롤백TRANSACTIONAL새로운 연결 불가, 트랜잭션이 종료 될 때 까지 대기ABORT트랜잭션 롤백 없이 데이터베이스 종료 각 옵션에 대해 자세하게 하나씩 알아보도록 하자.NORMALSHUTDOWN NORMAL; 오라클 데이터베이스를 종료하는데 가장 안전한 방식이다.새로운 연결을 허용하지 않으며, 기존의 연결을 각각 다 종료 할 때 ..

[Oracle] 프로시저 내에서 DDL 실행하기 - Create, Drop, Atler, Truncate, CTAS
DATABASE/Oracle2024. 11. 21. 09:52[Oracle] 프로시저 내에서 DDL 실행하기 - Create, Drop, Atler, Truncate, CTAS

Procedure 내에서 DDL 실행Oracle의 프로시저 내에서는 DDL문을 바로 실행 할 수 없다.create or replace procedure UP_BAN_TEST isbegin create table XTMP_DDL_TABLE (t_no number(10));end;위와 같은 프로시저를 생성하면, 컴파일 시 아래와 같은 오류가 발생한다. (Error: PLS-00103) Oracle의 프로시저는 컴파일 시 문법적 오류를 확인하며 실행 계획을 미리 정하는데, DDL은 실제 런타임에만 실행이 가능하여 실행 계획을 미리 정할 수 없어 오류가 발생하게 된다. 동적 쿼리 실행프로시저 내에서 DDL문을 실행하기 위해서는 동적쿼리를 실행하는 방식으로 작성하여 실행하도록한다. 주로 CTAS, CREAT..

[MsSQL] SET STATISTICS 옵션을 활용 - 실제 실행 계획 상세보기
DATABASE/MsSQL2024. 11. 20. 10:58[MsSQL] SET STATISTICS 옵션을 활용 - 실제 실행 계획 상세보기

실제 실행계획 상세보기MsSQL 에서는 실행계획을 볼 수 있는 방법이 여러가지 있지만.대부분 그래프 이미지로 밖에 볼 수 없다. 기존의 실행계획 표시인 텍스트와 I/O 관련정보 등을 손쉽게 볼 수 있는 옵션에 대해서 소개하도록 하겠다. SET STATISTICSSET STATISTICS 는 MsSQL에서 쿼리의 성능분석/최적화 등에 도움을 주는 옵션이다.해당 옵션은 세션별로 적용을 하여 해당 세션의 쿼리를 분석할 수 있게 도와준다. 주로 실제 쿼리의 실행계획에 대해 아래의 옵션 3개를 활성화하여 확인한다.SET STATISTICS PROFILE ONSET STATISTICS IO ONSET STATISTICS TIME ON 해당 옵션을 활성화 하고 원하는 쿼리를 실행하여 쿼리가 실행 완료되면 실행계획과 ..

DATABASE/Databse2024. 11. 18. 10:12[Database] MVCC (Multi-Version Concurrency Control) - 다중 버전 동시성 제어

MVCC (Multi-Version Concurrency Control)다중 버전 동시성 제어란? 데이터베이스에서 동시성을 제어하고 데이터의 일관성을 유지하기 위한 기법 중 하나이다.데이터에 변경사항의 버전을 보관하여, 여러 버전의 데이터를 저장해두어 여러 트랜잭션간의 읽기 / 쓰기 작업이 동시에 수행 될 수 있도록 하는 방법이다. 트랜잭션의 읽기 작업이 쓰기 작업을 방해하지 않고, 일관된 데이터를 읽을 수 있게 하는 방식이 말 그대로 데이터의 다중 버전을 통한 동시성 제어이다. MVCC 주요 개념 1. 스냅샷 읽기 - 트랜잭션이 시작된 시점의 버전의 데이터를 기반으로 동작한다. - 다른 트랜잭션의 변경사항이 커밋되기 전 이라면, 그 데이터는 해당 시점의 버전에 포함되지 않는다.2. 다중 버전 관리 - ..

[MsSQL] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기
DATABASE/MsSQL2024. 11. 16. 09:34[MsSQL] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기

Procedure 내용 찾기오라클의 프로시저의 특정 내용을 찾는 쿼리를 알아보았었다.[Oracle] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기MsSQL도 이와 같은 쿼리를 만들 수 있는데, 해당 쿼리는 트리거나 함수 등에서 사용은 못하고 프로시저의 내용만 찾는 쿼리이다. Queryuse [데이터베이스 명]select name, object_definition(object_id) as txt from sys.PROCEDURES where object_definition(object_id) like '%[프로시저에서 찾고 싶은 내용]%' 위 쿼리를 사용하면 해당 데이터베이스 내의 프로시저 중 내가 찾고싶은 내용을 포함한 프로시저를 찾을 수 있다.데이터베이스 별로 검색해야하기에 ..

[Oracle] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기
DATABASE/Oracle2024. 11. 15. 10:01[Oracle] 프로시저 내용 찾기 - 특정 테이블이 사용되는 프로시저 찾기

Procedure 내용 찾기특정 테이블이 사용되는 프로시저를 찾거나, 특정한 구문이 포함된 프로시저를 찾아야 할 때가 있다.간단한 쿼리로 해당 프로시저를 찾을 수 있으며, 프로시저가 아닌 Function / Trigger /Package 등의 내용을 찾을때도 사용 할 수 있다. Queryselect a.object_id, a.object_name, a.object_type, b.line, b.text from DBA_OBJECTS a inner join DBA_SOURCE b on a.object_name = b.name where a.object_type = 'PROCEDURE' -- FUNCTION / TRIGGER / PACKAGE and a.o..

반응형
image