1. セッション状態

チュートリアル: SQLを使用したプライベート・セッション状態データベースの構成

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

プライベートセッションステートでは、セッションステートデータベースは、閲覧したページ、コンバージョンされたゴール、トリガーされたキャンペーン、蓄積されたエンゲージメントポイントなど、特定のインタラクションに関連するすべてのデータを収集して保存します。

このトピックでは、Sitecore ASP.NET Session State Provider for SQL Serverを使用してSQL Serverデータベースをプライベート セッション状態ストアとして構成する方法について説明します。

SQL Serverプロバイダーは、xDBがWebサイトへのアクセスを追跡するために必要なセッション終了イベントをサポートしています。

SQL Serverセッション データベースをデプロイする

このSitecore ASP.NET Session State Provider for SQL Serverを使用すると、SQL Serverをセッション状態ストアとして使用できます。このプロバイダーは、xDBがWebサイトへのアクセスを追跡するために必要なSessionEndイベントをサポートしています。

メモ

共有セッション状態情報とプライベート・セッション状態情報を同じデータベースに格納できます。データベースは、セッションのタイプを区別できます。

SQL Serverセッション データベースをデプロイするには、次の操作を行う必要があります。

  1. Microsoft SQL Server Management Studio 2012以降を起動します。

  2. セッション・データベースをインストールするサーバー・ノードに接続します。

  3. サーバー・ノードを展開し、「 データベース 」を右クリックして、「 アタッチ」をクリックします。

  4. [データベースのアタッチ]ダイアログ ボックスで、追加 をクリックします。

  5. WebサイトのルートフォルダのDatabasesフォルダを参照し、Sitecore.Sessions.mdfデータベースを選択して[OK]をクリックします。

  6. [データベースのアタッチ]ダイアログ ボックスで、OK]をクリックします。セッション・データベースがアタッチされたデータベースのリストに表示されます。

  7. 次の接続文字列をConnectionStrings.configファイルに追加します。

    <add name="session" connectionString="user
            id=_sql_server_user_;password=_user_password_;Data
            Source=_sqlserver_;Database = _session_database_name_"/>

SQL Serverのパフォーマンスの最適化

Webリクエストごとに、Sitecoreはセッション状態ストア データベースに複数回アクセスします。これは、Webサイトのパフォーマンスに大きな影響を与える可能性があります。したがって、Microsoft SQL Serverがセッション状態データベースをメモリに保持できるように、十分なRAMをインストールする必要があります。また、データベースファイルをSSDドライブに配置する必要があります。

最適なパフォーマンスを実現するために、Sessionsデータベースに拡張機能をインストールできます。

パフォーマンス拡張機能をインストールするには:

  1. Microsoft SQL Server Management Studioで、Sessions db performance boost.sqlファイルを開きます。このファイルは、Sitecoreインストールの \Databases\Scriptsフォルダーに保存されます。

  2. Sessions db performance boost.sqlファイルの最初の行で、USE Sitecore_Sessionsをセッション データベースの名前に置き換えます。

  3. EXECUTE Sitecore_Sessions.dbo.CreateTables行目のSitecore_Sessionsをセッション・データベースの名前に置き換えます。

  4. セッション・データベースを指すように文を更新したら、F5キーを押してファイルを実行します。

手記

これらのパフォーマンス強化により、セッション状態ストアはSQL Server tempDBに移行されます。これは、Microsoftが推奨する標準的な方法です。すべてのユーザーはtempDBにアクセスできる必要があります。ただし、SQL Serverが再起動されるたびに、tempDBが再作成され、アクセス権がリセットされます。ユーザーが常にtempDBにアクセスできるようにする方法については、このKB記事を参照してください。詳細については、MSDNの「セッション状態モード 」を参照してください。

手記

tempdbシステム データベースは、現在Azure SQL Databaseサービスではサポートされていません。

Sitecoreの設定

SQL Serverのプライベート セッション状態プロバイダーを使用するようにSitecoreを設定するには:

  1. サイトのルート フォルダーで、web.configファイルを開き、sessionState行を見つけます。

     <sessionState mode="InProc" cookieless="false" timeout="20" 
        sessionIDManagerType="Sitecore.SessionManagement.ConditionalSessionIdManager">

    この行を次のように変更します。

    <sessionState mode="Custom"
        customProvider="mssql" cookieless="false"
        timeout="20">
  2. 次の例に示すように、SQL Serverプロバイダーを追加して、sessionStateセクションを更新します。name属性値をmssqlに変更します。

    <sessionState mode="Custom" customProvider="mssql" cookieless="false" timeout="20">
      <providers>
        <add name="mssql" 
            type="Sitecore.SessionProvider.Sql.SqlSessionStateProvider,
            Sitecore.SessionProvider.Sql" 
            connectionStringName="session" 
            pollingInterval="2" 
            compression="true" 
            sessionType="private"/>
      </providers>
    </sessionState>

プライベートセッションの状態設定を調整する

セッション状態を構成する場合、web.configファイルには次の構成オプションがあります。

設定

形容

connectionStringName

Sitecoreがセッション データベースへの接続に使用する接続文字列が含まれます。

編集して、使用するセッション状態データベースを指定します。xDBでは、このデータベースはセッションと呼ばれます。

connectionStringName="session"
pollingInterval

セッション状態プロバイダーがセッションの有効期限が切れているかどうかを確認するために使用する時間間隔を秒単位で指定します。

pollingInterval="2"
compression

セッション状態データを圧縮することを示します。

デフォルト値はtrueです。セッション状態データを圧縮すると、データベースとSitecoreインスタンス間で転送する必要があるデータの量が減ります。これにより、追加のCPUオーバーヘッドが発生する可能性があります。

compression="true"
sessionType

セッション・ステートのタイプがprivatesharedかを示します。

sessionType="private"
この記事を改善するための提案がある場合は、 お知らせください!