IT story

[1 차]는 무엇을 의미합니까?

hot-time 2020. 4. 24. 08:10
반응형

[1 차]는 무엇을 의미합니까?


SQL 설정 스크립트를 만들고 있는데 다른 사람의 스크립트를 예로 사용하고 있습니다. 다음은 스크립트의 예입니다.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[be_Categories](
    [CategoryID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_Categories_CategoryID]  DEFAULT (newid()),
    [CategoryName] [nvarchar](50) NULL,
    [Description] [nvarchar](200) NULL,
    [ParentID] [uniqueidentifier] NULL,
 CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED 
(
    [CategoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ON [PRIMARY] 명령의 기능을 아는 사람이 있습니까?


Microsoft SQL Server에서 데이터베이스를 작성할 때 여러 장소, 디렉토리 또는 디스크에 스토리지가 작성되는 여러 파일 그룹이있을 수 있습니다. 각 파일 그룹의 이름을 지정할 수 있습니다. PRIMARY 파일 그룹은 항상 생성되는 기본 그룹이므로 제공된 SQL은 PRIMARY 파일 그룹에 테이블을 생성합니다.

전체 구문 MSDN참조하십시오 .


생성중인 객체가있는 파일 그룹을 나타냅니다. 따라서 기본 파일 그룹은 서버의 D : \ 드라이브에있을 수 있습니다. 그런 다음 Indexes라는 다른 파일 그룹을 만들 수 있습니다. 이 파일 그룹은 서버의 E : \ 드라이브에있을 수 있습니다.


ON [PRIMARY]는 "Primary"파일 그룹에 구조를 만듭니다. 이 경우 기본 키 인덱스와 테이블은 데이터베이스의 "기본"파일 그룹에 배치됩니다.


Mark S.가 자신의 게시물에서 언급 한 것에 대해 매우 중요한 메모를 추가합니다. 질문에 언급 된 특정 SQL 스크립트에서는 데이터 행과 인덱스 데이터 구조를 저장하기 위해 두 개의 다른 파일 그룹을 언급 할 수 없습니다.

그 이유는이 경우 생성되는 인덱스가 기본 키 열의 클러스터 된 인덱스이기 때문입니다. 클러스터 된 인덱스 데이터와 테이블의 데이터 행은 다른 파일 그룹에있을 수 없습니다 .

따라서 PRIMARY 및 SECONDARY와 같이 데이터베이스에 두 개의 파일 그룹이있는 경우 아래 언급 된 스크립트는 [SECONDARY]테이블 데이터에 대해 다른 파일 그룹 ( )을 언급했지만 행 데이터와 클러스터 된 인덱스 데이터를 모두 PRIMARY 파일 그룹 자체에 저장합니다 . 더 흥미롭게도 스크립트는 성공적으로 실행됩니다 (두 개의 다른 파일 그룹을 제공했을 때 오류가 발생할 것으로 예상했을 때 : P). SQL Server는 비하인드 스토리를 자동으로 스마트하게 수행합니다.

CREATE TABLE [dbo].[be_Categories](
    [CategoryID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_Categories_CategoryID]  DEFAULT (newid()),
    [CategoryName] [nvarchar](50) NULL,
    [Description] [nvarchar](200) NULL,
    [ParentID] [uniqueidentifier] NULL,
 CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED 
(
    [CategoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [SECONDARY]
GO

참고 : 생성되는 인덱스가 본질적으로 클러스터되지 않은 경우에만 인덱스가 다른 파일 그룹에 상주 할 수 있습니다 .

비 클러스터형 인덱스를 생성하는 아래 스크립트 [SECONDARY]는 테이블 데이터가 이미 [PRIMARY]파일 그룹 에있는 경우 파일 그룹 에서 생성 됩니다.

CREATE NONCLUSTERED INDEX [IX_Categories] ON [dbo].[be_Categories]
(
    [CategoryName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Secondary]
GO

비 클러스터형 인덱스를 다른 파일 그룹에 저장하면 쿼리 성능을 향상시키는 방법에 대한 자세한 정보를 얻을 수 있습니다. 다음 은 그러한 링크 중 하나입니다.

참고 URL : https://stackoverflow.com/questions/2798213/what-does-on-primary-mean

반응형