본문 바로가기

DBMS/SQL Server

(95)
[SQL Server] Hot Add 메모리 'Hot add 메모리'는 동일한 개념으로 시스템이 운영 중인 상태에서 메모리(RAM)을 추가하는 기능을 말한다. SQL Server 2008 이전 버전에서도 지원되는 기능이다. Hot add Memory를 위해서는 다음의 사항이 충족되어야 한다. 1. 하드웨어에서 Hot Add 메모리를 지원해야 한다. 2. 운영체제는 Windows Server 2003/2008 Enterprise 또는 Datacenter 에디션이 설치되어 있어야 한다. 3. AWE(Address Windowing Extensions) 설정된 32bit SQL Server Enterprise 에디션이거나, 64bit SQL Server Enterprise 에디션이어야 한다.
[SQL Server] Hot Add CPU SQL Server 2005에서 Hot Add Memory를 소개하였고, SQL Server 2008에서 Hot Add CPU를 제공하고 있다. Hot Add CPU는 시스템이 운영중인 상태에서 다운타임 없이 CPU를 추가할 수 있는 기능이다. 이 기능을 이용하기 위해 다음의 사항이 충족되어야 한다. 1. 하드웨어에서 Hot Add CPU를 지원해야 한다. 2. 64비트 버전의 Windows Server 2008 Datacenter 또는 Itanium 기반 시스템 운영체제용 Windows Server 2008 Enterprise Edition이 설치되어 있어야 한다. 3. SQL Server 2008 Enterprise 이상이 설치되어 있어야 한다. 4. SQL Server는 소프트 NUMA를 사용하도록..
[SQL Server] ROLLUP 연산자가 지원되지 않는 버전에서 총합계 구하기 통계를 보여줄 때 ROLLUP 연산자를 사용하면 쉽게 총합계를 보여줄 수 있다. 하지만 ROLLUP 연산자가 지원되지 않는 버전이라면 어떻게 총합계를 보여줘야할까? 2008 버전에서 열심히 ROLLUP 연산자를 이용하여 작업을 하였다. 하지만 작업한 것을 적용해야 할 서버가 2005 버전이라는 것을 뒤늦게 알았다. ROLLUP 연산자는 2008 버전에서 생긴 기능으로 당연히 2005 버전에서는 사용할 수 없다. 먼저 2008 버전 이상에서 ROLLUP 연산자를 이용한 결과를 확인해 보자. CREATE TABLE dbo.TEST_STAT ( REG_DATE CHAR(10) , USER_CNT INT , ORDER_CNT INT , TOTAL_CASH INT ) GO INSERT INTO dbo.TEST_S..
[SQL Server] 모든 동적 뷰와 함수를 확인하기 위한 쿼리 DMV(동적 관리 뷰, Dynamic Management Views)는 성능 관련 정보를 수집하기 위한 유용한 도구이다. 동적 관리 뷰와 함수는 SQL Server를 모니터링하고, 문제점을 진단하며, 성능을 최적화하기 위한 용도로 사용할 수 있다. 모든 동적 관리 뷰와 함수를 확인하기 위한 쿼리 SELECT N'SYS.' + NAME AS NAME, TYPE_DESC FROM SYS.SYSTEM_OBJECTS WHERE NAME LIKE N'DM[_]%' ORDER BY NAME 136개의 동적 관리 뷰와 함수를 확인할 수 있다. 참고 : 실전 SQL Server MVP 61
[SQL Server] 가장 조각이 많이 난 인덱스 TOP 10 지속적인 데이터 변경 작업이나 데이터 입력에 따른 반복되는 페이지 분할과 같은 문제로 인해 인덱스에 조각화가 발생하고, 이는 당연히 인덱스를 통한 조회 성능이 저하되는 결과를 가져온다. 이런 경우 인덱스를 다시 구성(조각모음)하거나 다시 작성해서 조각화를 제거할 수 있다. sys.dm_db_index_physical_stats 동적 관리 함수를 조회해서 조각화가 심한 인덱스를 확인할 수 있다. -- 가장 조각이 많이 난 인덱스 TOP 10 SELECT TOP 10 DB_NAME() AS 'DatabaseName' , OBJECT_NAME(S.OBJECT_ID) AS 'TableName' , I.NAME AS 'IndexName' , ROUND(AVG_FRAGMENTATION_IN_PERCENT, 2) A..
[SQL Server] 별칭(Alias)을 지정하는 여러가지 방법 별칭(Alias)은 조인을 할 때 복잡한 테이블명을 간략화 할 수 있고, Self 조인을 할 때 한 테이블에 각각의 별칭을 주어 두개의 테이블처럼 조인을 할 수 있다. SUM, AVG, MAX, MIN과 같은 집계함수를 사용하면 컬럼명이 (열 이름없음)으로 나오게 되는데 별칭을 사용해서 컬럼명을 명확히 할 수 있다. 이처럼 테이블명과 컬럼명에 별칭을 지정하여 사용할 수 있다. 컬럼명에 별칭을 지정하는 방법은 여러가지가 있고, 아래와 같다. SELECT 1 AS NUMBER , 1 "NUMBER" , 1 'NUMBER' , 1NUMBER , 1"NUMBER" , 1'NUMBER' , 1 AS "NUMBER" , 1 AS 'NUMBER' , 1.NUMBER , 1."NUMBER" , 1.'NUMBER' , ..
[SQL Server] SELECT INTO 구문 사용시 복사되지 않는 것 SELECT INTO 구문은 새 테이블을 만든 후 쿼리의 결과 행을 새로 만든 테이블에 삽입한다. 주로 테이블의 데이터를 수정, 삭제할 경우 백업의 용도로 사용한다. 테이블을 복사할 때 제약조건, NULL, IDENTITY 등도 같이 복사되는지 확인해보자. USE TEMPDB GO CREATE TABLE TEST_1 ( IDX INT IDENTITY , NAME CHAR(6) NOT NULL , AGE TINYINT NOT NULL , GENDER TINYINT DEFAULT 1 -- 1:남, 2:여 , CONSTRAINT PK_TEST PRIMARY KEY(IDX) ) GO INSERT INTO TEST_1 VALUES ('박보영', 15, 2) , ('유인나', 20, 2) , ('신보라', 25, ..
[SQL Server] 한 테이블에 생성할 수 있는 인덱스의 최대 개수 한 테이블에 Clustered Index는 한 개만 생성할 수 있다는 것을 잘 알고 있다. 그렇다면 Nonclustered Index는 한 테이블에 몇 개까지 생성할 수 있을까? SQL Server 2005 버전까지는 149개, SQL Server 2008 버전 이후로는 999개의 Nonclustered Index를 생성할 수 있다. 내가 관리하는 DB들은 한 테이블에 인덱스가 10개를 넘는적을 못봤는데 한 테이블에 249개의 Nonclustered Index를 사용하는 경우가 있을까? 버전이 올라가면서 999개를 생성할 수 있도록 하였는데 필요에 의해 증가된 것일까? 1 Clustered Index + 249 Nonclustered Index = 250 Inde..