sql >> データベース >  >> RDS >> Sqlserver

あるコンピューターではパラメーターのスニッフィングが行われ、別のコンピューターではスニッフィングされない原因は何ですか?

    両方のマシンが同じサーバーに接続していたと仮定すると、不適切なプランが 2 つの接続間で共有されない原因となった設定の違いがあった可能性があります。

    接続で以前にキャッシュされたプランを再利用するには、ANSI_NULLS を含め、かなりの数の設定 (プラン キャッシュ キー) を同じにする必要があります。 、 ARITHABORTLanguageDATEFIRST およびデフォルト スキーマ (クエリが暗黙的な名前解決に依存している場合)。

    これらは、sys.dm_exec_plan_attributes で確認できます。 (is_cache_key=1 のもの 接続間で同じである必要があります)。

    is_cache_key=1 の属性の完全なリスト です

    dbid_execute
    required_cursor_options
    compat_level
    parent_plan_handle
    date_format
    language_id
    status
    merge_action_type
    is_replication_specific
    objectid
    acceptable_cursor_options
    date_first
    set_options
    user_id
    dbid
    optional_spid
    optional_clr_trigger_objid
    optional_clr_trigger_dbid
      

    set_options および cursor_options こちらに記載されている さまざまなオプションを構成するビット フラグです。 .私の実験では user_id 実際には schema_id(default_schema_name) を参照します principal_id ではなく .




    1. PostgresでCTEを使用して外部キーで複数の行を挿入するにはどうすればよいですか?

    2. MySQL、SQLを使用してテーブルに列が存在するかどうかを確認します

    3. RailsアプリケーションのPG::SyntaxError

    4. mysqlで日付のギャップを見つける