메모리 최적화 관리자Memory Optimization Advisor

이 항목은 다음에 적용됩니다.예SQL Server(2014부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

트랜잭션 성능 분속 보고서( 메모리 내 OLTP에 테이블 또는 저장 프로시저를 이식해야 하는지 확인참조)는 메모리 내 OLTP를 사용하도록 변환할 경우 효과를 얻을 수 있는 데이터베이스 테이블을 알려 줍니다.Transaction Performance Analysis reports (see Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP) informs you about which tables in your database will benefit if ported to use In-Memory OLTP. 메모리 내 OLTP를 사용하도록 포팅할 테이블을 식별한 후 SQL Server Management Studio의 메모리 최적화 관리자를 사용하여 디스크 기반 테이블을 메모리 액세스에 최적화된 테이블로 마이그레이션할 수 있습니다.After you identify a table that you would like to port to use In-Memory OLTP, you can use the memory optimization advisor in SQL Server Management Studio to help you migrate the disk-based table to a memory-optimized table.

메모리 액세스 최적화 관리자를 통해 다음 작업을 할 수 있습니다.The memory-optimization advisor allows you to:

메모리 최적화 관리자 사용 연습Walkthrough Using the Memory-Optimization Advisor

개체 탐색기에서 변환할 테이블을 마우스 오른쪽 단추로 클릭하고 메모리 최적화 관리자를 선택합니다.In Object Explorer, right click the table you want to convert, and select Memory-Optimization Advisor. 테이블 메모리 최적화 관리자시작 페이지가 표시됩니다.This will display the welcome page for the Table Memory Optimization Advisor.

메모리 최적화 검사 목록Memory Optimization Checklist

테이블 메모리 최적화 관리자 시작 페이지에서 다음을 클릭하면 메모리 최적화 검사 목록이 표시됩니다.When you click Next in the welcome page for the Table Memory Optimization Advisor, you will see the memory optimization checklist. 메모리 액세스에 최적화된 테이블은 디스크 기반 테이블의 기능 중 일부를 지원하지 않습니다.Memory-optimized tables do not support all the features in a disk-based table. 메모리 액세스 최적화 검사 목록은 디스크 기반 테이블에 메모리 액세스에 최적화된 테이블과 호환되지 않는 기능이 사용되는지 여부를 보고합니다.The memory optimization checklist reports if the disk-based table uses any features that are incompatible with a memory-optimized table. 테이블 메모리 최적화 관리자 는 메모리 내 OLTP 사용을 위해 마이그레이션이 가능하도록 디스크 기반 테이블을 수정하는 작업은 수행하지 않습니다.The Table Memory Optimization Advisor does not modify the disk-based table so that it can be migrated to use In-Memory OLTP. 마이그레이션을 계속하려면 먼저 사용자가 테이블을 변경해야 합니다.You must make those changes before continuing migration. 호환되지 않는 기능이 발견되면 테이블 메모리 최적화 관리자 는 디스크 기반 테이블을 수정하는 데 도움이 되는 링크를 표시합니다.For each incompatibility found, the Table Memory Optimization Advisor displays a link to information that can help you modify your disk-based tables.

마이그레이션 계획을 위해 호환되지 않는 기능 목록을 보관하려면 보고서 생성 을 클릭하여 HTML 목록을 생성합니다.If you wish to keep a list of these incompatibilities, to plan your migration, click the Generate Report to generate a HTML list.

테이블에 호환되지 않는 기능이 없고 메모리 내 OLTP 기능이 있는 SQL Server 2014SQL Server 2014 인스턴스에 연결된 경우 다음을 클릭합니다.If your table has no incompatibilities and you are connected to a SQL Server 2014SQL Server 2014 instance with In-Memory OLTP, click Next.

메모리 최적화 경고Memory Optimization Warnings

다음에 표시되는 메모리 최적화 경고 페이지에는 메모리 내 OLTP를 사용하도록 테이블을 마이그레이션하는 데 방해가 되지는 않지만 저장 프로시저 또는 CLR 함수와 같은 다른 개체의 동작이 실패하거나 예기치 않은 동작을 야기할 수 있는 문제 목록이 제공됩니다.The next page, memory optimization warnings, contains a list of issues that do not prevent the table from being migrated to use In-Memory OLTP, but that may cause the behavior of other objects (such as stored procedures or CLR functions) to fail or result in unexpected behavior.

목록의 처음 몇 가지 경고는 정보 제공 목적으로만 제공되며 사용자 테이블에는 해당되지 않는 내용일 수도 있습니다.The first several warnings in the list are informational and may or may not apply to your table. 표의 오른쪽 열에 있는 링크는 자세한 정보로 연결됩니다.Links in the right-hand column of the table will take you to more information.

경고 표에는 테이블에 존재하지 않는 잠재적 경고 조건도 표시됩니다.The warning table will also display potential warning conditions that are not present in your table.

조치 가능한 경고는 왼쪽 열에 노란색 삼각형이 표시됩니다.Actionable warnings will have a yellow triangle in the left-hand column. 조치 가능한 경고가 있는 경우 마이그레이션을 종료하고 경고를 해결한 후 프로세스를 다시 시작해야 합니다.If there are actionable warnings, you should exit the migration, resolve the warnings, and then restart the process. 경고를 해결하지 않을 경우 마이그레이션한 테이블에서 오류가 발생할 수 있습니다.If you do not resolve the warnings, your migrated table may cause a failure.

보고서 생성 을 클릭하여 HTML 경고 보고서를 생성합니다.Click Generate Report to generate an HTML report of these warnings. 계속 진행하려면 다음 을 클릭합니다.Click Next to proceed.

최적화 옵션 검토Review Optimization Options

다음 화면에서는 메모리 내 OLTP로의 마이그레이션에 대한 옵션을 수정할 수 있습니다.The next screen lets you modify options for the migration to In-Memory OLTP:

메모리 액세스에 최적화된 파일 그룹Memory-optimized filegroup
메모리 액세스에 최적화된 파일 그룹의 이름입니다.The name for your memory-optimized filegroup. 메모리 액세스에 최적화된 테이블을 만들려면 데이터베이스에 파일을 하나 이상 포함한 메모리 액세스에 최적화된 파일 그룹이 있어야 합니다.A database must have a memory-optimized filegroup with at least one file before a memory-optimized table can be created.

메모리 액세스에 최적화된 파일 그룹이 없는 경우 기본 이름을 변경할 수 있습니다.If you do not have a memory-optimized filegroup, you can change the default name. 메모리 액세스에 최적화된 파일 그룹은 삭제할 수 없습니다.Memory-optimized filegroups cannot be deleted. 메모리 액세스에 최적화된 파일 그룹이 있는 경우 자동 닫기 및 데이터베이스 미러링과 같은 일부 데이터베이스 수준 기능을 사용할 수 없을 수도 있습니다.The existence of a memory-optimized filegroup may disable some database-level features such as AUTO CLOSE and database mirroring.

데이터베이스에 메모리 액세스에 최적화된 파일 그룹이 있는 경우 이 필드가 해당 파일 그룹의 이름으로 미리 채워지며 필드 값을 변경할 수 없습니다.If a database already has a memory-optimized file group, this field will be pre-populated with its name and you will not be able to change the value of this field.

논리적 파일 이름 및 파일 경로Logical file name and File path
메모리 액세스에 최적화된 테이블을 포함할 파일의 이름입니다.The name of the file that will contain the memory-optimized table. 메모리 액세스에 최적화된 테이블을 만들려면 데이터베이스에 파일을 하나 이상 포함한 메모리 액세스에 최적화된 파일 그룹이 있어야 합니다.A database must have a memory-optimized file group with at least one file before a memory-optimized table can be created.

기존 메모리 액세스에 최적화된 파일 그룹이 없는 경우 마이그레이션 프로세스가 끝날 때 만들려는 파일의 기본 이름 및 경로를 변경할 수 있습니다.If you do not have an existing memory-optimized file group, you can change the default name and path of the file to be created at the end of the migration process.

기존 메모리 액세스에 최적화된 파일 그룹이 있는 경우 이러한 필드가 미리 채워지며 필드 값을 변경할 수 없습니다.If you have an existing memory-optimized filegroup, these fields will be pre-populated and you will not be able to change the values.

원래 테이블을 다른 이름으로 바꾸기Rename the original table as
마이그레이션 프로세스가 끝날 때 현재 테이블 이름으로 메모리 액세스에 최적화된 테이블이 새로 생성됩니다.At the end of the migration process, a new memory-optimized table will be created with the current name of the table. 이름 충돌을 방지하려면 현재 테이블의 이름을 바꿔야 합니다.To avoid a name conflict, the current table must be renamed. 이 필드에서 이름을 변경할 수 있습니다.You may change that name in this field.

예상 현재 메모리 비용(MB)Estimated current memory cost (MB)
메모리 최적화 관리자는 디스크 기반 테이블의 메타데이터를 기준으로 새 메모리 액세스에 최적화된 테이블에서 사용할 메모리 양을 예상합니다.The Memory-Optimization Advisor estimates the amount of memory the new memory-optimized table will consume based on metadata of the disk-based table. 테이블 크기 계산 방법은 메모리 액세스에 최적화된 테이블의 테이블 및 행 크기를 참조하세요.The calculation of the table size is explained in Table and Row Size in Memory-Optimized Tables.

충분한 메모리가 할당되지 않으면 마이그레이션 프로세스가 실패할 수 있습니다.If sufficient memory is not allotted, the migration process may fail.

메모리 액세스에 최적화된 테이블에 테이블 데이터도 함께 복사Also copy table data to the new memory optimized table
현재 테이블의 데이터도 함께 새 메모리 액세스에 최적화된 테이블로 이동하려는 경우 이 옵션을 선택합니다.Select this option if you wish to also move the data in the current table to the new memory-optimized table. 이 옵션을 선택하지 않으면 메모리 액세스에 최적화된 테이블이 행 없이 새로 생성됩니다.If this option is not selected, the new memory-optimized table will be created with no rows.

테이블을 기본적으로 영구 테이블로 마이그레이션The table will be migrated as a durable table by default
메모리 내 OLTP는 메모리 액세스에 최적화된 영구 테이블보다 우수한 성능을 지닌 비영구 테이블을 지원합니다.In-Memory OLTP supports non-durable tables with superior performance compared to durable memory-optimized tables. 하지만 비영구 테이블의 데이터는 서버를 다시 시작하면 손실됩니다.However, data in a non-durable table will be lost upon server restart.

이 옵션을 선택하면 메모리 최적화 관리자가 영구 테이블 대신 비영구 테이블을 만듭니다.If this option is selected, the Memory-Optimization Advisor will create a non-durable table instead of a durable table.

경고

비영구 테이블과 관련된 데이터 손실 위험에 대해 잘 알고 있는 경우에만 이 옵션을 선택하십시오.Select this option only if you understand the risk of data loss associated with non-durable tables.

계속하려면 다음 을 클릭합니다.Click Next to continue.

기본 키 변환 검토Review Primary Key Conversion

다음 화면은 기본 키 변환 검토화면입니다.The next screen is Review Primary Key Conversion. 메모리 최적화 관리자는 테이블에 하나 이상의 기본 키가 있는지 확인하고 기본 키 메타데이터를 기준으로 열 목록을 채웁니다.The Memory-Optimization Advisor will detect if there are one or more primary keys in the table, and populates the list of columns based on the primary key metadata. 기본 키가 없는 경우 메모리 액세스에 최적화된 영구 테이블로 마이그레이션하려면 기본 키를 만들어야 합니다.Otherwise, if you wish to migrate to a durable memory-optimized table, you must create a primary key.

기본 키가 없고 테이블을 비영구 테이블로 마이그레이션하는 경우에는 이 화면이 표시되지 않습니다.If a primary key doesn’t exist and the table is being migrated to a non-durable table, this screen will not appear.

텍스트 열( char, nchar, varcharnvarchar형식의 열)의 경우 적절한 데이터 정렬을 선택해야 합니다.For textual columns (columns with types char, nchar, varchar, and nvarchar) you must select an appropriate collation. 메모리 내 OLTP는 메모리 액세스에 최적화된 테이블의 열에 대해 BIN2 데이터 정렬만 지원하고 보조 문자를 사용한 데이터 정렬은 지원하지 않습니다.In-Memory OLTP only supports BIN2 collations for columns on a memory-optimized table and it does not support collations with supplementary characters. 지원되는 데이터 정렬 및 데이터 정렬 변경이 주는 잠재적 영향은 Collations and Code Pages 를 참조하십시오.See Collations and Code Pages for information on the collations supported and the potential impact of a change in collation.

기본 키에 대해 다음 매개 변수를 구성할 수 있습니다.You can configure the following parameters for the primary key:

이 기본 키의 새 이름 선택Select a new name for this primary key
이 테이블의 기본 키 이름이 데이터베이스 내에서 고유해야 합니다.The primary key name for this table must be unique inside the database. 여기에서 기본 키 이름을 변경할 수 있습니다.You may change the name of the primary key here.

이 기본 키의 유형 선택Select the type of this primary key
메모리 내 OLTP는 메모리 액세스에 최적화된 테이블에 대해 두 가지 유형의 인덱스를 지원합니다.In-Memory OLTP supports two types of indexes on a memory-optimized table:

  • 비클러스터형 해시 인덱스.A NONCLUSTERED HASH index. 이 인덱스는 포인트 조회가 많은 인덱스에 적합합니다.This index is best for indexes with many point lookups. 버킷 수 필드에 이 인덱스의 버킷 수를 구성할 수 있습니다.You may configure the bucket count for this index in the Bucket Count field.

  • 비클러스터형 인덱스.A NONCLUSTERED index. 이 유형의 인덱스는 범위 쿼리가 많은 인덱스에 적합합니다.This type of index is best for indexes with many range queries. 열 정렬 및 순서 목록의 각 열에 대해 정렬 순서를 구성할 수 있습니다.You may configure the sort order for each column in the Sort column and order list.

    기본 키에 적합한 인덱스 형식을 확인하려면 해시 인덱스를 참조하세요.To understand the type of index best for your primary key, see Hash Indexes.

    기본 키를 선택한 후 다음 을 클릭합니다.Click Next after you make your primary key choices.

인덱스 변환 검토Review Index Conversion

다음 페이지는 인덱스 변환 검토페이지입니다.The next page is Review Index Conversion. 메모리 최적화 관리자는 테이블에 하나 이상의 인덱스가 있는지 확인하고 열 및 데이터 형식 목록을 채웁니다.The Memory-Optimization Advisor will detect if there are one or more indexes in the table, and populates the list of columns and data type. 인덱스 변환 검토 페이지에서 구성할 수 있는 매개 변수는 앞의 기본 키 변환 검토 페이지와 유사합니다.The parameters you can configure in the Review Index Conversion page are similar to the previous, Review Primary Key Conversion page.

테이블에 기본 키만 있고 영구 테이블로 마이그레이션하는 경우에는 이 화면이 표시되지 않습니다.If the table only has a primary key and it’s being migrated to a durable table, this screen will not appear.

테이블의 모든 인덱스에 대해 적절한 설정을 지정한 후 다음을 클릭합니다.After you make a decision for every index in your table, click Next.

마이그레이션 작업 확인Verify Migration Actions

다음 페이지는 마이그레이션 작업 확인페이지입니다.The next page is Verify Migration Actions. 마이그레이션 작업을 스크립팅하려면 스크립트 를 클릭하여 Transact-SQLTransact-SQL 스크립트를 생성합니다.To script the migration operation, click Script to generate a Transact-SQLTransact-SQL script. 그런 다음 스크립트를 수정하고 실행할 수 있습니다.You may then modify and execute the script. 마이그레이션 을 클릭하여 테이블 마이그레이션을 시작합니다.Click Migrate to begin the table migration.

프로세스가 완료되면 개체 탐색기 를 새로 고쳐 새 메모리 액세스에 최적화된 테이블 및 이전의 디스크 기반 테이블이 표시되는지 확인합니다.After the process is finished, refresh Object Explorer to see the new memory-optimized table and the old disk-based table. 편의대로 테이블을 유지하거나 삭제할 수 있습니다.You can keep the old table or delete it at your convenience.

참고 항목See Also

메모리 내 OLTP로 마이그레이션Migrating to In-Memory OLTP