Sitecoreパフォーマンスブーストアドオン:TempDBを活用したセッション状態の高速化
Sitecoreには、SQL ServerのTempDBを活用することでセッション状態(session state)の操作を高速化するオプションが用意されています。しかしこの手法には、多くの開発者が見落としがちな落とし穴があります。それは、SQL Serverのサービス再起動時にtempdbが再作成されるという仕様です。その結果、tempdb内のテーブル構造やストアドプロシージャ、そしてユーザー権限を再度構築し直す必要が生じます。
セットアップスクリプトの場所
TempDBを利用するためのテーブル構造やストアドプロシージャを作成するスクリプトは、展開したSitecoreのZIPファイル内にある以下のパスに格納されています。
Sitecore 8.1 rev. xxxxxx\Databases\Scripts\Sessions db performance boost.sql
本記事ではこのファイルの内部動作については詳しく解説しませんが、一点だけ重要なポイントがあります。このスクリプトはMasterデータベース内にストアドプロシージャを作成し、TempDB上にテーブルとインデックスの構造を生成しますが、実際にアクセスするためのユーザー権限までは設定してくれません。
T-SQLによるテーブル構造とユーザー権限の再初期化
そこで、T-SQLを使ってテーブルとインデックスの構造を再初期化し、適切な権限を持つユーザーを再作成するスクリプトを用意します。なお、以下のコードはSessions db performance boost.sqlをすでに実行済みであることを前提としています。
exec [master].[dbo].[Sitecore_InitializeSessionState] --create the tables and indexes in TempDB
USE [tempdb]
IF NOT EXISTS(select name from sys.database_principals where name = 'cdsAccount') --continue if the db user account does not exist
BEGIN
CREATE USER [cdsAccount] FOR LOGIN [sql1\cdsaccount] --create the db user in tempdb
ALTER ROLE [db_datareader] ADD MEMBER [cdsAccount] -- assign the data reader role to our db user
ALTER ROLE [db_datawriter] ADD MEMBER [cdsAccount] -- assign the data writer role to our db user
END
このT-SQLの処理内容は以下の通りです。
- ストアドプロシージャ Sitecore_InitializeSessionState を実行し、TempDB内のテーブルとインデックス構造を再初期化する
- データベースユーザー cdsAccount が存在するかどうかを確認する
- ユーザーが存在しない場合のみ、ユーザーを作成し、db_datareader ロールと db_datawriter ロールをアカウントに割り当てる
SQL Server Agentジョブによる自動化
コード自体は用意できましたが、問題は「サービス再起動のタイミングでどうやって自動的に適用するか」です。これには、SQL Server Agentの起動時に実行されるよう設定したSQL Agentジョブを作成するのが有効です。
参考までに、SQLジョブを作成する完全な .sql スクリプトを公開リポジトリで提供しています。リポジトリ内のreadmeファイルには、環境に合わせて作成・確認対象となるデータベースユーザーの情報を書き換える必要がある箇所が明記されているので、導入前に必ず確認してください。
関連リソース
- SQL Agentジョブ付きT-SQLスクリプト(公開リポジトリ)
- SQL Serverパフォーマンス最適化に関するSitecore公式ドキュメント
- データベースに関する詳細情報
ご不明な点やコメントがありましたら、フィードバックタブからお気軽にお寄せください。私たちとの対話も歓迎します。
-
Windows PCのゲームパフォーマンスを向上させる5つの効果的な方法
ゲームが大好きなのに、スペック不足のパソコンではお気に入りのゲームを快適にプレイできない——そんな経験はありませんか?ゲームを起動するたびにシステムがフリーズしたり、突然クラッシュしたりするなら、コマ落ちや低フレームレートによるストレスはよく分かるはずです。この記事では、パソコンの動作速度を高め、Windowsでのゲームパフォーマンスを向上させるための、シンプルかつ効果的な方法を5つご紹介します。1. パソコンの構成(ハードウェア)を確認する一部のゲームは、パソコンの性能を自動的に判定し、必要に応じて設定を調整してくれます。しかし、ビデオカードやプロセッサがその変更に対応できず、かえってゲーム
-
Microsoft PC Managerとは?PCパフォーマンス向上に本当に役立つのか徹底解説
Windows向けのPC最適化・クリーンアップツールは以前から数多く存在しており、それらを目にしない日はないほど浸透しています。そんな中、Microsoftもようやくこのトレンドに本格的に対応し、システムのクリーンアップ、セキュリティ、最適化を1つにまとめた新アプリ「PC Manager」でPCクリーンアップツール市場に参入しました。 @ALumia_Italia氏によって発見されたMicrosoftのPC Managerアプリは、現在パブリックベータ版として公開されています。アプリ自体は特に革新的な機能を搭載しているわけではありませんが、Windows 11およびWindows 10ユーザー