溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行Sqlserver數(shù)據(jù)寫入表的測試

發(fā)布時間:2021-11-29 13:49:41 來源:億速云 閱讀:224 作者:柒染 欄目:關(guān)系型數(shù)據(jù)庫

如何進(jìn)行Sqlserver數(shù)據(jù)寫入表的測試,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

1、創(chuàng)建表:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Table_3
(
id int NOT NULL,
company_id nvarchar(MAX) NULL,
number nvarchar(MAX) NULL,
code nvarchar(MAX) NULL,
input_tele bigint NULL,
type nvarchar(MAX) NULL
)  ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE dbo.Table_3 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT


2、測試表插入
對表插入200000條記錄:
set nocount on
declare @i int
set @i = 0
while @i < 200000
begin
insert into Table_3 values (@i,'abcd','123','234','345','567')
set @i = @i +1
end
go

耗時3分11秒。

dbcc showcontig('Table_3')
go
DBCC SHOWCONTIG 正在掃描 'Table_3' 表...
表: 'Table_3' (370100359);索引 ID: 0,數(shù)據(jù)庫 ID: 5
已執(zhí)行 TABLE 級別的掃描。
- 掃描頁數(shù)................................: 1482
- 掃描區(qū)數(shù)..............................: 188
- 區(qū)切換次數(shù)..............................: 187
- 每個區(qū)的平均頁數(shù)........................: 7.9
- 掃描密度 [最佳計數(shù):實際計數(shù)].......: 98.94% [186:188]
- 區(qū)掃描碎片 ..................: 1.60%
- 每頁的平均可用字節(jié)數(shù).....................: 403.7
- 平均頁密度(滿).....................: 95.01%
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。

未加索引表大小:
如何進(jìn)行Sqlserver數(shù)據(jù)寫入表的測試
加索引后表大?。?br/>dbcc showcontig('Table_3')
go

DBCC SHOWCONTIG 正在掃描 'Table_3' 表...
表: 'Table_3' (386100416);索引 ID: 1,數(shù)據(jù)庫 ID: 5
已執(zhí)行 TABLE 級別的掃描。
- 掃描頁數(shù)................................: 1087
- 掃描區(qū)數(shù)..............................: 136
- 區(qū)切換次數(shù)..............................: 135
- 每個區(qū)的平均頁數(shù)........................: 8.0
- 掃描密度 [最佳計數(shù):實際計數(shù)].......: 100.00% [136:136]
- 邏輯掃描碎片 ..................: 0.00%
- 區(qū)掃描碎片 ..................: 3.68%
- 每頁的平均可用字節(jié)數(shù).....................: 0.3
- 平均頁密度(滿).....................: 100.00%
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
如何進(jìn)行Sqlserver數(shù)據(jù)寫入表的測試

清空表數(shù)據(jù)。
修改表結(jié)構(gòu):
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Table_3
(
id int NOT NULL,
company_id varchar(50) NULL,
number varchar(50) NULL,
code varchar(50) NULL,
input_tele bigint NULL,
type varchar(50) NULL
)  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_Table_3 SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.Table_3)
EXEC('INSERT INTO dbo.Tmp_Table_3 (id, company_id, number, code, input_tele, type)
SELECT id, CONVERT(varchar(50), company_id), CONVERT(varchar(50), number), CONVERT(varchar(50), code), input_tele, CONVERT(varchar(50), type) FROM dbo.Table_3 WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.Table_3
GO
EXECUTE sp_rename N'dbo.Tmp_Table_3', N'Table_3', 'OBJECT' 
GO
COMMIT


對表插入200000條記錄:
set nocount on
declare @i int
set @i = 0
while @i < 200000
begin
insert into Table_3 values (@i,'abcd','123','234','345','567')
set @i = @i +1
end
go

耗時3分07秒。

dbcc showcontig('Table_3')
go

DBCC SHOWCONTIG 正在掃描 'Table_3' 表...
表: 'Table_3' (386100416);索引 ID: 0,數(shù)據(jù)庫 ID: 5
已執(zhí)行 TABLE 級別的掃描。
- 掃描頁數(shù)................................: 1143
- 掃描區(qū)數(shù)..............................: 145
- 區(qū)切換次數(shù)..............................: 144
- 每個區(qū)的平均頁數(shù)........................: 7.9
- 掃描密度 [最佳計數(shù):實際計數(shù)].......: 98.62% [143:145]
- 區(qū)掃描碎片 ..................: 2.07%
- 每頁的平均可用字節(jié)數(shù).....................: 397.0
- 平均頁密度(滿).....................: 95.10%
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。




truncate table Table_3后:
dbcc showcontig('Table_3')
go

DBCC SHOWCONTIG 正在掃描 'Table_3' 表...
表: 'Table_3' (386100416);索引 ID: 0,數(shù)據(jù)庫 ID: 5
已執(zhí)行 TABLE 級別的掃描。
- 掃描頁數(shù)................................: 0
- 掃描區(qū)數(shù)..............................: 0
- 區(qū)切換次數(shù)..............................: 0
- 每個區(qū)的平均頁數(shù)........................: 0.0
- 掃描密度 [最佳計數(shù):實際計數(shù)].......: 100.00% [0:0]
- 區(qū)掃描碎片 ..................: 0.00%
- 每頁的平均可用字節(jié)數(shù).....................: 0.0
- 平均頁密度(滿).....................: 0.00%
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。

對表加索引:
對id字段加主鍵聚集索引:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.Table_3 ADD CONSTRAINT
PK_Table_3 PRIMARY KEY CLUSTERED 
(
id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]


GO
ALTER TABLE dbo.Table_3 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT

對表插入200000條記錄:
set nocount on
declare @i int
set @i = 0
while @i < 200000
begin
insert into Table_3 values (@i,'abcd','123','234','345','567')
set @i = @i +1
end
go

dbcc showcontig('Table_3')
go

DBCC SHOWCONTIG 正在掃描 'Table_3' 表...
表: 'Table_3' (386100416);索引 ID: 1,數(shù)據(jù)庫 ID: 5
已執(zhí)行 TABLE 級別的掃描。
- 掃描頁數(shù)................................: 1087
- 掃描區(qū)數(shù)..............................: 139
- 區(qū)切換次數(shù)..............................: 138
- 每個區(qū)的平均頁數(shù)........................: 7.8
- 掃描密度 [最佳計數(shù):實際計數(shù)].......: 97.84% [136:139]
- 邏輯掃描碎片 ..................: 0.55%
- 區(qū)掃描碎片 ..................: 2.16%
- 每頁的平均可用字節(jié)數(shù).....................: 0.3
- 平均頁密度(滿).....................: 100.00%
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。

先加索引后插入數(shù)據(jù)后表大小:
如何進(jìn)行Sqlserver數(shù)據(jù)寫入表的測試

對于20W的數(shù)據(jù)量:
建好表,插入數(shù)據(jù),再加索引。
建好表,建好索引,再插入數(shù)據(jù)。
感覺時間花費上差不多,空間消耗上也差不多。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI