﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / SQL Server / Базы данных  / Громадное время исполнения "тяжелого" скрипта / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Fri, 21 Nov 2008 10:01:46 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>[quote][b]snov (04.07.2006)[/b][hr]Хранимки SQL сервера пишутся только на T-SQL.&lt;BR&gt;На шарпе и всем остальном пишутся только клиенты.[/quote]&lt;P&gt;В MSSQL 2005 можно писать хранимые процедуры в управляемом коде. </description><pubDate>Wed, 05 Jul 2006 10:23:45 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>[b]Dion (19.04.2006)[/b][hr]&lt;br&gt;Неплохая идея, кстати. Правда я нифига в T-SQL не понимаю... А хранимые процедуры пишутся только на этом языке, или это можно как-то сделать на C#, VB.NET?[hr]&lt;br&gt;&lt;br&gt;Хранимки SQL сервера пишутся только на T-SQL.&lt;br&gt;На шарпе и всем остальном пишутся только клиенты.</description><pubDate>Tue, 04 Jul 2006 20:30:38 GMT</pubDate><dc:creator>snov</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>RTFM</description><pubDate>Thu, 20 Apr 2006 14:48:00 GMT</pubDate><dc:creator>daarg</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>[quote="daarg"]Потому что вы в цикле для каждого итема из XML вызываете  БД (command.execute). Вдвойне нагружаете сервак - действуете с XML и SQL - в одном месте программы.Не проще ли сформировать строку из Node("id").Text через запятую, закрыть XML, а потом написать одну(!) ХП и в нее (без каких-либо циклов) совать эту строку как параметр и в этой же ХП потом удалять все неактуальное. А отличие в производительности на боевом сервере и дома только в том, что боевой загружен видимо еще какими-то процессами. [/quote]Неплохая идея, кстати. Правда я нифига в T-SQL не понимаю... А хранимые процедуры пишутся только на этом языке, или это можно как-то сделать на C#, VB.NET?</description><pubDate>Wed, 19 Apr 2006 18:42:00 GMT</pubDate><dc:creator>Dion</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>еще...такие вещи как &lt;&lt;sql.exec("delete from main where id not in (select id from id_list)")&gt;&gt;делать не совсем корректно опять же с точки зрения производительности. Пишите такие запросы через хранимые процедуры. Отличие в том , что ХП уже скомпилированы на SQL, и соответственно выполняются быстрее. </description><pubDate>Wed, 19 Apr 2006 09:43:00 GMT</pubDate><dc:creator>daarg</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>Потому что вы в цикле для каждого итема из XML вызываете  БД (command.execute). Вдвойне нагружаете сервак - действуете с XML и SQL - в одном месте программы.Не проще ли сформировать строку из Node("id").Text через запятую, закрыть XML, а потом написать одну(!) ХП и в нее (без каких-либо циклов) совать эту строку как параметр и в этой же ХП потом удалять все неактуальное. А отличие в производительности на боевом сервере и дома только в том, что боевой загружен видимо еще какими-то процессами. </description><pubDate>Wed, 19 Apr 2006 09:33:00 GMT</pubDate><dc:creator>daarg</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>Увы, не нашёл редактирования...По поводу масштабируемости - тут уже всё чуть-чуть лучше, т.к. во время планового апдейта скрипт исполняется минут за 10, т.к. происходит только удаление старья и добавление новья. Хотя и это должно быть быстрее, особенно странно то, что минуты 2 уходит на примерно такую фигню:for each item in xml_document.childNodes    'Заполнить простую табличку id-шниками из свежего xml    sql.exec("insert into id_list value(" &amp; item.getSingleNode("id").Text &amp; ")")next'Удалить все неактуальное - может запросы у меня плохие?sql.exec("delete from main where id not in (select id from id_list)")  </description><pubDate>Wed, 19 Apr 2006 00:17:00 GMT</pubDate><dc:creator>Dion</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>[quote="daarg"]Лучше такие задачи делать без ASP. Из-за него и тормозит. Потому что через IIS пытаетесь выполнить на SQL довольно тяжелую задачу.Да и зачем тут ASP? Показать девочке-менеджеру, что БД проапдейтилась успешно и вывести в браузере "все OK"? ;)Представьте, что Ваша БД увеличилась раз так в 5. И что тогда? Полное зависание задачи?Я б всю эту задачу сделал вообще через консольное приложение, например на VB.NET (или C#) и запускал его по расписанию - шедулером Windows - самый лучший вариант. Еще вариант - реализовать логику в ХП на SQL и запускать эти ХП через утилитку isql через батник. Это если у вас нет обработки внешних ресурсов, например каких-нибудь файлов.VBS+wscript.exe - не советую. Очень быстро нарветесь на те же тормоза.[/quote]Хмм... Ну консольное приложение на VB.NET - это интересный вариант, наверное стоит подумать... Правда ещё не факт, что я это осилю - с нормальным Visual Basic стал ознакамливаться совсе надвано и опя-таки больше в парадигме ASP.NETНу тогда всё равно неясно, что-ж оно у меня дома то так шустренько исполняется. Я бы не сказал, что у меня дико профессиональная машина и уж тем более, система, хотя она и затачивалась под прожорливый музыкальный софт</description><pubDate>Wed, 19 Apr 2006 00:08:00 GMT</pubDate><dc:creator>Dion</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>Лучше такие задачи делать без ASP. Из-за него и тормозит. Потому что через IIS пытаетесь выполнить на SQL довольно тяжелую задачу.Да и зачем тут ASP? Показать девочке-менеджеру, что БД проапдейтилась успешно и вывести в браузере "все OK"? ;)Представьте, что Ваша БД увеличилась раз так в 5. И что тогда? Полное зависание задачи?Я б всю эту задачу сделал вообще через консольное приложение, например на VB.NET (или C#) и запускал его по расписанию - шедулером Windows - самый лучший вариант. Еще вариант - реализовать логику в ХП на SQL и запускать эти ХП через утилитку isql через батник. Это если у вас нет обработки внешних ресурсов, например каких-нибудь файлов.VBS+wscript.exe - не советую. Очень быстро нарветесь на те же тормоза.</description><pubDate>Tue, 18 Apr 2006 15:27:00 GMT</pubDate><dc:creator>daarg</dc:creator></item><item><title>RE: Громадное время исполнения "тяжелого" скрипта</title><link>http://www.relib.com/forums/Topic895415-22-1.aspx</link><description>[quote="daarg"]16000 записей + 200 - это для сервака ерунда. Тормоза связаны не с числом записей, а как мне видится с средством, с помощью которого Вы запускаете скрипт, и которое, собственно, взаимодействует с сервером БД. Кстати, интересно узнать что за скрипт? VBS? SQL? С помощью чего Вы запускаете скрипт? wscript или еще как-то?[/quote]Скрипт - это ASP (VBScript), использует adodb.connection с провайдером olesqldb. В него методом execute вносятся SQL-комманды. Буферизовать этот процесс и прогнать по одной транзакции не представляется возможным, т.к. в разные таблицы вносятся зависимые друг от друга данные и скрипт следит за IDENTITY.То, что 16000 записей для сервака должно быть ерундой, я догадываюсь. Дома то всё быстро. Запуск обычный, через вызов по URL.</description><pubDate>Tue, 18 Apr 2006 13:08:00 GMT</pubDate><dc:creator>Dion</dc:creator></item></channel></rss>