0

当对持久和非持久内存优化表运行大批量插入时,两者的速度相同。批量插入到非持久内存优化表的速度不应该比持久内存优化表快吗?如果是这样,我在这里做错了什么?

我的测试如下,持续大约需要 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);

用户巨大的.csv

Id, Username
,user1
,user2
...
,user10000000
4

1 回答 1

2

原来我遇到了这个问题,因为批量插入的源文件保存在慢速 HDD 上,因此读取文件存在瓶颈。

于 2017-05-10T13:45:52.540 回答