SELECT を実行すると、パフォーマンスが低下.クエリを SQL Server 2012年にアップグレードし、それ以降の後に

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:3144525
現象
SQL Server 2012年またはそれ以降のバージョンの Microsoft SQL Server の 2008 R2 または以前のバージョンからアップグレードした後は、そのを選択することがあります.ユーザー定義関数を含むクエリで以前のバージョンよりも完了に長い時間がかかります。
原因
そのが選択されるため、この問題が発生します。ユーザー定義関数 (Udf) が含まれているステートメントは、ログに記録される操作し、SQL Server 2012年およびそれ以降のバージョンで追加時間がかかります。

注: <b>任意のを選択.以前のバージョンで最小ログ操作は、ユーザー定義関数を含むステートメント (SQL Server 2008 R2 以前のバージョン)。この変更は、ユーザー定義関数が同じオブジェクトに対して読み取り/書き込み操作を実行することがあり、最小限のログ記録が有効になっている場合にデータの破損が発生することが、データの整合性を確実にするために導入されました。
回避策
場合は、で使用されるユーザー定義関数を選択しています.ステートメントは、データ アクセス操作を実行しない、ユーザー定義関数の派生のUserDataAccessプロパティを 0 に設定は、ユーザー定義関数の SCHEMABINDING 句を指定できます。これを変更後、を選択しています.ステートメントが最小限記録されます。詳細については、 スキーマ バインディングの使用方法の例については、ブログのサンプル.

注: <b>ステートメントは、まだこのプロパティが 1 に設定されている 1 つ以上のユーザー定義関数を参照する場合、操作が完全に記録されます。
詳細
次のサンプル コードは、SQL Server 2008 R2 および SQL Server 2012年または 2014年の動作の違いを示しています。

create database DB1gouse DB1gocreate function dbo.MyTrim (@name as varchar(100))returns varchar (100)asbeginreturn (RTRIM(ltrim(@name)))endgocreate table dbo.tab_prod (c1 int, c2 varchar(10))godeclare @a int set @a = 1while @a <= 100000begin insert into tab_prodvalues (@a , '  test ')set @a = @a + 1endbegin transelect  *,  dbo.mytrim(c2) as trimc2 into tab_test from tab_prod

次の表は、SQL Server 2008 R2 の選択に操作を SQL Server の 2014年の CPU 時間を比較します。

バージョン実行時間 (CPU 時間)
SQL Server 2008 R2719 ms
SQL Server 20141360 ms

次の表は、SQL Server 2008 R2 の選択に操作を SQL Server の 2014年のトランザクション ログの使用率を比較します。

バージョンデータベース名ログ サイズ (MB)ログ領域は、(%) を使用します。状態
SQL Server 2008 R2DB10.742187551.578950
SQL Server 2014DB132.1796938.44380
重要な注意事項結果をこれらのテーブルで、SQL Server 2008 R2 と SQL Server の 2014年の間での動作の変更の例だけであり、このテストに使用したラボ環境に非常に特定。環境内での実際のパフォーマンスの違いは、[SQL インスタンスを実行しているハードウェアによって異なります。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。

警告: この記事は自動翻訳されています

プロパティ

文書番号:3144525 - 最終更新日: 03/03/2016 22:39:00 - リビジョン: 1.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3144525 KbMtja
フィードバック