Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Nodes(). паралелизм включается при заворачивании в подзапрос  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Хмлка 30 мб кладется в поле времянки.
Сверху примари хмл индекс.
Дальше выгребается несколько колонок 3 - 15 (поведение не меняется), и заливается в другую временную таблицу с айдентити полем.

Сам план паралелится, но часть с чтением из хмл инлекса в один поток.
Если завернуть селект в подзапрос паралелится все.

Кто нибудь сталкивался с подобным?
Пс. на 2008 и 2014 серверах
18 май 17, 22:08    [20494340]     Ответить | Цитировать Сообщить модератору
 Re: Nodes(). паралелизм включается при заворачивании в подзапрос  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Воспроизведение




+


declare @xml xml =
(

	select 
		[@num] =  n.ID,
		[Str1/@value] = cast(n.ID as varchar) + ' ' + REPLICATE('a', 1000),
		[Str2/@value] = cast(n.ID as varchar) + ' ' + REPLICATE('b', 1000),
		[Str3/@value] = cast(n.ID as varchar) + ' ' + REPLICATE('c', 1000)
				
	from 
		(select ID = ROW_NUMBER() over(order by o1.object_id) from sys.objects o1 cross join sys.objects o2 cross join sys.objects o3) n
	where n.ID <= 5000
	for xml path('Item')--, ROOT('Root')

)


if object_id('tempdb..##data') is not null
	drop table ##data

create table ##data(id int identity primary key, Doc xml)
insert into ##data(Doc)
	select 
		@xml
select DATALENGTH(@xml) / 1024 / 1024

create primary xml index PK_XML on  ##data (Doc) 

if object_id('tempdb..##res_table') is not null
	drop table ##res_table

create table ##res_table
(
	id			int identity primary key, 
	[num]		int,
	[Str1]		varchar(max),
	[Str2]		varchar(max),
	[Str3]		varchar(max)
)

go

/*

delete ##res_table



insert into ##res_table																		-- не паралеллит
	select 
		[num]						=	col.e.value('./@num','int') 
	,	[Str1]						=	col.e.value('Str1[1]/@value','VARCHAR(MAX)') 
	,	[Str2]						=	col.e.value('Str2[1]/@value','VARCHAR(MAX)') 
	,	[Str3]						=	col.e.value('Str3[1]/@value','VARCHAR(MAX)') 

	FROM ##data d
	CROSS APPLY d.Doc.nodes('*') col(e)
	option
	(
		recompile
	)

delete ##res_table


insert into ##res_table																		-- паралеллит
	select 
		*
	from 
	(
		select 
			[num]						=	col.e.value('@num','int') 
		,	[Str1]						=	col.e.value('Str1[1]/@value','VARCHAR(MAX)') 
		,	[Str2]						=	col.e.value('Str2[1]/@value','VARCHAR(MAX)') 
		,	[Str3]						=	col.e.value('Str3[1]/@value','VARCHAR(MAX)') 

		FROM ##data d
		CROSS APPLY d.Doc.nodes('*') col(e)
	)x
	option
	(
		recompile
		--,querytraceon 3604	-- печать
		--,querytraceon 8675	-- паралельность


		)
*/



Microsoft SQL Server 2014 (SP2-GDR) (KB3194714) - 12.0.5203.0 (X64) 
	Sep 23 2016 18:13:56 
	Copyright (c) Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)


нужна именно такая...
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2861.0 (X64) 
	Aug 20 2012 19:28:58 
	Copyright (c) Microsoft Corporation
	Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
19 май 17, 14:11    [20496510]     Ответить | Цитировать Сообщить модератору
 Re: Nodes(). паралелизм включается при заворачивании в подзапрос  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
на 16 тоже воспроизводится. причем значительно шустрее на той же железке что и на 14

Microsoft SQL Server 2016 (SP1-GDR) (KB3210089) - 13.0.4202.2 (X64) 
	Dec 13 2016 05:22:44 
	Copyright (c) Microsoft Corporation
	Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Datacenter 6.3 <X64> (Build 9600: ) (Hypervisor)
19 май 17, 14:27    [20496569]     Ответить | Цитировать Сообщить модератору
 Re: Nodes(). паралелизм включается при заворачивании в подзапрос  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Mike_za
на 16 тоже воспроизводится. причем значительно шустрее на той же железке что и на 14

шустрость определяется системой после ребута ((
19 май 17, 15:39    [20496850]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить