이유's Programming
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..
JWT token 동작 방법
스프링 시큐리티에서 이제 JWT Token 을 가지고 동작을 진행할 때 어떻게 수행할 수 있을까? JWT(JSON Web Token)는 로그인 후 인증 상태를 유지하기 위해 사용되는 토큰입니다. 사용자는 로그인 성공 시 서버로부터 JWT를 발급받으며, 이 토큰은 사용자가 이후 서버에 요청을 보낼 때마다 인증을 위해 사용됩니다. JWT를 로그인 이후에도 계속 들고 있는지에 대한 구체적인 내용은 다음과 같습니다:1. JWT의 발급과 저장발급: 사용자가 로그인에 성공하면 서버는 사용자 정보를 기반으로 JWT를 생성합니다. 이 토큰에는 인증 관련 정보(예: 사용자 ID, 권한 등)와 만료 시간(exp) 등이 포함됩니다.저장: 클라이언트는 이 JWT를 저장하여 이후 요청에서 사용합니다.일반적으로 저장되는 위치:브..
Spring security 동작 과정에 대해서 공부
Spring Security 과정에 대해 공부 Spring Security는 Spring과는 별개로 작동하는 보안담당 프레임워크입니다. 보안은 모든 웹 애플리케이션의 가장 중요한 측면 중 하나이다. 사용자 데이터를 안전하게 유지하고 무단 접근을 방지하기 위해 개발자는 강력한 보안 조치를 구현해야 한다. 기본용어접근 주체(Principal) : 보호된 리소스에 접근하는 대상인증(Authentication) : 보호된 리소스에 접근한 대상에 대해 누구인지, 애플리케이션의 작업을 수행해도 되는 주체인지 확인하는 과정(ex. Form 기반 로그인) => 즉, 누구인지?인가(Authorize) : 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는 과정(After Authentication, 인증 ..