메모리 액세스에 최적화된 파일 그룹The Memory Optimized Filegroup

메모리 액세스에 최적화된 테이블을 만들려면 먼저 메모리 액세스에 최적화된 파일 그룹을 만들어야 합니다.To create memory-optimized tables, you must first create a memory-optimized filegroup. 메모리 액세스에 최적화된 파일 그룹에는 컨테이너가 하나 이상 포함되어 있고,The memory-optimized filegroup holds one or more containers. 각 컨테이너에는 데이터 파일이나 델타 파일, 또는 둘 다 포함되어 있습니다.Each container contains data files or delta files or both.

SCHEMA_ONLY 테이블의 데이터 행이 유지되지 않고 메모리 액세스에 최적화된 테이블의 메타데이터와 고유하게 컴파일된 저장 프로시저가 기존 카탈로그에 저장되지만 메모리 내 OLTPIn-Memory OLTP 엔진에는 메모리 액세스에 최적화된 테이블이 있는 데이터베이스에 대한 균일한 환경을 제공하기 위해 SCHEMA_ONLY 메모리 액세스에 최적화된 테이블에 대해 메모리 액세스에 최적화된 파일 그룹이 여전히 필요합니다.Even though data rows from SCHEMA_ONLY tables are not persisted and the metadata for memory-optimized tables and natively compiled stored procedures is stored in the traditional catalogs, the 메모리 내 OLTPIn-Memory OLTP engine still requires a memory-optimized filegroup for SCHEMA_ONLY memory-optimized tables to provide a uniform experience for databases with memory-optimized tables.

메모리 액세스에 최적화된 파일 그룹은 다음과 같은 차이를 두고 파일 스트림 파일 그룹을 기반으로 합니다.The memory-optimized filegroup is based on filestream filegroup, with the following differences:

  • 데이터베이스당 하나의 메모리 액세스에 최적화된 파일 그룹만 만들 수 있습니다.You can only create one memory-optimized filegroup per database. 파일 그룹을 포함된 memory_optimized_data로 명시적으로 표시해야 합니다.You need to explicitly mark the filegroup as containing memory_optimized_data. 데이터베이스를 만들 때 파일 그룹을 만들거나 나중에 추가할 수 있습니다.You can create the filegroup when you create the database or you can add it later:

    ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA  
    
  • MEMORY_OPTIMIZED_DATA 파일 그룹에 하나 이상의 컨테이너를 추가해야 합니다.You need to add one or more containers to the MEMORY_OPTIMIZED_DATA filegroup. 예를 들어For example:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • 메모리 액세스에 최적화된 파일 그룹을 만들기 위해 파일 스트림을 사용할 필요가 없습니다(FILESTREAM 사용 및 구성).You do not need to enable filestream (Enable and Configure FILESTREAM) to create a memory-optimized filegroup. 파일 스트림에 대한 매핑을 메모리 내 OLTPIn-Memory OLTP 엔진이 수행합니다.The mapping to filestream is done by the 메모리 내 OLTPIn-Memory OLTP engine.

  • 새 컨테이너를 메모리 액세스에 최적화된 파일 그룹에 추가할 수 있습니다.You can add new containers to a memory-optimized filegroup. 메모리 액세스에 최적화된 내구성이 있는 테이블에 필요한 저장소를 확장하고 여러 컨테이너 간에 IO를 분산하기 위해 새 컨테이너가 필요할 수 있습니다.You may need a new container to expand the storage needed for durable memory-optimized table and also to distribute IO across multiple containers.

  • 메모리 액세스에 최적화된 파일 그룹이 포함된 데이터 이동은 Always On 가용성 그룹 구성에 최적화되어 있습니다.Data movement with a memory-optimized filegroup is optimized in an Always On Availability Group configuration. 보조 복제본에 전송되는 파일 스트림 파일과는 달리 메모리 액세스에 최적화된 파일 그룹 내에 있는 검사점 파일(데이터 및 델타)은 보조 복제본에 전송되지 않습니다.Unlike filestream files that are sent to secondary replicas, the checkpoint files (both data and delta) within the memory-optimized filegroup are not sent to secondary replicas. 보조 복제본에서 트랜잭션 로그를 사용하여 데이터 및 델타 파일이 생성됩니다.The data and delta files are constructed using the transaction log on the secondary replica.

    다음은 메모리 액세스에 최적화된 파일 그룹의 제한 사항입니다.The following limitations of memory-optimized filegroup,

  • 메모리 액세스에 최적화된 파일 그룹을 만들었으면 데이터베이스를 삭제하는 방식으로만 제거할 수 있습니다.Once you create a memory-optimized filegroup, you can only remove it by dropping the database. 프로덕션 환경에서 메모리 액세스에 최적화된 파일 그룹을 제거하지 않아도 됩니다.In a production environment, it is unlikely that you will need to remove the memory-optimized filegroup.

  • 비어 있지 않은 컨테이너를 제거하거나 데이터 및 델타 파일 쌍을 메모리 액세스에 최적화된 파일 그룹의 다른 컨테이너로 이동할 수 없습니다.You cannot drop a non-empty container or move data and delta file pairs to another container in the memory-optimized filegroup.

  • 컨테이너에 MAXSIZE를 지정할 수 없습니다.You cannot specify MAXSIZE for the container.

메모리 액세스에 최적화된 파일 그룹 구성Configuring a Memory-Optimized Filegroup

메모리 액세스에 최적화된 파일 그룹에 여러 컨테이너를 만들고 다른 드라이브에 분산하여 메모리에 데이터를 스트리밍하는 더 많은 대역폭을 얻어야 합니다.You should consider creating multiple containers in the memory-optimized filegroup and distribute them on different drives to achieve more bandwidth to stream the data into memory.

저장소를 구성할 때 메모리 액세스에 최적화된 내구성이 있는 테이블 크기의 4배 정도의 여유 디스크 공간을 제공해야 합니다.When configuring storage, you must provide free disk space that is four times the size of durable memory-optimized tables. IO 하위 시스템이 작업에 필요한 IOPS를 지원하는지 확인해야 합니다.You must also ensure that your IO subsystem supports the required IOPS for your workload. 제공된 IOPS에 데이터 및 델타 파일 쌍이 채워지는 경우 저장 및 병합 작업 계정에 대한 IOPS의 3배가 필요합니다.If data and delta file pairs are populated at a given IOPS, you need 3 times that IOPS to account for storing and merge operations. 메모리 액세스에 최적화된 파일 그룹에 하나 이상의 컨테이너를 추가하여 저장소 용량 및 IOPS를 추가할 수 있습니다.You can add storage capacity and IOPS by adding one or more containers to the memory-optimized filegroup.

참고 항목See Also

메모리 액세스에 최적화된 개체의 저장소 만들기 및 관리Creating and Managing Storage for Memory-Optimized Objects