본문 바로가기

Database

(123)
PLAN CACHE에서 단일 실행계획을 찾고, 또 삭제하는 캐시 쿼리 명령어 -- 현재 캐시된것들 확인하기 SELECT * FROM SYS.dm_exec_cached_plans GO -- PLAN CACHE에서 단일 실행계획을 찾는 쿼리문(PLAN CACHE사이즈를 최적화하기위함) 아래 출력되는 것들을 재 컴파일하면 속도를 줄일 수 있음 --> 한번만 쓰고 버리는 쿼리들 위주로 재컴파일 필요,,,,, 해당 쿼리문은 재활용 하자!!!! SELECT TEXT, CP.OBJTYPE, CP.SIZE_IN_BYTES FROM SYS.dm_exec_cached_plans AS cp CROSS APPLY SYS.dm_exec_sql_text(CP.PLAN_HANDLE) ST WHERE CP.cacheobjtype = 'Compiled Plan' AND -- Adhoc은 쿼리를 한번 던지는것,..
sql 통계, index - 같은 결과가 나오는 프로그램을 5가지에서 10가지 사이로 만들어본다. 이 중에서 최적을 찾는다!!!!!!!! - 인덱스의 채우기 비율이란.............? docs.microsoft.com/ko-kr/sql/relational-databases/indexes/specify-fill-factor-for-an-index?view=sql-server-ver15 인덱스의 채우기 비율 지정 - SQL Server 인덱스의 채우기 비율 지정 docs.microsoft.com -- * 통계 요즘엔 비동기로 업데이트 한다. 병렬프로그래밍 - cpu를 효율적으로 사용하도록 자동 설계됨. - 힙구조 개체는 힙에 저장이 되며, 한칸한칸 저장되다가 중간에 데이터를 삭제하면 빵꾸가 난 상태로 있는다. 따라서 주소값을..
SQL 인덱스 조각모음(구성/작성)을 CLUSTERED/NONCLUSTERED 를 비교하여 성능 비교 NONCLUSTERED INDEX와 CLUSTERED INDEX를 따로 하나씩생성해놔야한다. *NON CLUSTERED 할때 CLUSTERED인덱스는 삭제해놓고 하고 반대도 마찬가지이다. CREATE CLUSTERED INDEX PK_COLUM_IDX ON COLUMTABLE(IDX) CREATE NONCLUSTERED INDEX PK_COLUM_IDX ON COLUMTABLE(IDX) 위의 코드로 해도 된다. 테이블의 쿼리문 3개를 준비했다. 해당 쿼리문으로 성능 테스트를 할것이다. 프로파일러를 켜고, 아래와 같은 항목이 나오게 셋팅한다(STANDARD- 이벤트: TSQL제외 전원해제, TSQL에서 아래 항목만 남길것) NONCLUSTERED든 CLUSTERED든 어떤것을 먼저실행해도 상관 없다. 실행..
CLUSTERED/ NONCLUSTERED 예상실행계획 비교 CLUSTERED/ NONCLUSTERED INDEX를 각각 하나씩 생성한다 CREATE CLUSTERED INDEX PK_COLUM_IDX ON COLUMTABLE(IDX) CREATE NONCLUSTERED INDEX PK_COLUM_IDX ON COLUMTABLE(IDX) NONCLUSTERED 에서 범위를 하나로 지정하여 할 경우 CLUSTERED 에서 범위를 하나로 지정하여 할 경우 NONCLUSTERED 범위를 크게 정할 경우 CLUSTERED 범위를 크게 정할 경우
[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 다 돌면 프로파일러에서가서 정지를 시킨후 파일 생성됨을 확인한다. 엔진튜닝 관리자 오픈 설정 : ..
[COLUMNSTORE INDEX] SQL 프로파일러 이용하여 성능 테스트 테이블 생성하고 CREATE TABLE COLUMTABLE( IDX INT NOT NULL, CDATA INT NULL, ODATA INT NOT NULL, DATA1 VARCHAR(20) NULL, DATA2 VARCHAR(20) NULL, DATA3 VARCHAR(20) NULL, DATA4 VARCHAR(20) NULL, DATA5 VARCHAR(20) NULL, DATA6 INT NULL, DATA7 INT NULL, DATA8 INT NULL, DATA9 INT NULL, DATA10 INT NULL, DATA11 INT NULL, DATA12 INT NULL, DATA13 INT NULL, DATA14 INT NULL, DATA15 INT NULL, DATA16 FLOAT NULL, DATA1..
[튜닝] 쿼리와 성능의 기초지식!!!!!! 튜닝 - 인덱스 옵티마이저 : 비용으로 표시할 지 다른것으로 표시 할지 정해진다 비용기반 옵티마이저 예상행수와 실제행수가 차이 날 때 어떻게 할 지 --* SQL 튜닝 : 최소한의 자원을 사용하여 사용자가 원하는 시간에 데이터를 가져오는 것 자원 - 하드웨어(CPU/메모리/I-O) SELECT 쿼리문 -- *왜 튜닝을 해야하나 : 실제 개발 할 때에는 운영데이터가 아니고 테스트용 데이터나, 임시데이터이기 때문에, 테스트할 때 운영데이터가 아닌것으로 하면 오차가 발생함 개발서버에 운영데이터를 그대로 데이터를 삽입 후 실제 돌려보는 식...이지만 그래도 오차는 발생 함. 하지만 제일 운영데이터와 비슷하다고 볼 수 있음 하드웨어~~~~~ -- *분석 및 설계할 때 참고할 사항 : 요구사항을 확인하고 데이터를 ..
튜닝 ADVENTUREWORKS로 TEST 추적 프로파일러에서 TUNING템플릿의 파일을 하나 만든다. 파일 저장을 체크하고 위치를 정해놓는다. 이벤트선택은 디폴트값으로 놔둔다. MSSQL스투디오에서 쿼리문을 여러개 SELECT한다. (나는 ADVENTUREWORKS2019 의 모든 뷰의 1000개행 조회를 함) 그럼 프로파일러가 돌아가고, 정지를 시키면 저장한 위치에 파일하나가 생성되어있을것이다. 그러면 다시 데이터베이스 엔진튜닝관리자를 실행시킨다. 설정은 아래와 같이 해준다. 설정을 마친 후 분석시작을 누르면 분석이 된다. 분석을 마치면 아래와 같은 보고서/권장구성/진행률을 볼 수 있다.