Amazon RDS で実行している Microsoft SQL Server DB インスタンスの tempdb データベースへのアクセス - Amazon Relational Database Service

Amazon RDS で実行している Microsoft SQL Server DB インスタンスの tempdb データベースへのアクセス

Amazon RDS で実行している Microsoft SQL Server DB インスタンスの tempdb データベースにアクセスできます。tempdb に対してコードを実行するには、Microsoft SQL Server Management Studio (SSMS) 経由で Transact-SQL を使用するか、他の標準の SQL クライアントアプリケーションを使用します。DB インスタンスへの接続の詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスに接続する」を参照してください。

DB インスタンスのマスターユーザーは、CONTROL への tempdb アクセスが付与されるため、tempdb データベースオプションを変更できます。マスターユーザーは、tempdb データベースの所有者ではありません。必要に応じて、マスターユーザーは他のユーザーに CONTROL アクセスを付与し、他のユーザーにも tempdb データベースオプションを変更することを許可できます。

注記

tempdb データベースに対して Database Console Command (DBCC) を実行することはできません。

tempdb データベースオプションの変更

Amazon RDS DB インスタンスで tempdb データベースのデータベースオプションを変更できます。変更可能なオプションの詳細については、Microsoft ドキュメントの「tempdb データベース」を参照してください。

ファイルの最大サイズオプションなどのデータベースオプションは、DB インスタンスの再起動後も保持されます。データベースオプションを変更して、データをインポートする際のパフォーマンスを最適化したり、ストレージ不足を防止したりすることができます。

データをインポートする際のパフォーマンスの最適化

大量のデータを DB インスタンス内にインポートする際のパフォーマンスを最適化するには、tempdb データベースの SIZE プロパティと FILEGROWTH プロパティに大きな数値を設定します。tempdb を最適化する方法の詳細については、Microsoft ドキュメントの「tempdb のパフォーマンスの最適化」を参照してください。

以下の例では、ファイルサイズを 100 GB に、ファイルの拡張単位を 10 パーセントに設定しています。

alter database[tempdb] modify file (NAME = N'templog', SIZE=100GB, FILEGROWTH = 10%)

ストレージの問題の防止

tempdb データベースによる使用可能なディスク容量の占有を防止するには、MAXSIZE プロパティを設定します。次の例では、プロパティを 2048 MB に設定しています。

alter database [tempdb] modify file (NAME = N'templog', MAXSIZE = 2048MB)

tempdb データベースの圧縮

Amazon RDS DB インスタンスの tempdb データベースを圧縮するには、2 つの方法があります。rds_shrink_tempdbfile プロシージャを使用するか、SIZE プロパティを設定できます。

rds_shrink_tempdbfile プロシージャの使用

Amazon RDS プロシージャ msdb.dbo.rds_shrink_tempdbfile を使用すると、tempdb データベースを圧縮できます。rds_shrink_tempdbfileCONTROL にアクセスできる場合にのみ、tempdb を呼び出すことができます。rds_shrink_tempdbfile を呼び出すとき、DB インスタンスのダウンタイムはありません。

rds_shrink_tempdbfile プロシージャには以下のパラメータがあります。

パラメータ名 データ型 デフォルト 必須 説明

@temp_filename

SYSNAME

必須

圧縮するファイルの論理名。

@target_size

int

null

optional

ファイルの新しいサイズ (メガバイト単位)。

次の例では、tempdb データベース用にファイル名を取得します。

use tempdb; GO select name, * from sys.sysfiles; GO

以下の例では、tempdb という名前の test_file データベースファイルを圧縮し、新しいサイズとして 10 メガバイトをリクエストしています。

exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'test_file', @target_size = 10;

SIZE プロパティの設定

tempdb を設定して DB インスタンスを再起動することでも、SIZE データベースを圧縮できます。DB インスタンスの再起動の詳細については、「 DB インスタンスの再起動」を参照してください。

次の例では、SIZE プロパティを 1024 MB に設定しています。

alter database [tempdb] modify file (NAME = N'templog', SIZE = 1024MB)

マルチ AZ 配置に関する考慮事項

Amazon RDS DB インスタンスが、マルチ AZ 配置の Microsoft SQL Server でのデータベースのミラーリング (DBM) または AlwaysOn 可用性グループ (AG) である場合、いくつかの考慮すべき事項があります。

tempdb データベースをレプリケートできません。プライマリインスタンスに保存した一切のデータは、セカンダリインスタンスにレプリケーションされません。

tempdb データベースのデータベースオプションを変更した場合、その変更は以下のいずれかの方法でセカンダリに取り込むことができます。

  • まず DB インスタンスを変更してマルチ AZ を無効にします。次に tempdb を変更し、最後にマルチ AZ を再度有効にします。この方法に伴うダウンタイムはありません。

    詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。

  • まず元のプライマリインスタンスで tempdb を変更します。次に手動でフェイルオーバーし、最後に新しいプライマリインスタンスで tempdb を変更します。このメソッドではダウンタイムが生じます。

    詳細については、「 DB インスタンスの再起動」を参照してください。