본문 바로가기

Database/이론

(42)
[COLUMNSTORE INDEX] SQL 프로파일러 이용하여 성능 테스트 2 프로파일러 연결 후 아래와 같이 설정해준다.(이벤트 -> 열필터-> 유사에 데이터베이스이름을 쓴다) 아래 코드를 순서대로 하나씩 실행한다. SELECT DATA1, AVG(DATA16) FROM ColumTable GROUP BY DATA1 SELECT * FROM COLUMTABLE SELECT IDX, CDATA, ODATA, DATA1, DATA2, DATA3,DATA4,DATA5, DATA6, DATA7, DATA8,DATA9,DATA10, DATA11, DATA12, DATA13,DATA14,DATA15, DATA16, DATA17, DATA18,DATA19,DATA20 FROM COLUMTABLE 다 돌면 프로파일러에서가서 정지를 시킨후 파일 생성됨을 확인한다. 엔진튜닝 관리자 오픈 설정 : ..
[튜닝] 쿼리와 성능의 기초지식!!!!!! 튜닝 - 인덱스 옵티마이저 : 비용으로 표시할 지 다른것으로 표시 할지 정해진다 비용기반 옵티마이저 예상행수와 실제행수가 차이 날 때 어떻게 할 지 --* SQL 튜닝 : 최소한의 자원을 사용하여 사용자가 원하는 시간에 데이터를 가져오는 것 자원 - 하드웨어(CPU/메모리/I-O) SELECT 쿼리문 -- *왜 튜닝을 해야하나 : 실제 개발 할 때에는 운영데이터가 아니고 테스트용 데이터나, 임시데이터이기 때문에, 테스트할 때 운영데이터가 아닌것으로 하면 오차가 발생함 개발서버에 운영데이터를 그대로 데이터를 삽입 후 실제 돌려보는 식...이지만 그래도 오차는 발생 함. 하지만 제일 운영데이터와 비슷하다고 볼 수 있음 하드웨어~~~~~ -- *분석 및 설계할 때 참고할 사항 : 요구사항을 확인하고 데이터를 ..
튜닝 ADVENTUREWORKS로 TEST 추적 프로파일러에서 TUNING템플릿의 파일을 하나 만든다. 파일 저장을 체크하고 위치를 정해놓는다. 이벤트선택은 디폴트값으로 놔둔다. MSSQL스투디오에서 쿼리문을 여러개 SELECT한다. (나는 ADVENTUREWORKS2019 의 모든 뷰의 1000개행 조회를 함) 그럼 프로파일러가 돌아가고, 정지를 시키면 저장한 위치에 파일하나가 생성되어있을것이다. 그러면 다시 데이터베이스 엔진튜닝관리자를 실행시킨다. 설정은 아래와 같이 해준다. 설정을 마친 후 분석시작을 누르면 분석이 된다. 분석을 마치면 아래와 같은 보고서/권장구성/진행률을 볼 수 있다.
실행계획(작성중) 열 이름 설명 Rows 실행된 행수 Executes Loop 일 경우 Loop가 실행 된 횟수 StmtText PLAN_ROW 유형의 행에 대해서 이 열에 작업에 대한 설명 StmtId 현재 일괄 처리에 있는 문의 수 (몇번째 쿼리에 대한 통계인지) NodeId 현재 쿼리의 노드 ID (현재 노드의 식별값) Parent 부모 단계의 노드 ID (이 값이 같은 것 끼리, 같은 depth라고 생각하면 된다) PhysicalOp 노드에 대한 물리적 구현 알고리즘입니다. PLAN_ROWS 형식의 행에만 해당됩니다. LogicalOp 이 노드가 나타내는 관계형 대수 연산자입니다. PLAN_ROWS 형식의 행에만 해당됩니다. Argument 수행되는 작업에 대한 추가 정보를 제공합니다. 물리적 연산자에 따라 이 열..
트랜잭션 로그백업 트랜잭션 로그백업은 - 데이터베이스 옵션이 '전체' 일경우 가능하다 - 트랜잭션 로그백업의 확장자는 .trn이다. - 백업을 하고 파일의 크기를 보면 bak보다 훨씬 용량이 적게 들어있는것을 볼 수 있다. - 전체 백업을 한 후 '트랜잭션 로그백업'을 한 후, 별도로 해줘야 한다. 로그 백업을 한 후 데이터베이스 속성에 들어가 파일 크기를 수정해준다~ 이미 로그는 백업이 되었기 때문에 속성에 들어가 파일크기를 수정해도 (이미 거기엔 없기때문에) 로그데이터에 손상은 없다. 로그 백업은 위의 데이터 백업과는 다른 몇가지 특성이 있습니다. ① 일단 백업된 트랜잭션 로그는 자동으로 삭제됩니다. 이때 ldf파일 사이즈가 줄어들지는 않지만 ldf 내에서 로그가 삭제되기 때문에 해당 ldf 파일에는 새로운 로그를 기..
버퍼캐시 히트 레이트율 버퍼 캐시 히트율(Buffer Cache Hit Ratio) 버퍼 캐시 효율을 측정하는 지표로써 전체 읽은 블록중 메모리 버퍼 캐시에서 찾은 비율 BCHR = (버퍼 캐시에서 곧바로 찾은 블록 수 / 총 읽은 블록 수) × 100 -- BCHR은 주로 전체적인 관점에서 측정하지만, 개별 SQL에 대해서도 구해볼수 있으며,이 비율이 낮은것이 SQL 성능을 떨어뜨리는 주범임 call count cpu elapsed disk query current rows ------ ----- ----- ------- ---- ----- ------ ---- Parse 15 0.00 0.08 0 0 0 0 Execute 44 0.03 0.03 0 0 0 0 Fetch 44 0.01 0.13 18 822 0 44 -----..
데이터 베이스 구조 Tuple(튜플) 릴레이션을 구성하는 각각의 행(row) 속성(Attribute)의 모임으로 구성 파일 구조에서 레코드와 같은 의미 튜플의 수 = 카디널리티(Cadinality) = 기수 = 대응수 Attribute(속성) 릴레이션을 구성하는 각각의 열(column) 데이터베이스를 구성하는 가장 작은 논리적 단위 파일 구조 상의 데이터 항목 또는 데이터 필드에 해당 개체의 특성을 기술 속성의 수 = 디그리(Degree) = 차수 Domain(도메인) 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는 데 사용 Relation Instance(릴레이션 인스턴스) 데이터 개체를 구성하고 있는 속성들에 데이터 타입..
DBCC 명령어 콘솔 명령은 아래 4가지의 범주로 분류할 수 있습니다. 명령 범주 수행하는 작업 알림 다양한 정보를 수집하고 표시 유효성 검사 데이터베이스, 테이블, 인덱스, 카탈로그, 파일 그룹 또는 데이터베이스 페이지 할당에 대한 유효성 검사 유지 관리 데이터베이스, 인덱스 또는 파일 그룹에 대한 유지 관리 기타 추적 플래그 설정이나 메모리에서 DLL제거 같은 기타 작업 아래 설명에서 앞부분의 DBCC가 생략되어 있습니다. 또한 각 DBCC문의 출력되는 열에대한 자세한 내용은 포스터 아래 url을 참고해주세요. 알림 DBCC문 설명 INPUTBUFFER 클라이언트가 인스턴스에 마지막으로 전송한 문을 표시 OPENTRAN 트랜잭션 로그 내에서 가장 오래된 활성 트랜잭션과 가장 오래된 분산 및 비분산 복제 트랜잭션에 대..