이유's Programming/DBMS

    transaction log 파일

    트랜잭션 로그 파일 1) 트랜잭션 로그는 정말 SQL 서버에서 매우 중요한 역할을 한다. [ 트랜잭션 로그] 1. SQL Server 는 변경할 데이터 페이지를 메모리(Buffer cache) 로 가져온 후 메모리의 데이터를 변경한다. 이미 메모리에 있다면 이것을 변경한다.---- 이 과정에서 하드 파싱과 소프트 파싱이 제대로 나뉘는 것 같다.  2. 메모리의 데이터를 변경한 파일을 이제 로그 파일에 기록한다. 데이터 파일에 기록하기 전에 로그부터 기록한다 하여 미리쓰기 (Write-ahead log) 라 한다.- 왜 write ahead log 일까???  3. 체크포인트 프로세스가 반복적으로 수행되면서 데이터파일과 메모리 내용이 다른 데이터 페이지를 데이터 파일에 반영한다.  4. 만일 시스템이 재시..

    metadata - blocking 된 이슈

    메타데이터가 이제 blocking 이 되는 경우 시스템 데이터베이스master: 데이터베이스의 메타데이터와 시스템 구성 정보를 저장합니다.SQL 서버의 이제 환경정보, 로그인 정보, 관리되는 모든 데이터베이스에 대한 정보들을 관리 msdb: SQL Server 에이전트 관련 작업(예: 스케줄러, 경고, 백업 작업 등)을 관리합니다.자동화에 대한 관련된 정보를 저장작업. 스케쥴러 model: 새 데이터베이스를 생성할 때 기본 템플릿 역할을 합니다.tempdb: 임시 데이터와 테이블을 저장하며, SQL Server가 실행될 때마다 초기화됩니다.resource: 읽기 전용 데이터베이스로, 시스템 개체 정의를 저장합니다. SQL Server에서 메타데이터(metadata) 관련 blocking 이슈는 주로 메타..

    SQL server profiler

    SQL server profiler - SQL server profiler 의 경우 - 서버에 부하를 많이 주는 쿼리문을 '고부하' 쿼리문이라고 하고 이를 이제 어떤 쿼리문이 인지 알아야하는데 픞로파일러를 사용하여 고부하 쿼리문을 추출하고 이제 진단을 의뢰해서 이제 튜닝을 진행할 수 있다  - SQL 서버에 부담을 줄 수 있다. * 프로파일러를 사용해서 이제 해당 CPU 올라가는 것* 너무 많은 event 를 띄우면 이제 많은 cpu 가 될 수 있기 때문에 SQL Server profiler 로 이제 할 수 있는 부분에 대한 이제 트레이스- audit - security audit - sessions  [ 데이터베이스 구조 ] - OLTP 와 OLAP 구조 * OLTP 는 주로 트랜잭션 처리를 위한 용도..

    library cache - latch: cache buffers chains

    캐쉬 버퍼 체인에 대한 부분이 이제 latch 라는 과정에서 들수 있다. SQL 문을 실행해서 원하는 결과를 얻으려면 - 블록이 필요하다. 오라클의 경우 버퍼 캐쉬에 블록을 올려놓고 이를 읽어 원하는 결과를 얻어낸다....!  그래서 내가 원하는 볼록이 버퍼 캐시에 있는지 없는지 확인을 이제 원하는 블록을 어떻게 찾을까요?- dba 라고 불리우는 data block adddress 와 블록 종류를 나타내는 class 가 있다. 체인? 체인이란 같은 함수 값을 가진 블록들을 나열한 것이다 . ==> 버퍼캐시에서 원하는 블록을 찾으려는 프로세스는 반드시 cache buffer chairs latch 를 획득해야한다.  동시에 많은 프로세스가 체인에 접근하려면 이 래치에 대한 경합이 발생함 cache buff..

    index 잘 타지 못하는 경우

    [ 인덱스 ] - clustering factor 를 잘 확인하고 cardinality 를 확인해서 이제 이슈를 해결해보자 - 인사정보 조회데이터에서 이제 [이름], [조직명] 에 대한 데이터를 이제 운영    1) 통계정보의 불확실성QueryOptiizer 는 SQL 의 실행계획을 수립하는 과정에서 통계쩡보를 활용한다하지만 통계쩡보 데이터가 테이블에 대한 부정확한 데이터로 구성되어 있으면 이제 인덱스의 사용이 효율적인데도 불구하고 잘못계산된 Cardinality 에 의해 Table full scan 이 효율적인 수행이라고 판단할 수 잇따. 2) 인덱스 컬럼의 데이터 형 변환 Dictionary view 중 all tab columns 에서 확인 가능하다. 이제  toDV 등에 대해서 형변환이 이루어지면..

    database paraellel 관리

    maxDop 이슈 해결 -MAXDOP often reduces duration for CPU-intensive queries. However, excessive parallelism can worsen other concurrent workload performance by starving other queries of CPU and worker thread resources. In extreme cases, excessive parallelism can consume all database or elastic pool resources, causing query timeouts, errors, and application outages.-> excessive parallelism 도 문제가 많음.Whe..

    DBMS 의 구조를 파악해보자

    DBMS 의 구조를 파악해보자

    데이터베이스 관리 시스템(DBMS)의 전체적인 구조는 크게 메모리 구조, 프로세스 구조, 스토리지 구조로 나눌 수 있습니다. 각각의 요소는 DBMS가 효율적으로 데이터를 관리하고 처리하는 데 필수적인 역할을 합니다. Oracle DBMS를 예로 들어 SGA를 포함한 전체적인 데이터베이스 구조를 설명하겠습니다. 1. 메모리 구조 (Memory Structure)데이터베이스의 메모리 구조는 주로 SGA(System Global Area)와 PGA(Program Global Area)로 나눌 수 있습니다. 이 구조는 데이터베이스와 사용자 세션 간의 데이터 교환과 SQL 실행 성능을 최적화하는 데 중요한 역할을 합니다.1-1. SGA (System Global Area)SGA는 데이터베이스 인스턴스에서 공유되는..

    인덱스.. 그래서 어떻게 해야 효율적이야? (필터조건, 액세스 조건)

    인덱스를 설정하는 것은 정말 운영환경에서 중요한 것으로 효율적으로 설정하기 위해서는 반드시 "필터 조건"과 "액세스 조건"을 이해해야 한다.  액세스 조건 - 인덱스 스캔 범위를 결정 필터 조건 -- 인덱스를 설정했는데 원하는 테이블 결곽 나오지 않았을 경우 이제 테이블로 가기 위한 조건이다  \인덱스의 액세스 조건(Access Predicate)과 필터 조건(Filter Predicate)은 데이터베이스에서 인덱스가 사용될 때, 쿼리의 효율성을 결정하는 중요한 요소들입니다. 이 두 가지는 실행 계획에서 인덱스가 어떻게 사용되는지를 설명하며, 옵티마이저가 인덱스 스캔을 통해 데이터를 검색하는 방식과 조건을 나누어 분석할 수 있게 해줍니다.1. 인덱스의 액세스 조건 (Access Predicate)액세스 ..