2017-05-05 3 views
1

大きなバルクインサートを耐久性と耐久性のないメモリ最適化テーブルに実行すると、私は両方に対して同じ速度を得ています。耐久性のないメモリ最適化テーブルへの一括挿入の速度は、耐久性のあるメモリ最適化テーブルより速いはずですか?もしそうなら、私はここで間違って何をしていますか?メモリに最適化された非耐久性テーブルへのバルクインサートは、耐久性テーブルと同じスピードになっているのはなぜですか?

私のテストは以下の通りです。一貫して〜30秒かかります。これはSQL Server 2016 SP1です。バルク挿入は、私が生成したcsvファイルから1000万行です。

SQL

CREATE TABLE Users_ND (
    Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=10000000), 
    Username VARCHAR(200) NOT NULL 
) WITH (MEMORY_OPTIMIZED=ON, DURABILITY = SCHEMA_ONLY); 

CREATE TABLE Users_D (
    Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=10000000), 
    Username VARCHAR(200) NOT NULL 
) WITH (MEMORY_OPTIMIZED=ON, DURABILITY = SCHEMA_AND_DATA); 

SET STATISTICS TIME ON; 
SET NOCOUNT ON; 

BULK INSERT Users_ND 
FROM 'users-huge.csv' 
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', BATCHSIZE = 1000000); 

BULK INSERT Users_D 
FROM 'users-huge.csv' 
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', BATCHSIZE = 1000000); 

ユーザー-huge.csv

Id, Username 
,user1 
,user2 
... 
,user10000000 
+2

あなたの遅延耐性設定は何ですか?データがすべてロードされる前にディスクへの書き込みを開始しない場合、ロードは確実に同じ時間を要します。また、システムに存在する可能性があるディスク書き込みキャッシングも考慮してください。 –

+0

また、I/OではなくCPUがパフォーマンスの限界要因になると考えてください。 –

答えて

0

は私が原因一括挿入用のソースファイルがそのように、遅いHDDに保存されたという事実のために、この問題を持っていたが判明ファイルを読む際にボトルネックがありました。

関連する問題