都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

SQL Server のチューニングについてまとめてみる - その16 - ( BCP とか、一括系の操作を高速化してみる )

 今日も移動時間を使用して、すばやく記事(文章雑になりがちww)を書きます。今日は関東暖かいですね♪
f:id:koogucc11:20160127160957p:plain

 さて、今回はふとした思いからチューニングシリーズを再開させたいと思います。その15で止まってました。
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com
ryuchan.hatenablog.com

 それ以外にも色々なチューニングに関する記事も書いていますので、是非ご覧ください。
ryuchan.hatenablog.com

 業務システム更新時などの悩みの一つに、『データの移行』があります。業務システムを新しくする場合、旧システムのデータをきちんと継続させるのは非常に重要なことですが、非常に骨の折れる作業ですよね。精神的にも辛いですよね、わかります....そこで、今回は BCP コマンドを例に使って高速化をしますので、BCP の使い方がよくわからない方は下記の記事を参考にしてください。
ryuchan.hatenablog.com

 早速試してみましょう。下記のコマンドをコマンドプロンプトで実行し、データをファイルに出力しましょう。

bcp AdventureWorks2016CTP3.Sales.OrderTracking out "C:\exportfile.txt" -c -S localhost -T

 SQL Server Management Studio で下記のコマンドを実行し、Sales.OrderTracking のデータを消去します。

TRUNCATE TABLE Sales.OrderTracking

f:id:koogucc11:20160127134341p:plain

 先ほどエクスポートしたデータをインポートします。下記のコマンドをコマンドプロンプトで実行します。

bcp AdventureWorks2016CTP3.Sales.OrderTracking in "C:\exportfile.txt" -c -S localhost -T

f:id:koogucc11:20160127155758p:plain

 再度、TRUNCATE し、下記のコマンドを SQL Server Management Studio で実行後に BCP コマンドを実行します。

DBCC TRACEON(610,-1)

f:id:koogucc11:20160127155120p:plain

 トレースフラグの状態を確認するため、下記のコマンドを SQL Server Management Studio で実行します。

DBCC TRACESTATUS

f:id:koogucc11:20160127160058p:plain

 再度下記のコマンドをコマンドプロンプトで実行します。

bcp AdventureWorks2016CTP3.Sales.OrderTracking in "C:\exportfile.txt" -c -S localhost -T

f:id:koogucc11:20160127160408p:plain

 結果は下記の通りです。

  • 610 のトレースフラグが OFF のとき
    3015m
  • 610 のトレースフラグが ON のとき
    2765m

 
 何回か試してみましたが、結果として1割から1.5割程度高速化されました。大量データの一括操作にはかなりの効果がありそうです。

高速化大事。

高速化プログラミング入門

高速化プログラミング入門