当对持久和非持久内存优化表运行大批量插入时,两者的速度相同。批量插入到非持久内存优化表的速度不应该比持久内存优化表快吗?如果是这样,我在这里做错了什么?
我的测试如下,持续大约需要 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