1

SQL Server 2008 R2の既存のデータベースにfilestreamを実装しました。私が実行した場合WHERE句のFilestream列がサーバーをロックします

CREATE TABLE [dbo].[Table1](
    [Id] [int] IDENTITY(1,1), 
    [rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL, 
    [Image] [varbinary](max) FILESTREAM NULL, 
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
CONSTRAINT [Table1RowguidUnique] UNIQUE NONCLUSTERED 
(
    [rowguid] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
ALTER TABLE [dbo].[Table1] ADD CONSTRAINT [DF_table1_rowguid] DEFAULT (newid()) FOR [rowguid] 
GO 
ALTER TABLE dbo.Table1 
SET (FILESTREAM_ON = fsfg_LiveWebsite) 
GO 

:このような非常に単純なテーブルで

:私のサイトは現在、実質的にダウンしているとして今

私は非常に緊急の問題を抱えている

select * from Table1 where Id = 1 

それを非常に迅速に実行され、正しい結果が得られます。 where句の "Varbinary(max)FILESTREAM"フィールドで何かを実行すると、テーブル全体がロックダウンします。 だから例えば、これらの2つのいずれかのクエリ:

select Id from Table1 where Id = 1 and [Image] is null 
select Id from Table1 where Id = 1 and [Image] = convert(varbinary(max), 'a') 

これは何だろうか?

お気軽にご返信ください。

はあなたに

+0

ブロックされている間に 'sys.dm_os_waiting_tasks'を見ると、待ち時間の種類とリソースは何ですか? –

+1

サイトに実装する前にこれをテストしましたか?また、質問の用語を更新することをお勧めします。これは、ファイルストリームの列ではなく、「VARBINARY」列です。 –

+0

@MartinSmith dm_os_waiting_tasksと待機タイプは、実行中に再度照会すると連続的に変化します。 PREEMPTIVE_OS_GETFILESIZE、0/PREEMPTIVE_OS_FILEOPS、0/PREEMPTIVE_OS_CREATEFILE、2 /(結果なし)/ PREEMPTIVE_OS_CLOSEHANDLE、0 – Durden81

答えて

0

まず感謝し、何よりもあなたがVARBINARY列を照会したい場合は、フルテキスト検索を有効にして使用する必要があります。

参考文献

+0

私はfilestreamを実装する前に正常に動作していました。私が必要とする唯一のwhere節は、 "null"です。私はフルテキスト検索によって与えられる他の機能は必要ありません。また、私は常に一意のidも指定するので、varbinary(max)を1つだけチェックするだけです。私があなたの記事を読んだところでは、フルテキスト検索を有効にする必要がある、あるいは自分の状況を改善するとは言いません。 – Durden81

+0

実行計画を確認しましたか?あなたの環境を設定せずに、VARBINARYが索引付けされておらず、一意のIDを無関係にしているため、スキャンが実行されていると思います。そして、スキャンがファイルシステム上に行われました。 –

+0

推定された実行計画には何も表示されませんでした(作業の100%がPk_Table1のものであると言われました。正しいIDを見つけるために)。しかし、問題はそれが今のところ固定されているようです。 – Durden81