Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Pvase Member Откуда: Сообщений: 1002 |
Здравствуйте. Вот такой запрос:DROP TABLE [dbo].[Fct_Subconto] GO SELECT [IdNci_0062] ,[Date_Month] ,[Year_Prov] ,[Month_Prov] ,[IDDIM_0090] ,[IDDim_0050] ,[АП] ,[СРН] ,[IdDim_0029Clc] ,[IdDIM_0021] ,[СНДРС_УВ] ,[СНКРС_УВ] ,[ДО_УВ] ,[КО_УВ] ,[СКДРС_УВ] ,[СККРС_УВ] ,[СНД_УВ] ,[СНК_УВ] ,[СКД_УВ] ,[СКК_УВ] ,[ДОННР_УВ] ,[КОННР_УВ] ,[ДОКНР_УВ] ,[КОКНР_УВ] ,[СНДРС_НАЦ] ,[СНКРС_НАЦ] ,[ДО_НАЦ] ,[КО_НАЦ] ,[СКДРС_НАЦ] ,[СККРС_НАЦ] ,[СНД_НАЦ] ,[СНК_НАЦ] ,[СКД_НАЦ] ,[СКК_НАЦ] ,[ДОННР_НАЦ] ,[КОННР_НАЦ] ,[ДОКНР_НАЦ] ,[КОКНР_НАЦ] ,[СНДРС_ВВР] ,[СНКРС_ВВР] ,[ДО_ВВР] ,[КО_ВВР] ,[СКДРС_ВВР] ,[СККРС_ВВР] ,[СНД_ВВР] ,[СНК_ВВР] ,[СКД_ВВР] ,[СКК_ВВР] ,[ДОННР_ВВР] ,[КОННР_ВВР] ,[ДОКНР_ВВР] ,[КОКНР_ВВР] ,[СНДРС_ДОЛ] ,[СНКРС_ДОЛ] ,[ДО_ДОЛ] ,[КО_ДОЛ] ,[СКДРС_ДОЛ] ,[СККРС_ДОЛ] ,[СНД_ДОЛ] ,[СНК_ДОЛ] ,[СКД_ДОЛ] ,[СКК_ДОЛ] ,[ДОННР_ДОЛ] ,[КОННР_ДОЛ] ,[ДОКНР_ДОЛ] ,[КОКНР_ДОЛ] INTO [dbo].[Fct_Subconto] FROM [dbo].[Fct_0020_OSB_Subconto] Приводит к росту базы TempDB до 12 гб. Реально в таблицу вставляются около 2 млн. строк. После вставки размер занимаемой таблицей не больше 4 гб. Как можно сделать так, чтобы вставка данных не занимала сколько места в TempDB |
5 сен 17, 13:54 [20772748] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
Pvase, с сервером точно не ошиблись? |
5 сен 17, 14:00 [20772764] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
а зачем таблицу дропаете? не лучше тогда уж truncate |
5 сен 17, 14:04 [20772773] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
Если вставлять по кусочкам, а модель базы Simple, то лог будет по размеру не сильно больше самого большого кусочка. Как вариант - можно выгрузить в файл и вставить BULK Loadом (не журналируется). |
5 сен 17, 14:06 [20772784] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Таки да, вот версия: Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) |
||
5 сен 17, 14:08 [20772795] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Та это я тестирую разные варианты, раньше было так: TRUNCATE TABLE [dbo].[Fct_Subconto] GO INSERT INTO [dbo].[Fct_Subconto] WITH (TABLOCK) ([IdNci_0062] ,[Date_Month] ,[Year_Prov] ,[Month_Prov] ,[IDDIM_0090] ,[IDDim_0050] ,[АП] ,[СРН] ,[IdDim_0029Clc] ,[IdDIM_0021] ,[СНДРС_УВ] ,[СНКРС_УВ] ,[ДО_УВ] ,[КО_УВ] ,[СКДРС_УВ] ,[СККРС_УВ] ,[СНД_УВ] ,[СНК_УВ] ,[СКД_УВ] ,[СКК_УВ] ,[ДОННР_УВ] ,[КОННР_УВ] ,[ДОКНР_УВ] ,[КОКНР_УВ] ,[СНДРС_НАЦ] ,[СНКРС_НАЦ] ,[ДО_НАЦ] ,[КО_НАЦ] ,[СКДРС_НАЦ] ,[СККРС_НАЦ] ,[СНД_НАЦ] ,[СНК_НАЦ] ,[СКД_НАЦ] ,[СКК_НАЦ] ,[ДОННР_НАЦ] ,[КОННР_НАЦ] ,[ДОКНР_НАЦ] ,[КОКНР_НАЦ] ,[СНДРС_ВВР] ,[СНКРС_ВВР] ,[ДО_ВВР] ,[КО_ВВР] ,[СКДРС_ВВР] ,[СККРС_ВВР] ,[СНД_ВВР] ,[СНК_ВВР] ,[СКД_ВВР] ,[СКК_ВВР] ,[ДОННР_ВВР] ,[КОННР_ВВР] ,[ДОКНР_ВВР] ,[КОКНР_ВВР] ,[СНДРС_ДОЛ] ,[СНКРС_ДОЛ] ,[ДО_ДОЛ] ,[КО_ДОЛ] ,[СКДРС_ДОЛ] ,[СККРС_ДОЛ] ,[СНД_ДОЛ] ,[СНК_ДОЛ] ,[СКД_ДОЛ] ,[СКК_ДОЛ] ,[ДОННР_ДОЛ] ,[КОННР_ДОЛ] ,[ДОКНР_ДОЛ] ,[КОКНР_ДОЛ]) SELECT [IdNci_0062] ,[Date_Month] ,[Year_Prov] ,[Month_Prov] ,[IDDIM_0090] ,[IDDim_0050] ,[АП] ,[СРН] ,[IdDim_0029Clc] ,[IdDIM_0021] ,[СНДРС_УВ] ,[СНКРС_УВ] ,[ДО_УВ] ,[КО_УВ] ,[СКДРС_УВ] ,[СККРС_УВ] ,[СНД_УВ] ,[СНК_УВ] ,[СКД_УВ] ,[СКК_УВ] ,[ДОННР_УВ] ,[КОННР_УВ] ,[ДОКНР_УВ] ,[КОКНР_УВ] ,[СНДРС_НАЦ] ,[СНКРС_НАЦ] ,[ДО_НАЦ] ,[КО_НАЦ] ,[СКДРС_НАЦ] ,[СККРС_НАЦ] ,[СНД_НАЦ] ,[СНК_НАЦ] ,[СКД_НАЦ] ,[СКК_НАЦ] ,[ДОННР_НАЦ] ,[КОННР_НАЦ] ,[ДОКНР_НАЦ] ,[КОКНР_НАЦ] ,[СНДРС_ВВР] ,[СНКРС_ВВР] ,[ДО_ВВР] ,[КО_ВВР] ,[СКДРС_ВВР] ,[СККРС_ВВР] ,[СНД_ВВР] ,[СНК_ВВР] ,[СКД_ВВР] ,[СКК_ВВР] ,[ДОННР_ВВР] ,[КОННР_ВВР] ,[ДОКНР_ВВР] ,[КОКНР_ВВР] ,[СНДРС_ДОЛ] ,[СНКРС_ДОЛ] ,[ДО_ДОЛ] ,[КО_ДОЛ] ,[СКДРС_ДОЛ] ,[СККРС_ДОЛ] ,[СНД_ДОЛ] ,[СНК_ДОЛ] ,[СКД_ДОЛ] ,[СКК_ДОЛ] ,[ДОННР_ДОЛ] ,[КОННР_ДОЛ] ,[ДОКНР_ДОЛ] ,[КОКНР_ДОЛ] FROM [dbo].[Fct_0020_OSB_Subconto] |
||
5 сен 17, 14:11 [20772806] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Спасибо, но увеличивается не журнал транзакций, а именно база TempDB. |
||
5 сен 17, 14:12 [20772812] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
IdNci_0062 - это PK ? |
5 сен 17, 14:13 [20772817] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
+ Модель восстановления для базы - Simple. |
5 сен 17, 14:14 [20772826] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Здесь Primary Key нет, во втором запросе есть, это ID, простой счетчик + 1. |
||
5 сен 17, 14:15 [20772835] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
а сам селект на млн записей из [dbo].[Fct_0020_OSB_Subconto] не хотите на куски побить и вставлять в цикле |
5 сен 17, 14:17 [20772847] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
ТемпДБ может быть задействован, н-р если большую таблицу/выборку нужно сложным образом отсортировать. Есть и другие случаи, когда используется ТемпДБ. Это временное хранилище данных. |
||||
5 сен 17, 14:18 [20772854] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
Pvase, план запроса посмотрите, есть ли там "table spool" |
5 сен 17, 14:20 [20772864] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
The Data Loading Performance Guide: https://technet.microsoft.com/ru-ru/library/dd425070(v=sql.100).aspx |
5 сен 17, 14:22 [20772872] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
|
||
5 сен 17, 14:28 [20772904] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Вот здесь ссылка: https://onedrive.live.com/?authkey=!AFTUWfv65SiMLvc&cid=493DA339DE79A6A4&id=493DA339DE79A6A4!93026&parId=493DA339DE79A6A4!92782&o=OneUp |
||
5 сен 17, 14:31 [20772925] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
Pvase, пока есть индексы tempdb будет пухнуть, от этого не избавиться, можно только снизить размер опухоли использовав вставку кусками. |
5 сен 17, 14:35 [20772954] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Ошибся, вот так выглядит PK: CREATE UNIQUE CLUSTERED INDEX [IX_Fct_0020_AccObor_ID] ON [dbo].[Fct_0020_AccObor] ( [Date_Month] ASC, [IdNci_0062] ASC, [IdDIM_0090] ASC, [IdDim_0050] ASC, [IdDim_0029Clc] ASC, [IdDim_0029Acc] ASC, [IdDim_0029Doc] ASC, [IdDim_0021] ASC, [IdDim_0021_0] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO |
||
5 сен 17, 14:36 [20772962] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37199 |
|
||||
5 сен 17, 14:37 [20772967] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Ивзините, не хотел вас ввести в заблуждение, проблема возникает в обеих запросах, что INSERT, что SELECT INTO - проблема одна и та же, очень сильно растет база tempdb. |
||||
5 сен 17, 14:54 [20773047] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Это я тестирую сразу три запроса, они похожие, и дал ссылку на другую таблицу. Но проблема существует по всем таблицам, где вставляется очень много строк (в приведенном примере вставляется 19 млн строк за 9 минут с ростом tempdb до 8 гб), в примере в начале вставка просиходит за 40 минут с ростом Tempdb гораздо больше. |
5 сен 17, 14:59 [20773065] Ответить | Цитировать Сообщить модератору |
Pvase Member Откуда: Сообщений: 1002 |
Еще проблема в том, что если запросы выполнять параллельно, то суммарный рост TempDB это похоже больше на умножения. Так TempDB вырастает до 60 ГБ, заканчивается место на диске и ничего хорошего из этого не происходит. |
5 сен 17, 15:03 [20773080] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
диски добавьте на сервер, что он у вас мучается бедняга |
5 сен 17, 15:10 [20773102] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
откажитесь от индексов, добавьте RAM |
||
5 сен 17, 15:32 [20773193] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8485 |
На картинке же нарисована сортировка и спул, что же непонятного. Сортировка из-за вставки в кластерный индекс. Памяти добавьте, как уже писали. |
5 сен 17, 15:37 [20773227] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |