Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Есть таблица, в базе 1С, в которой 12 485 024 записей. Ее необходимо 1 раз в сутки синхронизировать с DWH, средствами 1С.
Было раньше.
Средствами 1С таблица удалялась, как объект, в DWH, а затем она пересоздавалась и в нее записывался весь объем данных.
Сейчас.
Средствами 1С из таблицы в DWH удаляются записи за последние 3 месяца. А затем, опять же, средствами 1С в эту таблицу вставляются обновленные данные за последние 3 месяца. Причем эта таблица имеет партицию - 1 месяц.

Некоторые мои коллеги считают, что нынешний вариант не оптимален.
Они предлагают другой вариант. Разделить исходную таблицу на две: архивная (выгрузили раз, не трогаем) и текущая (каждый раз удаляем как объект из DWH, пересоздаем, а затем записываем данные от определенной даты. Все эти действия происходят на стороне 1С. При стирание части таблицы и последующем добавлении записей будут сильно расти логи. И вообще, будет расти сама таблица, т.к. записи, удаляемые через delete, физически из базы не удаляются, а только помечаются на удаление. Таким образом, расти будет именно таблица, а, следовательно, и вся БД. И храниться удаленные записи будут там, пока не сожмем. А сжатие, как регламентная операция -очень не рекомендуется. Фрагментация, и как следствие, снижение скорости работы с таблицей. А вот, удаление как объекта, а затем она пересоздание и запись всей таблицы происходит без фрагментации последовательно и быстро, а удаление части строк и дозапись идёт кусками в разное время.

Вариант с архивной таблицей предлагают 1С-ники.

Интересно мнение профессионалов. Прошу высказать свое мнение об обоих вариантах
Тема из разряда специфики работы sql - сервера, а не 1C. Прошу не переносить тему из этого раздела
27 сен 12, 11:35    [13230504]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Версия сервера
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86) Apr 22 2011 11:57:00 Copyright (c) Microsoft Corporation Standard Edition on Windows NT 6.0 <X86> (Build 6002: Service Pack 2)
27 сен 12, 11:36    [13230524]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
Ее необходимо 1 раз в сутки синхронизировать с DWH, средствами 1С.

Если средствами 1С, то причем тут MSSQL
27 сен 12, 11:39    [13230542]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
DROP/CREATE вместо TRUNCATE - убожество!
27 сен 12, 11:39    [13230547]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Glory,
Потому что вопрос не про то как собираются данные в 1С, а как уже подготовленные данные добавляются и хранятся на sql - сервере.
27 сен 12, 12:06    [13230806]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Mnior
DROP/CREATE вместо TRUNCATE - убожество!

Я тоже так считаю.
Но и тут есть плюс. Пусть в исходной базе изменилась структура таблицы (добавилось новое поле).
Тогда достаточно внести изменения только в загрузчике(Job-е).
27 сен 12, 12:10    [13230852]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
Потому что вопрос не про то как собираются данные в 1С, а как уже подготовленные данные добавляются и хранятся на sql - сервере.

Офигеть. а условие "средствами 1С" на самом деле означает скрипт на TSQL что ли ?
27 сен 12, 12:11    [13230874]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Glory
Yagrus2
Потому что вопрос не про то как собираются данные в 1С, а как уже подготовленные данные добавляются и хранятся на sql - сервере.

Офигеть. а условие "средствами 1С" на самом деле означает скрипт на TSQL что ли ?


Исходный запрос состоит из блоков на 1С языке и T-SQL, который потом преобразуется в чистый T-SQL.
Это преобразование происходит на автомате.
27 сен 12, 12:15    [13230918]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
Исходный запрос состоит из блоков на 1С языке и T-SQL, который потом преобразуется в чистый T-SQL.
Это преобразование происходит на автомате.

Так и чего вы ждете в качестве ответа ?
"блоков на 1С языке" ?
Или объяснения, как они будут "преобразованы" ?
27 сен 12, 12:17    [13230936]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Меня интересует какой способ организации данных более приемлем.
27 сен 12, 12:17    [13230938]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Glory
Yagrus2
Исходный запрос состоит из блоков на 1С языке и T-SQL, который потом преобразуется в чистый T-SQL.
Это преобразование происходит на автомате.

Так и чего вы ждете в качестве ответа ?
"блоков на 1С языке" ?
Или объяснения, как они будут "преобразованы" ?


Как они преобразуются меня не интересует.
27 сен 12, 12:19    [13230960]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
Меня интересует какой способ организации данных более приемлем.

Т.е. сколько таблиц и какой струтуры нужно ?
27 сен 12, 12:21    [13230975]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Glory,
Давайте абстрагируемся от 1С.
Есть две базы db1 и db2
db1 есть огромная таблица(Tab). Нужно настроить синхронизацию этой таблицы.
1 вариант
Эта таблица партицированная и обновляется за последние 3 недели.
DELETE db2.Tab
where Month_Name <= '2012-06'
INSERT INTO db2.Tab
SELECT * FROM db1.Tab
where Month_Name <= '2012-06'

2 вариант описан в первом посте. Там же описаны, со слов моих коллег, плюсы и минусы обоих вариантов.
Эти коллеги 1С-ники их мнению в работе SQL сервера я не доверяю. Сам являюсь разработчиком, а не администратором.
Поэтому и создал тему.
27 сен 12, 12:30    [13231066]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Yagrus2,

DELETE db2.Tab
where Month_Name <= '2012-06'
INSERT INTO db2.Tab
SELECT * FROM db1.Tab
where Month_Name <= '2012-06'
27 сен 12, 12:31    [13231073]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Glory,

да
27 сен 12, 12:32    [13231086]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yagrus2
Эти коллеги 1С-ники их мнению в работе SQL сервера я не доверяю. Сам являюсь разработчиком, а не администратором.
Поэтому и создал тему.

Т.е. тема о том, как убедить коллег, что выбранный вами вариант лучше ?
27 сен 12, 12:32    [13231095]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Glory,
Нет!
Если мой вариант не оптимален я откажусь от него.
27 сен 12, 12:34    [13231108]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5126
т.к. работа с таблицами и данными идёт "через 1сэ" собственно к sql серверу ваш вопрос мало относится ибо 1сэ работает с сервером "по своему".
отсюда следует, что вариант предложенный 1сэшниками лучше по определению.
а по сути их вариант действительно лучше.
да... и т.к. у вас там standard то ни какого секционирования у вас нет.
27 сен 12, 12:51    [13231249]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3757
12 485 024 записей. Малова-то как для секционирования. Тем паче что Standart Edition
Если есть в исходной таблице поле типа "LastUpdateDate" хранящее время последнего апдейта,
то проще всего сделать банальный мердж данных где этот LastUpdateDate > времени предыдущей синхронизации.
Ну и само собой хранить время предыдущей синхронизации.
27 сен 12, 13:01    [13231351]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Ivan Durak,
Такой даты к сожалению нет.
27 сен 12, 13:13    [13231470]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Дедушка
т.к. работа с таблицами и данными идёт "через 1сэ" собственно к sql серверу ваш вопрос мало относится ибо 1сэ работает с сервером "по своему".
отсюда следует, что вариант предложенный 1сэшниками лучше по определению.
а по сути их вариант действительно лучше.
да... и т.к. у вас там standard то ни какого секционирования у вас нет.


Вся специфика выливается в разростание лога и фрагментиравание диска.
Действительно ли эти два показателя в варианте с архивной таблицей будут намного меньше?
27 сен 12, 13:15    [13231510]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3757
Yagrus2
Ivan Durak,
Такой даты к сожалению нет.


Да, а как же вы сейчас находите там данные за последние 3 месяца??? На глаз?
автор
Сейчас.
Средствами 1С из таблицы в DWH удаляются записи за последние 3 месяца. А затем, опять же, средствами 1С в эту таблицу вставляются обновленные данные за последние 3 месяца
27 сен 12, 13:17    [13231525]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3757
Yagrus2
Ivan Durak,
Такой даты к сожалению нет.

Если добавить такую дату не реально,
есть еще вариант - CDC натравить на эту таблицу. И из CDC уже легко обновлять, то что обновилось так часто как нужно.
27 сен 12, 13:19    [13231545]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Ivan Durak,
Каждая записть это договор, у которого есть дата его заключения.
По этой дате и делается выборка.
Но в любой договор могут внести изменения задним числом. Этой даты нет.
З месяца это запас который с довольно высокой долей точности может гарантировать точность синхронизации.
27 сен 12, 13:22    [13231588]     Ответить | Цитировать Сообщить модератору
 Re: DROP/CREATE TABLE или DELETE  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5126
Ivan Durak
есть еще вариант - CDC
у автора standard
27 сен 12, 13:26    [13231635]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить