본문 바로가기
반응형

IT/MSSQL170

[MSSQL] UPDATE SELECT 구문 쿼리 튜닝(성능 및 속도 개선) update를 진행 할 경우 임시테이블을 사용해서 성능 개선이 가능하다 아래의 예제를 통해서 비용차이를 확인해보자 use INDEX_TEST GO 테이블 생성 CREATE TABLE OrderT( 주문번호 int ,상품 varchar(100) ,주문일자 datetime, CONSTRAINT PK_OrderT_주문번호_상품 PRIMARY KEY CLUSTERED ( 주문번호 ASC, 상품 ASC ) ) GO CREATE TABLE OrderT2( 주문번호 int ,상품 varchar(100) ,주문일자 datetime, CONSTRAINT PK_OrderT2_주문번호_상품 PRIMARY KEY CLUSTERED ( 주문번호 ASC, 상품 ASC ) ) GO 데이터 입력 --100,000개의 데이터를 입력 .. 2023. 4. 15.
[MSSQL] in,not in, exists, not exists 내부 동작로직 및 예제 in,not in, exists, not exists 함수를 제대로 모르고 사용하게 되면 원하는 결과가 아닌 다른 결과를 가져와 프로그램 오류를 발생시킬 수 있다. 내부로직을 예제를 통해서 확인하고 제대로 활용해보도록 하자 --과일 테이블 생성 및 데이터 삽입 create table fruit( number int, fruit varchar(50) ) GO INSERT INTO fruit VALUES (1,'사과') INSERT INTO fruit VALUES (2,'바나나') INSERT INTO fruit VALUES (3,NULL) INSERT INTO fruit VALUES (NULL,'수박') INSERT INTO fruit VALUES (4,'망고') INSERT INTO fruit VALUE.. 2023. 4. 15.
[MSSQL]복합(결합) 인덱스 생성규칙 - 순서에 따른 I/O 비용차이(랜덤액세스) 복합(결합) 인덱스의 컬럼 순서는 4개의 우선 순위에 의해 생성되어야 한다. 이를 무시하고 인덱스를 생성하면 복합(결합) 인덱스를 이용하여 성능 향상을 기대하기는 어렵다. - 1순위 : 컬럼이 사용한 연산자에 의한 인덱스 컬럼 선정 - 2순위 : 랜덤 액세스를 고려한 인덱스 컬럼 선정 - 3순위 : 정렬 제거를 위한 인덱스 컬럼 선정 - 4순위 : 단일 컬럼의 분포도를 고려한 인덱스 컬럼 선정 이번 시간에는 2순위인 랜덤 '액세스를 고려한 인덱스 컬럼 선정' 에 대해서 알아보고자 한다. 랜덤액세스란? 랜덤 액세스는 데이터를 저장하는 블록을 한번에 여러 개 액세스하는 것이 아니라 한 번에 하나의 블록만을 액세스하는 방식이다. 한 번에 여러 개의 블록을 액세스한다면 같은 양의 데이터에 대해 적은 횟수의 디스.. 2023. 4. 15.
[MSSQL]인덱스 생성(최종 업데이트 시간)정보 확인 인덱스 모든 정보 확인 인덱스의 정보를 확인하기 위해서 sys.indexes 테이블을 확인하면 다양한 정보를 얻을 수 있습니다. USE AdventureWorks2016 GO select * From sys.indexes 마지막 업데이트 시간 확인 마지막 업데이트된 인덱스를 확인하는 쿼리이다. /* 최종업데이트시간확인 */ USE AdventureWorks2016 GO Select STATS_DATE ( object_id , index_id ) indexDate , * From sys.indexes where object_id=object_id('production.Product') 2023. 4. 15.
[MSSQL]tempDB 경로변경으로 인한 서버 재시작불가(오류코드:17204,5123) tempDB는 모든 데이터베이스에서 공통으로 사용하는 임시 공간입니다. 이 공간에 문제가 발생하면 Latch 경합 등 다양한 문제가 발생할 수 있습니다. 작업내용 Tempdb 경로를 변경 후 SQL서버 재시작 오류내용 SQL서버 재시작이 불가하였고 윈도우 이벤트 로그를 확인하니 아래와 같이 2가지 에러 로그가 찍혀 있었습니다. 이벤트 오류 ID : 5123 물리적 파일 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER_TEST\MSSQL\temp\tempdb.mdf'을(를) 열거나 만드는 중 CREATE FILE에서 운영 체제 오류 5(액세스가 거부되었습니다.)이(가) 발생했습니다. 이벤트 오류 ID : 17204 FCB::Open failed: 파.. 2023. 4. 15.
[MSSQL] Tempdb 래치경합 확인 및 해결방법(PAGELATCH_EX, PAGELATCH_SH) 시스템 데이터베이스 중 tempdb는 아래와 같은 작업을 할 경우 사용되는 공용 공간이다. 따라서 이 공간에 문제가 생긴다면 해당 공간을 사용하는 쿼리들에 문제가 생기게 된다. tempdb를 사용하는 경우 - 임시 테이블을 생성,삭제 시 - 테이블 변수를 사용 시 - 커서(Cursors)와 관련된 테이블 - 정렬작업(order by), 그룹작업(group by), 해시계획(hash plans) Tempdb 경합확인 Tempdb 사용이 많을 경우 SQL Server에서 페이지를 할당하려고 할 때 경합이 발생 한다. - 이는 메모리 접근에 대한 스레드 병목현상으로 I/O 병목(PAGEIOLATCH_*)과는 관련이 없다. - 높은 처리량/높은 동시성 트랜잭션 처리(OLTP) 워크로드의 경우 특히 가능성이 높습.. 2023. 3. 8.
[MSSQL] 암호 정책 변경방법(OS 암호정책 포함) 보안관련 조치 사항으로 MSSQL 계정에 대한 암호 정책을 설정 해야할 경우 데이터베이스와 서버를 수정해야 합니다. 아래는 패스워드 변경 주기를 변경하는 방법에 대해서 설명합니다. 암호 만료 강제 적용 MSSQL에서 ‘암호 만료 강제 적용’을 체크함으로써 주기적으로 변경이 가능하며 변경기간은 OS의 ‘암호정책’에서 적용 받으므로 ‘암호 정책 > 최대 암호 사용 기간’ 설정도 같이 변경해야 함 위치 : [보안]> [로그인]> [각 로그인 계정]> [속성] 암호 만료 강제 적용: 설정(체크) 확인 OS의 암호 정책 설정 위치 : [관리도구]> [로컬 보안 정책]> [보안 설정]> [계정 정책]> [암호 정책] 최대 암호 사용 기간 : 60일 설정 이상으로 MSSQL 암호 정책(변경주기 및 만료기간) 설정하는.. 2023. 3. 8.
[MSSQL] SET DEFAULT 옵션(외래키 설정 시 자동삭제 및 업데이트) SET DEFAULT 란? DELETE SET DEFAUL : 부모 데이터 삭제시 자식 데이터의 Columm은 기본 값(Default) 으로 Update. UPDATE SET DEFAUL : 부모 데이터 업데이트시 자식 데이터의 Columm은 기본 값(Default) 으로 Update. 관련 테이블 테이블생성 작업 전 필요한 테이블 및 데이터를 입력한다. -- dbo.Vacation 테이블 삭제 IF OBJECT_ID('dbo.Vacation', 'U') IS NOT NULL DROP TABLE dbo.Vacation GO -- dbo.Employee 테이블 삭제 IF OBJECT_ID('dbo.Employee', 'U') IS NOT NULL DROP TABLE dbo.Employee GO -- dbo.. 2023. 3. 8.
[MSSQL] cascade 옵션(외래키 설정시 자동삭제 및 업데이트) CASCADE 란? 기준 테이블의 데이터가 변경되었을 때 외래 키 테이블도 자동으로 변경 ON UPDATE CASCADE : 기준 테이블의 데이터가 변경되었을 때 외래 키 테이블도 자동으로 변경 ON DELETE CASCADE : 기준 테이블의 데이터가 삭제되었을 때 외래 키 테이블의 데이터들도 자동으로 삭제 관련 테이블 테이블생성 작업 전 필요한 테이블 및 데이터를 입력한다. -- dbo.Vacation 테이블 삭제 IF OBJECT_ID('dbo.Vacation', 'U') IS NOT NULL DROP TABLE dbo.Vacation GO -- dbo.Employee 테이블 삭제 IF OBJECT_ID('dbo.Employee', 'U') IS NOT NULL DROP TABLE dbo.Emplo.. 2023. 3. 8.
[MSSQL] 외래키(FOREIGN KEY) 제약조건 - 생성(추가), 삭제 MSSQL에서 테이블에 FOREIGN KEY 제약조건을 추가해야 할 경우가 있다. 이번 시간에는 FOREIGN KEY 제약조건 생성(추가), 삭제 방법에 대해서 설명한다. 외래키(FOREIGN KEY)란? - SQL DB는 특정한 열을 외래키로 지정할 수 있다. - 외래키는 어떤 테이블에 있는 특정 열이, 다른 테이블에 있는 열(보통 기본키)를 참조하는 것이다 아래의 예제를 확인하며 실습해보자. 1.FOREIGN KEY 제약을 갖는 테이블 만들기 -- 테이블이 이미 있으면 삭제 IF OBJECT_ID('dbo.Vacation', 'U') IS NOT NULL DROP TABLE dbo.Vacation GO -- FOREIGN KEY 제약을 갖는 테이블 만들기 CREATE TABLE dbo.Vacation.. 2023. 3. 8.
반응형