SQLバッチ追加データ

      自上周完成任务后还没安排新的任务,烦(qie)躁(xi)。
      今天打算安排两篇博客,这是第一篇,另一个是由这个再做的索引案例

1:予備準備
1.以前のデータベースが使用され、CopySQLTableDataテーブルとHierarchyDepartmentテーブルが使用されます
ここに画像の説明を挿入
。2.テーブルCopySQLTableDataをバッチで追加する必要があります

2:練習

1.最初のテストと9つの新しいテストの追加。実行速度に関しては、3秒が経過したように感じられます。これは1秒に3秒です(この比率は詳細に理解できます)。ここでも2つのボタンを開いています。特定の状況を後で見てみましょう。
私たちの素敵なQizai軍は攻撃する準備ができています、そして常に18である私たちここに画像の説明を挿入

ここに画像の説明を挿入

--批量数据
--循环添加数据
declare @i int --声明一个变量
set @i=1     --给变量赋值(初始化)
while @i<10   --循环插入
begin
	insert into CopySQLTableData ([Name],Sex,Age,CreationTime,Remark)
	values ('长江'+convert(varchar,@i)+'号',0,18,GETDATE(),'SQL批量新增-第一轮');
set @i=@i+1
end

GO

2.最初に実行プランを確認します。ここでは、9つのinsertステートメントがオーバーヘッドを共有しているため、簡単に理解できます
ここに画像の説明を挿入
。3。主にI / OとCPUのオーバーヘッドを確認します
ここに画像の説明を挿入
。4。次に、別のクライアントの統計を確認します。私たちが簡単に知って理解する必要があるのはこれら3つ、他は無意味で、理解できないものがあります...、18は挿入の9と@iの値です。9は挿入の効果です。以下の19は18 + 9 + @ i初期化;最後の3つは3ウェイハンドシェイクである必要があります(エラーが発生した場合は修正してください![一本经.jpg])
さらに、このクエリテスト1のヘッダーは、最初の実行のデータを示します。コードが再度実行されると、クエリテスト2があり、データの比較があります。以下を見てみましょう
ここに画像の説明を挿入
。5。ゴシップが終了したら、結果を見てみ
ここに画像の説明を挿入
ましょう。3:テスト後、正式なマスサイクル挿入を実行します。今度は100を追加しますケース
ここに画像の説明を挿入
1の場合。42分の実行後、まだ待つことができません...
ここに画像の説明を挿入
この実行にうんざりしています。CPU比は16〜17(I7〜9750H、6コア、12スレッド)です。停止後、0.1〜0.3割合... このデータ量の慣習は、通常、何気なく行うことではありません(データベースに切り替えている間、10秒間のフリーズがありました)
今回はどれだけのデータが実行されたかを見てみましょう。

…たった1.5kですか?間違いはありませんか?(平均速度は1秒あたり2 ......

2.問題を探し
ます
ここに画像の説明を挿入
。実行されているクライアントを確認します。青色の1つはCOUNT関数を実行しています。赤色の1つは、追加した新しいデータですか、それとも私はそれを信じられないのですか?I / O効率が低すぎるため、高効率のアプローチ
3.データを追加する時間を
ここに画像の説明を挿入
確認します。最初の速度はまだ問題ないことがわかります。1秒あたり10程度のデータが挿入されますが、18秒は少ない
ここに画像の説明を挿入
ため、後の期間の2分目は前の2分ほど良くありません。 1秒あたりの挿入数は理論的には当てはまりません
。4 データベースは何かによって制限されていますか?
ここに画像の説明を挿入
ここに画像の説明を挿入
それが問題かどうかはわかりません。助けを求めて大勢の人が通りかかっています。[お願いします] [お願いします]

4.新しい方法
見つける続行するには...予期しない問題、私はそれを解決する必要があり
ます。また、[狗头保命]でインデックス付けされたブログも、何百万ものデータが正式に追加されるまで遅延することを書きました。

加油ヾ(◍°∇°◍)ノ゙

ここに画像の説明を挿入

这是一个失败的方法,但是一篇成功的博客,让我认识到了理论与实践的差距
实践是检验真理的唯一标准  !!!!

おすすめ

転載: blog.csdn.net/qq_44471040/article/details/108706169