본문 바로가기
반응형

IT/MSSQL170

[MSSQL] 해시조인(HASH JOIN) 장/단점 설명 MSSQL에서 지원하는 조인 방식은 아래와 같이 3가지가 존재한다. 1.중첩루프조인(NESTED LOOP JOIN) 2.머지조인(SORT MERGE JOIN) 3.해시조인(HASH JOIN) 이번 시간에는 그 중에서 "해시조인(HASH JOIN)"에 대해서 간단히 알아보도록 하자. 해시조인(HASH JOIN) 해시조인은 인덱스를 사용할 수 없는 환경에서 결과를 정렬할 필요가 없을 때 효율적으로 사용할 수 있는 조인방법이다. 만약 결과를 정렬할 필요가 있다면 머지조인이 더 효율적일 수 있다. 조인 후 결과가 아주 작아 메모리에서 정렬이 가능하면 해시 조인을 한 후에 정렬을 해도 문제가 되지 않는다. 빌드입력 테이블 - 조인 테이블 중에 통계를 기반으로 데이터가 작은 테이블을 빌드입력으로 선정함(해시 테이블.. 2023. 1. 28.
[MSSQL] 머지 조인(SORT MERGE JOIN) 장/단점 설명 MSSQL에서 지원하는 조인 방식은 아래와 같이 3가지가 존재한다. 1.중첩루프조인(NESTED LOOP JOIN) 2.머지조인(SORT MERGE JOIN) 3.해시조인(HASH JOIN) 이번 시간에는 그 중에서 "머지 조인(SORT MERGE JOIN)"에 대해서 간단히 알아보도록 하자. 2.머지조인(SORT MERGE JOIN) 중첩루프조인은 내부테이블의 조인조건에 대한 인덱스 존재 유무가 매우 중요하다. 만약 인덱스가 존재하지 않으면 조인 건 수마다 내부테이블을 풀스캔하기 때문이다. 이럴경우 옵티마이저는 머지조인 or 해시조인을 고려한다 머지조인 양쪽테이블을 조인 컬럼을 기준으로 정렬 후 -> 조인을 진행한다(전체 테이블을 한번만) 정렬 작업은 메모리를 사용하게되고 만약 메모리가 부족하다면 느린.. 2023. 1. 28.
[MSSQL] 중첩 루프 조인(NESTED LOOP JOIN) 장/단점 설명 MSSQL에서 지원하는 조인 방식은 아래와 같이 3가지가 존재한다. 1.중첩루프조인(NESTED LOOP JOIN) 2.머지조인(SORT MERGE JOIN) 3.해시조인(HASH JOIN) 이번 시간에는 그 중에서 "중첩루프조인(NESTED LOOP JOIN)"에 대해서 간단히 알아보도록 하자. 중첩루프조인(NESTED LOOP JOIN) - 순차적으로 처리된다. - 작은 입력을 인덱스를 사용하여 조인할 때 가장 효율적 성능을 보인다.(OLTP 환경에 적합) - 정렬이나 해시 테이블 생성과 같은 대기(STOP&GO)를 해야하는 추가적인 선행 작업이 필요 없기 때문에 추가 메모리를 사용하지 않는다. 따라서 메모리 사용량이 가장 적다 - 메모리를 사용하지 않는 점은 많은 동시 사용자를 처리하는 OLTP 환.. 2023. 1. 28.
[MSSQL] CROSS APPLY, INNER JOIN 성능 비교 테스트 이번 시간에는 CROSS APPLY, INNER JOIN 성능 테스트를 진행합니다. 사용법 SELECT ..FROM [외부 테이블] CROSS | OUTER APPLY (SELECT .. FROM [내부 테이블] WHERE [조인 조건자]) [CROSS APPLY] - 내부 테이블(테이블 반환 함수)의 집합으로부터 조인 키로 결합한 외부 테이블의 행만을 반환합니다. - INNER JOIN과 동일한 쿼리 결과를 반환합니다. [OUTER APPLY] - 내부 테이블(테이블 반환 함수)의 집합으로부터 조인 키에 결합한 외부 테이블의 행 + 그렇지 않은 행 전부를 반환합니다. 그렇지 않은 행에 열에는 NULL을 표시합니다. - LEFT OUTER JOIN과 동일한 결과를 반환합니다. 비교 구문 예제 특정 상황에.. 2022. 12. 19.
[MSSQL] MSDB 파일 사이즈 증가로 인한 백업 히스토리 기록 삭제방법(복원,백업 로딩속도 개선) MSDB는 SQL Server 에이전트가 사용하는 데이터베이스로 예약된 작업등의 내용이 들어있습니다. 이번 시간에는 MSDB의 사이즈 증가로 인한 백업 관련 로그 삭제 방법과 DATA 및 LOG 축소 방법에 대해서 알아보겠습니다. 데이터베이스 백업 및 복원을 하기 위해서 백업 디바이스를 추가하는 화면 로딩을 진행할 경우 속도가 비정상적으로 엄청 오래 걸리는 경우가 있습니다. 로딩 속도가 느린 이유는 바로 이 로그가 많이 쌓여서 읽어오는데 시간이 필요하기 때문인데요 이 로그는 MSDB에 쌓이며 해당 히스토리 로그를 삭제하면 디비를 복원하는 화면의 활성화 되는 속도도 개선됩니다. 초기 데이터 확인 1. msdb 사이즈 확인 USE msdb ; GO sp_helpdb msdb 2. msdb 백업 히스토리 테이.. 2022. 12. 19.
[MSSQL] 윈도우 호스트네임 변경 후 SQL 윈도우인증 접속 불가 처음 MSSQL 설치 후 윈도우 호스트 네임으로 윈도우 인증 로그인 시 접속이 잘된다. 이후에 윈도우서버의 호스트 네임을 변경하는 작업을 하는 경우가 가끔 있다. 이 작업을 하고나면 MSSQL 서버 설치시에 자동으로 생성되던 윈도우 인증 계정을 더이상 사용할 수 없게 되기 때문에 로그인이 불가능하게 된다. 해결방법 1. SA 혼합 인증 모드로 변경한 상태라면 SA 계정으로 로그인을 시도한다. 2. 이후 보안-로그인-윈도우계정을 보면 X자 상태로 사용불가능 한 상태로 표시되는 것을 볼 수 있다. 아래의 그림은 사용불가능 상태의 예시이며 삭제할 계정은 해당 서버가 과거에 사용했던 호스트네임 계정이다 3. 서버의 과거 호스트네임을 삭제 한다음 새 계정을 생성하자. [로그인] 마우스 우클릭 후 "새 로그인(N).. 2022. 11. 15.
[MSSQL] 테이블 파티셔닝 실습예제(SPLIT, SWITCH, MERGE) MSSQL에는 테이블 파티셔닝이라는 개념이 존재한다. 특정 구성표로 데이터 범위를 지정하고 지정한 범위의 데이터를 특정 파티션에 저장하도록 테이블을 생성하여 운영하는 기법이다. 이렇게 분할을 한 테이블은 데이터가 작아지기 때문에 INSERT, UPDATE, SELECT등의 작업 속도를 향상 시킨다. 이제 테이블 파티셔닝 실습(SPLIT, SWITCH, MERGE)을 진행해보자 1. 데이터베이스 생성 -- 데이터베이스 생성 USE master GO CREATE DATABASE bebeDB ON PRIMARY ( NAME = bebeDB, FILENAME = 'C:\data\bebeDB.MDF', SIZE = 5, FILEGROWTH = 1 ) LOG ON ( NAME = bebeDB_Log, FILENAM.. 2022. 8. 21.
[MSSQL] 어셈블리 등록 오류 / 구성 옵션 'clr strict security'이 없거나 고급 옵션입니다 어셈블리 DLL 파일 등록을 위해서는 sp_configure를 수정해 줘야합니다. 아래는 어셈블리 등록을 위해 sp_configure 설정을 변경하는 내용입니다. 1.변경 전 확인 EXEC sp_configure 2.변경 진행 --(clr 활성화) EXEC sp_configure 'clr enabled', 1 RECONFIGURE WITH OVERRIDE GO --오류 발생시 고급옵션 활성화 후 다시 실행(구성 옵션'clr strict security'이 없거나 고급 옵션입니다.) EXEC sp_configure 'clr strict security', 0; RECONFIGURE WITH OVERRIDE GO --고급 옵션 활성화 sp_configure 'show advanced options', 1; .. 2022. 8. 21.
[MSSQL] 오류 35208, master 데이터베이스를 사용중인 경우에만 가용성 그룹 DDL 작업이 허용됩니다. 가용성 그룹 추가 마법사를 이용하여 MSSQL Always ON 가용성 그룹 데이터베이스 추가를 진행하는 도중 아래와 같은 오류:53208 이 발생하였다. 오류내용 가용성 복제본 XXX 데이터베이스를 가용성 그룹에 조인하지 못했습니다. master 데이터베이스를 사용중인 경우에만 가용성 그룹 DDL 작업이 허용됩니다. USE MASTER 명령어를 실행하고 가용성 그룹 DDL 명령을 다시 시도하십시오 오류:35208 해결방법 Master로 로그인하라고 하여 처음에는 새 쿼리창를 켜서 use master 명령어를 실행하고 다시 진행 하였지만 결과는 동일. 알고보니 SSMS 처음 로그인시 디비를 선택하는 부분이 있는데 이 부분을 변경하여 로그인 후 진행하면 정상적으로 가용성 그룹에 추가되는 것을 볼 수 있다... 2022. 8. 21.
[MSSQL] tempdb 용량축소(SHRINKFILE) 안될 때 캐시 삭제하기 [Tempdb 축소] Tempdb파일의 증가로 용량을 줄이고 싶을 경우 아래의 2개의 명령어를 선택하여 수행합니다. - 데이터베이스 축소 : DBCC SHRINKDATABASE(tempdb,0) --여유공간을 0%로남기고 축소, 디폴트값0, 0아닌 다른값은 성능문제가 생길수있음 - 파일축소 : DBCC SHRINKFILE(tempdev,10) --10M로 축소 해당 명령어를 실행하면 일반적으로 용량이 줄어들지만 축소가 안되는 경우 캐시를 삭제해야 합니다. [캐시삭제] --현재 데이터베이스이 모든 더티 페이지를 디스크에 쓰고 버퍼를 정리 CHECKPOINT --프로시저 캐시 삭제 DBCC FREEPROCCACHE --Buffer Pool에 존재하는 데이터 페이지 제거 DBCC DROPCLEANBUFFERS.. 2022. 8. 21.
반응형