일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 베스트앨범 파이썬
- 프로그래머스 여행경로
- 프로그래머스 순위 파이썬
- 백준 1034 램프 파이썬
- 다중 컬럼 NOT IN
- 가장 긴 바이토닉 부분 수열 파이썬
- 다리 만들기 파이썬
- 백준 2146 다리 만들기
- 백준 11054.가장 긴 바이토닉 부분 수열
- 순위 파이썬
- 프로그래머스 베스트앨범
- 백준 1167 트리의 지름 파이썬
- 프로그래머스 가장 긴 팰린드롬
- 역사 파이썬
- 램프 파이썬
- 게임 개발 파이썬
- SWEA
- 백준 2352 반도체 설계 파이썬
- 가장 긴 팰린드롬 파이썬
- SQL SERVER 장비교체
- 반도체 설계 파이썬
- 백준 1516 게임 개발
- SQL SERVER MIGRATION
- 프로그래머스 등굣길
- 백준 1238 파티 파이썬
- 백준 1613 역사
- 백준 1043 거짓말 파이썬
- 등굣길 파이썬
- 트리의 지름 파이썬
- 프로그래머스 순위
- Today
- Total
공부, 기록
캐시와 실행계획 본문
캐시는 더 빠른 응답 속도를 위해 디스크가 아닌 메모리에서 데이터를 가져오는 방식으로 적합한 DB의 예로는 In-Memory DB인 Redis가 있다.
Redis는 간단한 구조인 Key-Value 로 이루어져 있으며 API에서 캐시에 먼저 접근한 후 데이터가 없을 경우 디스크 서버 DB에 접근하여 값을 캐시 서버에 옮겨주는 방식으로 사용이 가능하다.
RDBMS에서도 실제로 데이터 읽기가 발생하면 메모리인 버퍼풀에 먼저 접근한다.
1. 데이터가 버퍼풀에 있는 경우 : 버퍼풀에서 데이터를 읽음
2. 데이터가 버퍼풀에 없는 경우 : 디스크에 접근하여 데이터를 읽은 후 버퍼풀에 복사
최근 개발 과정 중 DEV, QA, LIVE에서는 중 특정 LEVEL의 서버에서 쿼리가 오래걸리는 현상이 있었다.
LIVE의 경우 하나의 서버에 하나의 인스턴스가 떠 있어서 메모리 크기를 충분히 지정해 주었지만,
DEV와 QA의 경우 하나의 서버에 여러개의 인스턴스가 올라가 있는 상황이었고 각 인스턴스마다 메모리 또한 다르게 지정이 되어 있었다.
이로인하여 CPU, IO 값은 낮은 쿼리지만 resource_semaphore wait type이 뜨면서 쿼리 시간이 오래 걸렸다.
각 인스턴스의 MIN, MAX Memory 의 값을 조정해주었고 쿼리 속도는 정상으로 돌아왔다.
SQL Server의 아키텍처는 다음과 같다.
실행계획은 한번 쿼리된 계획에 대하여 캐시에 남겨놓고 사용하는 방식이다. 실행 계획을 저장하는 데 사용되는 메모리 풀 부분을 계획 캐시라고 한다.
- 지속형 개체(저장 프로시저, 함수 및 트리거)에 관련된 계획에 사용되는 Object Plans 캐시 저장소(OBJCP).
- 자동으로 매개 변수화된 쿼리, 동적 쿼리 또는 준비된 쿼리에 관련된 계획에 사용되는 SQL Plans 캐시 저장소(SQLCP).
다만 실행되는 쿼리의 변수가 항상 바뀌는 경우 이를 옵티마이저는 동일한 쿼리라고 인식하지 못할 경우가 있다. 이럴 때는 sp_executesql 를 사용하면 좀 더 정확하게 실행계획을 매핑할 수 있다.
예)
DECLARE @MyIntParm INT
SET @MyIntParm = 1
EXEC sp_executesql
N'SELECT *
FROM AdventureWorks2014.Production.Product
WHERE ProductSubcategoryID = @Parm',
N'@Parm INT',
@MyIntParm
Where 구문에 있는 @Parm이 각 순서와 동일하게 매핑되어 쿼리가 실행된다.
'공부 > DATABASE' 카테고리의 다른 글
[MSSQL/SQL SERVER] 커서 (0) | 2022.10.03 |
---|---|
[MSSQL/SQL Server] 트랜잭션 (0) | 2022.09.24 |
[R&D]MongoDB (0) | 2022.03.16 |
[R&D]MySql (0) | 2022.03.16 |
[R&D]SQL Server (0) | 2022.03.16 |