|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаТорможение псевдотаблиц не только не дает мне жить спокойно при доделывании универсального триггера, она так же тормозит остальную базнес-логику в триггере. Ну это же ваш выбор. Вы привели столько доводов в ответ на все возражения. И столько раз уверяли, что знаете, что делаете. Что выбрали - то и получили. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:16 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаАДО при апдейте апдейтит ВСЕ записи. :)Да неужели?! К тому же, что мешает выполнять свой явный UPDATE? Что касается логгирования только записей с изменениями, то этому здесь посвещено столько постов, что как же Вы их не увидели-то? Я и сам пару десятков раз участвовал... Да! О порядке вызовов триггеров. Если есть зависимость от порядка их вызова, то это уже плохой признак. Но какая, чёрт возьми, разница, в каком по порядку будет выполняться логгирование?! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:16 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотона без тригера 2 сек, с триггером 5 сек, 500к записей 27 полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:18 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотона tarrusпропущено... В единообразном коде, хранящемся в системе контроля версий, изменяемом централизованно и единообразно для всех таблиц? Скорее в вашей затее черт ногу сломит. Попробуйте сначала хотя бы номрально представить себе код, который генерит триггеры, хранящийся в системе контроля версий. :) Потом представьте что у вас изменилось 100-300 таблиц. Потом еще некоторые талбицы объеденились, некоторые разъеденились в новые. И заетм представьте себе как вы будете свой ацкий гениальный генерирующий триггеры код рефакторить. Обязательно мне сообщите сколько времени у вас ушло с сколько ведер слюны вы наплевали. Я уже давно для всех БД использую SQL Server Database Project и кодо-генерацию. Если вы не знаете как организовать процесс разработки, то открывайте новую тему. Думаю у многих есть чем поделится в этом направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:19 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Я хз в какой. Могу предположить, что речь идет не о вызове нормального, корректного SQL скрипта или процедуры, а о подключении компонентов типа ADOTable, и его методах. Тогда да, нужно исправлять интерфейс. Это совсем не дело в триггерах искать измененные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:23 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаЧестно сказать не понял. Можно поподробней про этом момент? Там насоклько знаю никакой версионности. Псевдотаблички на самом деле есть одна таблица, содержащая инсертед и делетед записи. Доступ через которые осуществляется через INSERTED\DELETED. Capacity Planning for tempdb Version Stores A version store is a collection of data pages that hold the data rows that are required to support the features that use row versioning. There are two version stores: a common version store and an online-index-build version store. The version stores contain the following: Row versions that are generated by data modification transactions in a database that uses snapshot or read committed using row versioning isolation levels. Row versions that are generated by data modification transactions for features such as: online index operations, Multiple Active Result Sets (MARS), and AFTER triggers. The inserted and deleted tables that are used in AFTER triggers are created in tempdb. That is, the rows that are updated or deleted by the trigger are versioned. This includes all of the rows that are modified by the statement that fired the trigger. Rows that are inserted by the trigger are not versioned. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:24 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
ART-CODEЭто совсем не дело в триггерах искать измененные данные.Это почему же? Давно и успешно ищу именно в триггерах. Независимо от всяких там клиентов, как и положено. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:26 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Ох вы а, да чот заладили выбрал да выбрал. Ну архитектура такая. Ну вот предназначен триггер для выполнения каких то действий, используются при этом инсертед\делетед. Ну не я же придумал скуль а. :) GloryАцкийСкотонаТорможение псевдотаблиц не только не дает мне жить спокойно при доделывании универсального триггера, она так же тормозит остальную базнес-логику в триггере. Ну это же ваш выбор. Вы привели столько доводов в ответ на все возражения. И столько раз уверяли, что знаете, что делаете. Что выбрали - то и получили. Это не мой выбор. Это так задумано вообще. Есть таблицы. На них триггера. Люди с таблицами работают. Триггера срабатывают. Чтото там делают... Сэ ля ви же. Я то причом тут?:) iapАцкийСкотонаАДО при апдейте апдейтит ВСЕ записи. :)Да неужели?! К тому же, что мешает выполнять свой явный UPDATE? Что касается логгирования только записей с изменениями, то этому здесь посвещено столько постов, что как же Вы их не увидели-то? Я и сам пару десятков раз участвовал... Да! О порядке вызовов триггеров. Если есть зависимость от порядка их вызова, то это уже плохой признак. Но какая, чёрт возьми, разница, в каком по порядку будет выполняться логгирование?! К тому же, что мешает выполнять свой явный UPDATE? В клиенте? Вы работали сишарпом к бд хоть раз? Мне сейчас объяснили что датапровайдеры по умолчанию при апдейте поля в датасете апдейтят ВСЕ поля в бд для этой записи. Что бы сделать апдейт только апдейченых(гы), то там надо както заморачиваться еще. Не вдавался в подробности вобщем. Что касается логгирования только записей с изменениями, то этому здесь посвещено столько постов, что как же Вы их не увидели-то? Я и сам пару десятков раз участвовал... Да блин. Да не надо мне помощи в логировании. У меня есть отличный механизм. Мне только надо разобраться почему выборка с псевдотаблиц тормозит так. Сколько раз повторить еще?:) Если есть зависимость от порядка их вызова, то это уже плохой признак. Ничего плохого в этом нет. Либо представьте уж тогда ваш личный плохой пример. На который я наверняка найду что сказать. :) Я и сам пару десятков раз участвовал... Прошу прощенья за нескромный вопрос. А хоть раз реально помогли вопрошающим? Или как и мне только и говорите что я везде неправ? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:30 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаЭто не мой выбор. А кто тут распинался про универсальный триггер ? АцкийСкотонаМне сейчас объяснили что датапровайдеры по умолчанию при апдейте поля в датасете апдейтят ВСЕ поля в бд для этой записи. По-умолчанию - это значит, когда ленивый программист вообще не захотел ничего задать АцкийСкотонаЧто бы сделать апдейт только апдейченых(гы), то там надо както заморачиваться еще. У вас существует ТЗ ??? Там что так и написано "программируйте, чтобы не надо как-то было заморачиваться" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:35 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Владислав КолосовАцкийСкотона без тригера 2 сек, с триггером 5 сек, 500к записей 27 полей. А вот это уже конструктивно. Круто! А что именно в триггере выполняется? Так же как и у меня селект из инсертеда? Апдейтите все записи в таблице? Поля варчаровские есть кстатьи, гуиды? И у меня 68 полей. [/quot] Я уже давно для всех БД использую SQL Server Database Project и кодо-генерацию. Если вы не знаете как организовать процесс разработки, то открывайте новую тему. Думаю у многих есть чем поделится в этом направлении.[/quot] Спасибо, но думаю в билинге мне кодогенерация не нужна. У нас четкая бизнес-логика. Потребностей в генерации чего-то там особо нет. :) ART-CODEЯ хз в какой. Могу предположить, что речь идет не о вызове нормального, корректного SQL скрипта или процедуры, а о подключении компонентов типа ADOTable, и его методах. Тогда да, нужно исправлять интерфейс. Это совсем не дело в триггерах искать измененные данные. Ф точку! Но пока мне придется разбираться с этим на уровне БД. Ничего страшного С этим будет разбираться CLRка в отдельных потока. Переживу. :) 2pkarklin , если вас не затруднит, ткните меня пожалуйста носом в то место статьи, которое надо познать да бы ускорить выборку? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:39 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
iap, Прошу прощения, небольшая путаница произошла - кто о чем говорил. Вы правы. Тут автор уточнил:ВСЕ поля в бд для этой записи Все, разобрались. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:40 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаесли вас не затруднит, ткните меня пожалуйста носом в то место статьи, которое надо познать да бы ускорить выборку? :) http://technet.microsoft.com/en-us/library/ms175527(v=sql.105).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:42 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
GloryАцкийСкотонаЭто не мой выбор. А кто тут распинался про универсальный триггер ? АцкийСкотонаМне сейчас объяснили что датапровайдеры по умолчанию при апдейте поля в датасете апдейтят ВСЕ поля в бд для этой записи. По-умолчанию - это значит, когда ленивый программист вообще не захотел ничего задать АцкийСкотонаЧто бы сделать апдейт только апдейченых(гы), то там надо както заморачиваться еще. У вас существует ТЗ ??? Там что так и написано "программируйте, чтобы не надо как-то было заморачиваться" ? А кто тут распинался про универсальный триггер ? Я про логирование говорил. :) По-умолчанию - это значит, когда ленивый программист вообще не захотел ничего задать Не стоит обвинять кого-либо, если не знаете сами как это умолчание обойти. Ок? У вас существует ТЗ ??? Там что так и написано "программируйте, чтобы не надо как-то было заморачиваться" ? Человек молодой. Де вы видели ТЗ, которое диктует как работать фреймворкам? Где вы вообще видели писателя ТЗ который слышал слово фреймворк? Что вы прям а. :) ЕСли у вас на каждый чих есть ТЗ- возмите меня к ВАМ!!! Я у вас буду СЧАСТЛИВ!!! Кстатьи, у вас там в ТЗ не прописано как должна работать выборка с инсертед\делетед?:) А можно почитать?:) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:43 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотона А кто тут распинался про универсальный триггер ? Я про логирование говорил. :) Фейспалм. АцкийСкотонаНе стоит обвинять кого-либо, если не знаете сами как это умолчание обойти. Ок? Ну разумеется. Весь ваш код и способы просто шедевры программисткой мысли. А дурацкий сервер не желает выполнять такой прекрасный код. АцкийСкотонаЧеловек молодой. Де вы видели ТЗ, которое диктует как работать фреймворкам? Где вы вообще видели писателя ТЗ который слышал слово фреймворк? Что вы прям а. :) ЕСли у вас на каждый чих есть ТЗ- возмите меня к ВАМ!!! Я у вас буду СЧАСТЛИВ!!! Я понял. ТЗ - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:46 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
GloryАцкийСкотонаесли вас не затруднит, ткните меня пожалуйста носом в то место статьи, которое надо познать да бы ускорить выборку? :) http://technet.microsoft.com/en-us/library/ms175527(v=sql.105).aspx Там только про авторазрастание. Давайте конкретнее. Ссылок буз объяснений я тоже могу накидать. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:48 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаТам только про авторазрастание. Давайте конкретнее. А вы это уже выполнили что ли ? АцкийСкотонаДавайте конкретнее. Ссылок буз объяснений я тоже могу накидать. Если вы ищите кнопку "Работай быстро", то ее не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:49 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаShakillнасчет генератора кода я имел в виду не формирование динамики в триггере (хотя и туда можно передать через табличную переменную), а генерация самого триггера на основе шаблона и указания таблицы, на которой он будет висеть. Не катит. Таблиц сотни. Потом в таких шаблонах черт ногу сломит. Да и ошибки трудно будет искать. один шаблон логирования, разный набор полей. запуск генератора триггеров по необходимости - при изменении таблиц и когда собираетесь изменить логику логирования. а в чем трудности поиска ошибок? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:56 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
GloryАцкийСкотона А кто тут распинался про универсальный триггер ? Я про логирование говорил. :) Фейспалм. АцкийСкотонаНе стоит обвинять кого-либо, если не знаете сами как это умолчание обойти. Ок? Ну разумеется. Весь ваш код и способы просто шедевры программисткой мысли. А дурацкий сервер не желает выполнять такой прекрасный код. АцкийСкотонаЧеловек молодой. Де вы видели ТЗ, которое диктует как работать фреймворкам? Где вы вообще видели писателя ТЗ который слышал слово фреймворк? Что вы прям а. :) ЕСли у вас на каждый чих есть ТЗ- возмите меня к ВАМ!!! Я у вас буду СЧАСТЛИВ!!! Я понял. ТЗ - нет. Фейспалм. Ну ладно. Не буду заставлять вас понимать чег оя именно хочу добиться. Ну разумеется. Весь ваш код и способы просто шедевры программисткой мысли. Я не говорил этого. Я вообще в код клиента не лазаю. Не вижу щас причины что вы так на меня прёте. :) А дурацкий сервер не желает выполнять такой прекрасный код. Ну не само железо конечно. Но скуль по идее полон мест которые вроде как должны быть дико скоростны и удобны, но на самом деле настолько сыры, что никакого желания(и пользы) юзать нет. Вспомним хотя бы дикокласнцю идею про CLR-триггер, который не знает(и никак совершенно узнать не может) на какой же он таблице выполнился! :) Давайте не будем . :) Мне от вас надо только решение проблемы с тормозами по выборки из псевдотаблиц. Остальное можно обсудить за рамками данной темы, если вам так интересно. :) GloryАцкийСкотонаТам только про авторазрастание. Давайте конкретнее. А вы это уже выполнили что ли ? АцкийСкотонаДавайте конкретнее. Ссылок буз объяснений я тоже могу накидать. Если вы ищите кнопку "Работай быстро", то ее не существует. 1. Что конкретно там выполнить надо? Вы нормально объясниете. 2. Да не ищу я. Я привык работать нормально, а не на отъ***сь. Поэтому и не делаю в каждом триггере кастомный говнокод лишь бы побыстрее задачу закрыть! В виду этого пришел к тому, что механизм логироания должен быть уиверсальным, насколько это возможно. Повторяюсь. Мне проще один раз запихнут в каждый тирггер вызов моей CLRки, чем потом при изменени модели логирования лопатить ВСЕ триггеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 13:57 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаПовторяюсь. Мне проще один раз запихнут в каждый тирггер вызов моей CLRки Ну так запихните, что хотите. Что вам от сервера то нужно ? Чтобы он ваши "сексуальные" фантазии воплощал в жизнь ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 14:01 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
ShakillАцкийСкотонапропущено... Не катит. Таблиц сотни. Потом в таких шаблонах черт ногу сломит. Да и ошибки трудно будет искать. один шаблон логирования, разный набор полей. запуск генератора триггеров по необходимости - при изменении таблиц и когда собираетесь изменить логику логирования. а в чем трудности поиска ошибок? Опять.... В триггере не только механизм логирования. Там еще есть действия над другими объектами БД, с приджойниванием псевдотаблиц. Проблем с логирвоанием у меня НЕТ! :) У меня проблема с тормозами SELECT 1 FROM INSERTED. Прочтите тему с начала .если не понимаете об чем речь идет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 14:01 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаУ меня проблема с тормозами SELECT 1 FROM INSERTED. Ну так поставьте диски побыстрее, процессоры побстрее, памяти побольше, редакцию постарьше. Делайте что нибудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 14:03 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
GloryАцкийСкотонаПовторяюсь. Мне проще один раз запихнут в каждый тирггер вызов моей CLRки Ну так запихните, что хотите. Что вам от сервера то нужно ? Чтобы он ваши "сексуальные" фантазии воплощал в жизнь ? Повторяю еще раз. Мне надо чтобы "SELECT * INTO #T_INSERTED FROM INSERTED" выполнялось так же быстро, как и "SELECT * INTO #T_INSERTED2 FROM Charge_Details"(это таблица на которой триггер, если чо). Что непонятного?:) Ну не устраивает меня 45 секунд против 0,5. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 14:03 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаGloryпропущено... Ну так запихните, что хотите. Что вам от сервера то нужно ? Чтобы он ваши "сексуальные" фантазии воплощал в жизнь ? Повторяю еще раз. Мне надо чтобы "SELECT * INTO #T_INSERTED FROM INSERTED" выполнялось так же быстро, как и "SELECT * INTO #T_INSERTED2 FROM Charge_Details"(это таблица на которой триггер, если чо). Что непонятного?:) Ну не устраивает меня 45 секунд против 0,5.Не выбирайте из inserted, раз не устраивает. Выбирайте из временной таблицы. Что непонятного? И да, версия сервера какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 14:05 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
АцкийСкотонаПовторяю еще раз. Если сто раз повторить "халва", то во рту слаще не станет АцкийСкотонаМне надо чтобы "SELECT * INTO #T_INSERTED FROM INSERTED" выполнялось так же быстро, как и "SELECT * INTO #T_INSERTED2 FROM Charge_Details"(это таблица на которой триггер, если чо). Что непонятного?:) Ну не устраивает меня 45 секунд против 0,5. Повторяю еще раз (гы) - кнопки "Работай быстро" не существует. Если "переливание" всех данных из временной таблицы во временную таблицу работает медленно, то нет программных средств ускорения. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 14:08 |
|
Долгая выборка из INSERTED\DELETED во временную таблицу
|
|||
---|---|---|---|
#18+
Гавриленко Сергей АлексеевичАцкийСкотонапропущено... Повторяю еще раз. Мне надо чтобы "SELECT * INTO #T_INSERTED FROM INSERTED" выполнялось так же быстро, как и "SELECT * INTO #T_INSERTED2 FROM Charge_Details"(это таблица на которой триггер, если чо). Что непонятного?:) Ну не устраивает меня 45 секунд против 0,5.Не выбирайте из inserted, раз не устраивает. Выбирайте из временной таблицы. Что непонятного? И да, версия сервера какая? Для тех, кто не читал тему целиком. Выборку из инсертед я произвожу да бы потом в отдельном потоке ее обработать. Чтобы не задерживаться на этом в триггере. Теперь понятно зачем мне выборка? 2014 скуль. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2014, 14:10 |
|
|
start [/forum/topic.php?fid=46&msg=38782853&tid=1700245]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 236ms |
total: | 519ms |
0 / 0 |