インメモリOLTP SQL Serverのテーブルメモリの最適化を使用します

お使いのシステムは、高並行性の要件がある場合は、システムのパフォーマンスを向上させるためにSQL Serverのテーブルメモリの最適化を使用して試すことができます。あなたも、としてそれを使用することができます使用するのRedis。

メモリテーブルの使用を最適化するために、最初は現在のメモリ最適化されたファイルのデータベースにサポートグループを追加します。

メモリ最適化されたファイルのグループ

データベース・ファイル・グループを既存の最適化するために、メモリを追加するには、次のスクリプトを使用することができます。

ALTER DATABASEのSomeDatabaseの
ADD FILEGROUPメモリが
MEMORY_OPTIMIZED_DATAが含まれています。

ALTER DATABASEのSomeDatabaseの
ADDのFILE 
        NAME = ' SomeDatabase_InMemory ' 
        FILENAME = ' E:\データベース\ SomeDatabase_InMemory ' 
TO FILEGROUPメモリ; 

ALTER DATABASE SomeDatabase 
SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON。
GO

 

メモリの最適化を可能にするためにMEMORY_OPTIMIZED = ONを使用して、テーブルメモリの最適化を作成します。

TABLE [DBO]を作成します。[CachedData] 
    [キー] [VARCHAR](900 )NOT NULL、
    [データ] [VARBINARY(MAX)NOT NULL、
    [有効期限] [DATETIME] NOT NULL、
    PRIMARY KEY NONCLUSTERED([キー] ASC) 
WITH(MEMORY_OPTIMIZED = ON)。

 

あなたが永続ストレージを必要としない場合は、他のデータをメモリオプティマイザテーブルを使用することができますこのように、使用することができDURABILITY = SCHEMA_ONLY、より良い性能を得るために:

高度な最適化

メモリテーブルの使用を最適化する過程で見つかった場合、または大規模なデータベースの並行処理圧力、メモリアクセスの最適化テーブルはメモリ不足するように求められますが、実際のメモリが十分にあります。実際には、これは誤報である、あなたはより多くの詳細については、Microsoftの公式ドキュメントを表示することができます。

単純にこの問題を解決するために、置くリソースガバナのデフォルトはオフになって、リソースガバナを開く必要があります。

より良いリソースの使用を管理するために、我々は別のリソースプールを作成するためのデータベースをキャッシュする必要があり、システムのデフォルトのリソースプールは、独立したを開きます。

リソースプールを作成します。

新しいリソースプールを作成します。

- 無効化リソースガバナ
ALTER RESOURCE GOVERNOR DISABLE。
GOは、
リソースプールCacheDbPool CREATE 
WITH 
    MAX_CPU_PERCENT = 50 
    MAX_MEMORY_PERCENT = 30 
)。
GO
 - 再設定リソースガバナ
 - 再設定は、リソースガバナができます
ALTER RESOURCE GOVERNOR RECONFIGUREを。
GO

 

詳細な製剤パラメータは、Microsoftの公式ドキュメントで見つけることができます。

バインドリソースプール

関連付けられた新しいリソースプールおよびデータベース:

- リソースプール付きバインドデータベース
EXEC sys.sp_xtp_bind_db_resource_pool @database_name = N ' SomeDatabase ' 
                                      @pool_nameが N = ' CacheDbPoolを' ; 

-データベースをオフラインにしてから開始するためにオンラインに戻ってそれを持って使用してリソースプールを。
GO 
に[マスター]。
GO 
ALTERデータベース[SomeDatabase] SET OFFLINE。
GO 
ALTERデータベース[SomeDatabase] SET ONLINE。
GO
 

このようなメモリ最適化が上がるように設定されています。

あなたはリソースプールを削除する必要がある場合は、アンバンドリングのデータベースに必要があります。

- アンバインドリソースプールと、それをドロップします。
EXEC sys.sp_xtp_unbind_db_resource_pool @database_name = N ' SomeDatabase ' 
DROP RESOURCE POOL CacheDbPool。

オリジナル住所:http://www.zkea.net/codesnippet/detail/sql-server-in-memory-oltp.html

おすすめ

転載: www.cnblogs.com/seriawei/p/sql-server-in-memory-oltp.html