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

Откуда:
Сообщений: 203
Считываю из базы 1С при помощи объектов информацию и вставляю в другую систему, объем большой. Вторая система основана на триггерах и хранимках, видимо, из-за их количества (хотя не факт) часто выдает "Время ожидания запроса истекло".
Как побороть? Что оптимизировать? Вставка идет по одному.

Модератор: Тема перенесена из форума "Microsoft SQL Server".


Сообщение было отредактировано: 16 сен 13, 11:33
16 сен 13, 11:32    [14843462]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Brasileiro
Member

Откуда:
Сообщений: 203
Модератор, не ГЛУПИ!!! Таймаут относится не к 1С!
16 сен 13, 11:40    [14843551]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Титов
Member

Откуда: сам не помню
Сообщений: 4657
Brasileiro
Модератор, не ГЛУПИ!!! Таймаут относится не к 1С!


запрос в студию!
16 сен 13, 11:57    [14843666]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Brasileiro
Member

Откуда:
Сообщений: 203
INSERT INTO
      [ar] ([ar].[anskaffningbestp],[ar].[anskaffningkop],[ar].[anskaffningmotbehov],[ar].[anskaffningplanering],
      [ar].[anskaffningssatt],[ar].[anskaffningtillv],[ar].[antdec],[ar].[artbeskr],
      [ar].[artbeskrspec],[ar].[artftgspec1],[ar].[artftgspec2],[ar].[artkalkkod],
      [ar].[artkod],[ar].[artkundrabkod],[ar].[artnr],[ar].[artnrean],
      [ar].[artprodkonto],[ar].[artsaljbar],[ar].[artursprung],[ar].[autofrislappas],
      [ar].[batchbokas],[ar].[enhetskod],[ar].[fiktivartikel],[ar].[forbrukningsmaterial],
      [ar].[foretagkod],[ar].[itemoktooffer],[ar].[itemoktouse],[ar].[itemstatuscode],
      [ar].[kalkylprisenlsnittpris],[ar].[lagerbokas],[ar].[lagtyp],
      [ar].[marklevplanartikel],[ar].[packageitemqty2det],[ar].[paketartikel],
      [ar].[perssign],[ar].[pkgitemdiscnt2detail],[ar].[regdat],[ar].[rowcreatedby],
      [ar].[serienrbokas],[ar].[utgartikel],[ar].[utskrfoljesedel],[ar].[utskrplocklista],
      [ar].[varugruppkod],[ar].[rowcreateddt])
      VALUES ('0', :Purchased ,'0','1', :AMethod,:Manufactured,3, :Artbeskr,
      :ArtBeskrSpec,'1','1','1',0,'1', :ArtNr, :Barcode,N'STD','1',
      '1','0','0', :EnhetsKod,'0','0',:foretagkod,'1','1',0,'0','1',0,
      '1','0','0',:Perssign,'0',GETDATE(),:Perssign1,'0','0','1','1',
      :Varugruppkod,CONVERT(CHAR(8),GetDate(),112)+SPACE(1)+CONVERT(CHAR(5),GetDate(),108))
16 сен 13, 12:05    [14843721]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34008
Блог
Brasileiro
и вставляю в другую систему


1) узнать имя СУБД "другой системы"
2) попросить перенести топик в подфорум этой СУБД
3) увеличить таймаут
16 сен 13, 12:54    [14844069]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Brasileiro
Member

Откуда:
Сообщений: 203
Ладно, я думал, что если вопрос был создан в ветке MS SQL Server, то это означает, что субд "другой системы" - SQL Server.
16 сен 13, 14:25    [14844751]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Brasileiro
Member

Откуда:
Сообщений: 203
Хорошо. такой вопрос. Если я оформлю в виде хранимой процедуры вставку, вырастет ли производительность SQL Server?
16 сен 13, 14:51    [14844946]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34008
Блог
Brasileiro
Ладно, я думал, что если вопрос был создан в ветке MS SQL Server, то это означает, что субд "другой системы" - SQL Server.


В MS SQL не используются ":" в переменных...

Чтобы оптимизировать вставку, вставлять нужно не по одной записи, а блоками.
Всевозможные методы ускорения описаны тут:
http://msmvps.com/blogs/gladchenko/archive/2010/03/09/1761298.aspx
16 сен 13, 15:09    [14845064]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34008
Блог
Brasileiro
Хорошо. такой вопрос. Если я оформлю в виде хранимой процедуры вставку, вырастет ли производительность SQL Server?


нет
16 сен 13, 15:10    [14845071]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Garya
Member

Откуда: Москва
Сообщений: 31557
Блог
Модератор: Brasileiro, я получил Вашу просьбу о переносе данного треда обратно на форум по MS SQL. Однако, сделаю это только в том случае, если Вы предоставите веские аргументы, что проблема не связана с 1С.

Скажите, Brasileiro, а Вы пытались замерить время, которое уходит на извлечение данных из 1С без вставки этой информации в другую БД? Если пытались, неплохо было бы привести результаты этого эксперимента.
Замедлить именно вставку может большое количество индексов на тех таблицах, в которые Вы производите добавление, а также активная работа с данными этих таблиц других пользователей, которые могут блокировать таблицу и вызывать задержки на период этих блокировок.
Задержки могут быть вызваны триггерами, которые отрабатывают на приемной стороне отдельно на каждую операцию вставки. Если Вы вставите 1000 записей по одной, произойдет 1000 запусков триггера на вставку.
Если триггеры написаны грамотно, они должны корректно отрабатывать произвольное количество добавляемых записей, а не только одну.
Необходимость выполнять отдельную операцию блокировки и разблокировки при добавлении каждой записи тоже может вызывать дополнительные задержки. Поэтому попробуйте сначала добавить все записи во временную таблицу, доступ к которой открыт только Вашей считывающей процедуре, а затем одним запросом попробуйте залить все записи в целевые таблицы одним запросом. При этом избегайте создания индексов для временной таблицы.
Проверьте, как обстоит дело с констрейнтами CHECK. Они также могут замедлять добавление записей. Попробуйте отключить триггеры и констрейнты и произвести тестовое добавление записей, чтобы проверить, действительно ли констрейнты и триггеры являются причиной задержки. Попробуйте удалить на время индексы у целевой таблицы и проведите аналогичные эксперименты.

Сообщение было отредактировано: 16 сен 13, 15:13
16 сен 13, 15:11    [14845081]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Brasileiro
Member

Откуда:
Сообщений: 203
Таймаут выдает именно SQL, причем тут 1С, какие веские аргументы нужны? Код выполняется так:
1) запрос на выборку в 1С
2) цикл по результатам запроса
3) для каждого результата 1С сделать вставку в SQL Server. - в некоторых случаях выдает таймаут.
1С никак убыстрить не получится. Можно, конечно, перевести все на прямое чтение из таблиц SQL Server, но на написание такого конвертора у меня уйдет время, а его нет.
Да, индексов и триггеров там дофига, вся логика второй системы основана на них. Отключать триггеры нет возможности, т.к. при этом будет нарушена логика второй системы.
Написать создание хранимки можно, но реально ли вырастет скорость выполнения запросов вставки? Где-то читал, что производительность не вырастет значительно, т.к. даже простые одинаковые запросы на вставку засядут в кэш и будут выполняться ровно с той же скоростью, что и запросы через хранимки.

Модератор: Тема перенесена из форума "1С".


Сообщение было отредактировано: 16 сен 13, 16:37
16 сен 13, 15:49    [14845413]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Brasileiro, вы какого результата хотите тут добиться?
Где версия?
Что за инсерт?
сколько весят эти данные?
очередь к диску уже смотрели, логи системы копали, что с памятью у сервера?
Блокировки посмотрите, запустите профайлер.
Сколько у вас выставлен тайм-аут?
Вы предоставили минимум инфы, тут при всем желании крайне трудно помочь, разве что пальцем в небо.
На единственный понятный вопрос Вам ответил Критик.
16 сен 13, 18:00    [14846441]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
Как происходит перенос? Возможно что-то с сетью, в общем гадать и гадать..
16 сен 13, 18:03    [14846453]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
Glory
Member

Откуда:
Сообщений: 104760
Brasileiro
Таймаут выдает именно SQL, причем тут 1С, какие веские аргументы нужны?

Нужны знания о том, что клиентский таймаут может задать только клиент.

Brasileiro
Написать создание хранимки можно, но реально ли вырастет скорость выполнения запросов вставки?

Для того, чтобы что-то ускорить, нужно сначала найти узкое место. Вы пока такой информацие не обладаете.
Т.е вы не знаете
- что выполняется на сервере
- выполняется ли вообще или ждет каких-то ресурсов
- если ждет ресурсов, то каких именно
16 сен 13, 22:00    [14847019]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация вставки  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Brasileiro
Таймаут выдает именно SQL, причем тут 1С, какие веские аргументы нужны? Код выполняется так:
1) запрос на выборку в 1С
2) цикл по результатам запроса
3) для каждого результата 1С сделать вставку в SQL Server. - в некоторых случаях выдает таймаут.
...........

Нет повести способа печальнее на свете.
Уж если нужно относительно быстро, то выгружайте в dbf (там в 1С встроенный метод есть очень щустрый) а далее dbf -> sql (тоже очень шутсро так как bulk insert).
А так как вы написали - до ишачей пасхи ждать придется при любом серьезном объеме данных.
17 сен 13, 12:17    [14848582]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить