<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888911</guid>
        <pubDate>Thu, 30 Mar 2023 20:52:07 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888911</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=408647&view=findpost&p=3888849'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>vot &#064; <time class="tag-quote__quoted-time" datetime="2023-03-30T13:18:02+03:00">30.03.23, 10:18</time></span><div class='quote '>&quot;Ошибка в 13й строке&quot; - это давно устоявшееся жаргонное выражение.<br>
Спорить из-за него нет никакого смысла.<br>
И тем более устраивать рейтинговые войны&#33;<br>
Ей-богу, как дети малые...</div></div><br>
Сорян&#33; Походу чел решил заюзать AI типа ChatGPT. Вижу еще одного в разделе С++ <strong class='tag-b'>MaIron</strong> с &quot;внезапным вниманием&quot; к старым постам. Там нужно просто посмотреть конкретику ответов.<br>
Валера, теряешь хватку&#33; :lol: Илон Макс не зря начал предупреждать ... Ага рассказывай AI про недопустимость рейтинговых воин ))))]]></description>
        <author>Majestio</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888877</guid>
        <pubDate>Thu, 30 Mar 2023 18:01:09 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888877</link>
        <description><![CDATA[Gonarh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=408647&view=findpost&p=3888849'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>vot &#064; <time class="tag-quote__quoted-time" datetime="2023-03-30T10:18:02+00:00">30.03.23, 10:18</time></span><div class='quote '>&quot;Ошибка в 13й строке&quot; - это давно устоявшееся жаргонное выражение.</div></div><br>
[душниламод]В 17-й[/душниламод]]]></description>
        <author>Gonarh</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888863</guid>
        <pubDate>Thu, 30 Mar 2023 12:21:24 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888863</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=408647&view=findpost&p=3888849'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>vot &#064; <time class="tag-quote__quoted-time" datetime="2023-03-30T10:18:02+00:00">30.03.23, 10:18</time></span><div class='quote '>&quot;Ошибка в 13й строке&quot; - это давно устоявшееся жаргонное выражение.</div></div><br>
А по факту - пафосное дерьмо. Жаль.]]></description>
        <author>Majestio</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888849</guid>
        <pubDate>Thu, 30 Mar 2023 10:18:02 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888849</link>
        <description><![CDATA[vot: &quot;Ошибка в 13й строке&quot; - это давно устоявшееся жаргонное выражение.<br>Спорить из-за него нет никакого смысла.<br>И тем более устраивать рейтинговые войны&#33;<br>Ей-богу, как дети малые...]]></description>
        <author>vot</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888784</guid>
        <pubDate>Tue, 28 Mar 2023 16:36:27 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888784</link>
        <description><![CDATA[Tishaishii: Выводы уже сделаны.]]></description>
        <author>Tishaishii</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888782</guid>
        <pubDate>Tue, 28 Mar 2023 16:07:25 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888782</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=408647&view=findpost&p=3888772'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Tishaishii &#064; <time class="tag-quote__quoted-time" datetime="2023-03-28T13:30:04+00:00">28.03.23, 13:30</time></span><div class='quote '>Ошибка в 13й строке...</div></div><br>
А это что? :blink: <br>
Да и вообще, прежде чем делать выводы, наверное стоило бы посмотреть <strong class='tag-b'>для чего это писалось, и что тестировалось</strong>.]]></description>
        <author>Majestio</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888781</guid>
        <pubDate>Tue, 28 Mar 2023 15:49:33 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888781</link>
        <description><![CDATA[Tishaishii: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=408647&view=findpost&p=3888780'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2023-03-28T15:33:46+00:00">28.03.23, 15:33</time></span><div class='quote '>Чепуху какую-то несешь. Там просто задается имя тестовой базы данных.</div></div><br>
Ну, мы уже сражались с вами на другой площадке. Чепуху нёс кто-то другой, если я не путаю.<br>
Чепуха - по-моему, это только что-то невообразимое, существующее здесь и доступное всем.<br>
<br>
При обработке высоких нагрузок разными способами для каждой задачи всегда приходится придумывать свой подход или пересматривать существующий. Поэтому бесполезно пользоваться шаблонами. Тем более, не проверено, насколько эффективен предложенный и для какой задачи. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-03-28T15:53:04+00:00">28.03.23, 15:53</time></span></span><br>
Вот, вам-там важно до сих пор самоутверждение, а у меня на ночь задача: контроллер. Толку от приведённого кода ни какого не получу. Потому что есть специфика.<br>
И заново буду искать разные готовые решения или создам своё или всё вместе.<br>
<br>
&quot;Шпаргалка по потокам&quot; находится в гугле. Если конкретно про Perl, то про Perl. А дальше всегда - ясное чистое небо и изнурительная отладка.]]></description>
        <author>Tishaishii</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888780</guid>
        <pubDate>Tue, 28 Mar 2023 15:33:46 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888780</link>
        <description><![CDATA[Majestio: Чепуху какую-то несешь. Там просто задается имя тестовой базы данных.]]></description>
        <author>Majestio</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888772</guid>
        <pubDate>Tue, 28 Mar 2023 13:30:04 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3888772</link>
        <description><![CDATA[Tishaishii: Ошибка в 13й строке... Под разные задачи и разные ответы. Вряд ли чем-то поможет.]]></description>
        <author>Tishaishii</author>
        <category>Perl</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3666753</guid>
        <pubDate>Tue, 19 Apr 2016 20:16:40 +0000</pubDate>
        <title>Шпаргалка по многопоточности и работе с PostgreSQL</title>
        <link>https://forum.sources.ru/index.php?showtopic=408647&amp;view=findpost&amp;p=3666753</link>
        <description><![CDATA[JoeUser: В <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=408634&view=findpost&p=3666751' target='_blank'>соседней теме</a> наваял небольшой бэйнчмарк по тестированию записи логов в БД. Захотелось это реализовать на Perl&#39;е. <br>
Оставлю тут код, может быть кто-то чего-то найдет для себя интересного:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#!/usr/bin/perl -w</div><div class="code_line">&nbsp;</div><div class="code_line"># Подключаем библиотеки</div><div class="code_line">use Time::HiRes qw(gettimeofday);</div><div class="code_line">use threads;</div><div class="code_line">use threads::shared;</div><div class="code_line">use DBI;</div><div class="code_line">&nbsp;</div><div class="code_line"># список создаваемых URL</div><div class="code_line">@URLs = ();</div><div class="code_line">@Req = ();</div><div class="code_line"># реквизиты БД</div><div class="code_line">$DBName &nbsp; = &quot;testo&quot;;</div><div class="code_line">$UserName = &quot;pgsql&quot;;</div><div class="code_line">$DBHost &nbsp; = &quot;192.168.1.47&quot;;</div><div class="code_line">$DBPort &nbsp; = &quot;5432&quot;;</div><div class="code_line"># счетчики замеров</div><div class="code_line">$TimeRaw &nbsp;= 0;</div><div class="code_line">$TimeId &nbsp; = 0;</div><div class="code_line">$SizeRaw &nbsp;= 0;</div><div class="code_line">$SizeId &nbsp; = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">###############################################################################</div><div class="code_line">$|++; if ($^O =~ /win/i) { system(&quot;cls&quot;); } else { system(&quot;clear&quot;); }</div><div class="code_line">print &quot;\nПоехали тестировать ============================================\n\n&quot;;</div><div class="code_line">###############################################################################</div><div class="code_line">&nbsp;</div><div class="code_line"># 1.Генерируем 1000 URL&#39;ов произвольной длины в диапазоне 12...128</div><div class="code_line">GenerateUrls(\@URLs);</div><div class="code_line"># 2.Гененируем таблицу запросов (индексы из @URLs)</div><div class="code_line">GenerateReq(\@Req);</div><div class="code_line"># 3.Чистим таблицы и записываем &quot;каталог&quot; URLs в БД</div><div class="code_line">PrepareTables(\@URLs);</div><div class="code_line"># 4.Запускаем 10 потоков за запись &quot;сырых&quot; логов и засекаем время их исполнения</div><div class="code_line">ThreadRawFunc();</div><div class="code_line"># 5.Вызываем вакуум и вычисляем размер полученной таблицы LogsRaw</div><div class="code_line">$SizeRaw = GatheringStats(&quot;LogsRaw&quot;);</div><div class="code_line"># 6.Чистим таблицы и записываем &quot;каталог&quot; URLs в БД</div><div class="code_line">PrepareTables(\@URLs);</div><div class="code_line"># 7.Запускаем 10 потоков за запись &quot;нормализованных&quot; логов</div><div class="code_line">ThreadIdFunc();</div><div class="code_line"># 8.Вызываем вакуум и вычисляем размер полученной таблицы LogsId</div><div class="code_line">$SizeId = GatheringStats(&quot;LogsId&quot;);</div><div class="code_line"># 9.Отчет</div><div class="code_line">print &quot;\n Время записи RAW-логов: $TimeRaw сек (полученный размер: $SizeRaw Mb)\n Время записи \&quot;нормализованных\&quot;-логов: $TimeId сек (полученный размер: $SizeId Mb)\n\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">###############################################################################</div><div class="code_line">&nbsp;</div><div class="code_line">sub GenerateUrls {</div><div class="code_line">&nbsp;&nbsp;print &quot; * Генерируем URL&#39;ы ... &quot;;</div><div class="code_line">&nbsp;&nbsp;my $Array = shift;</div><div class="code_line">&nbsp;&nbsp;srand();</div><div class="code_line">&nbsp;&nbsp;for my $I (1..1000) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;my $S = &quot;&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for my $J (0..rand(244)+11) { &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;$S .= chr(ord(&#39;a&#39;)+rand(ord(&#39;z&#39;)-ord(&#39;a&#39;)));</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;push @{$Array}, $S;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">sub GenerateReq {</div><div class="code_line">&nbsp;&nbsp;print &quot; * Генерируем произвольный массив индексов запросов URLs ... &quot;;</div><div class="code_line">&nbsp;&nbsp;my $Array = shift;</div><div class="code_line">&nbsp;&nbsp;srand();</div><div class="code_line">&nbsp;&nbsp;for my $I (1..100000) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;push @{$Array}, int(rand(999));</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">sub PrepareTables {</div><div class="code_line">&nbsp;&nbsp;my $Array = shift;</div><div class="code_line">&nbsp;&nbsp;my $Dbh = DBI-&#62;connect(&quot;dbi:Pg:dbname=$DBName;host=$DBHost;port=$DBPort&quot;,&quot;$UserName&quot;,&quot;&quot;,{PrintError =&#62; 0});</div><div class="code_line">&nbsp;&nbsp;die &quot;$DBI::errstr\n&quot; if (defined($DBI::err));</div><div class="code_line">&nbsp;&nbsp;# -- чистим таблицу URL</div><div class="code_line">&nbsp;&nbsp;print &quot;\n * Подготавливаем БД:\n&quot;;</div><div class="code_line">&nbsp;&nbsp;print &quot; &nbsp; - чистим таблицу URLs ... &quot;;</div><div class="code_line">&nbsp;&nbsp;my $query = &quot;DELETE FROM \&quot;URLs\&quot;&quot;;</div><div class="code_line">&nbsp;&nbsp;my $sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;my $rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">&nbsp;&nbsp;# -- чистим таблицу LogsRaw</div><div class="code_line">&nbsp;&nbsp;print &quot; &nbsp; - чистим таблицу LogRaw ... &quot;;</div><div class="code_line">&nbsp;&nbsp;$query = &quot;DELETE FROM \&quot;LogsRaw\&quot;&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">&nbsp;&nbsp;# -- чистим таблицу LogsId</div><div class="code_line">&nbsp;&nbsp;print &quot; &nbsp; - чистим таблицу LogId ... &quot;;</div><div class="code_line">&nbsp;&nbsp;$query = &quot;DELETE FROM \&quot;LogsId\&quot;&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">&nbsp;&nbsp;# -- сбрасываем счетчики Id таблиц</div><div class="code_line">&nbsp;&nbsp;print &quot; &nbsp; - сбрасываем счетчики Id таблиц ... &quot;;</div><div class="code_line">&nbsp;&nbsp;$query = &quot;ALTER SEQUENCE public.\&quot;URLs_Id_seq\&quot; INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 RESTART 1 CACHE 1 NO CYCLE&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;$query = &quot;ALTER SEQUENCE public.\&quot;LogsId_Id_seq\&quot; INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 RESTART 1 CACHE 1 NO CYCLE&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;$query = &quot;ALTER SEQUENCE public.\&quot;Logs_Id_seq\&quot; INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 RESTART 1 CACHE 1 NO CYCLE&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">&nbsp;&nbsp;# -- вакуум</div><div class="code_line">&nbsp;&nbsp;print &quot; &nbsp; - вакуум + сбор статистики ... &quot;;</div><div class="code_line">&nbsp;&nbsp;$query = &quot;VACUUM FULL ANALYZE&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">&nbsp;&nbsp;# -- заполняем таблицу URLs</div><div class="code_line">&nbsp;&nbsp;print &quot; &nbsp; - запоняем таблицу URLs ... &quot;;</div><div class="code_line">&nbsp;&nbsp;$query = &quot;INSERT INTO \&quot;URLs\&quot; (\&quot;URL\&quot;) VALUES &quot;;</div><div class="code_line">&nbsp;&nbsp;for(my $I=0; $I&#60;scalar(@{$Array}); $I++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;$query.=&quot;(&#39;&quot;.${$Array}[$I].&quot;&#39;)&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;$query.= &quot;, &quot; if ($I+1&#60;scalar(@{$Array})); &nbsp;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n&quot;;</div><div class="code_line">&nbsp;&nbsp;# -- переиндексируем таблицу URL</div><div class="code_line">&nbsp;&nbsp;print &quot; &nbsp; - переиндексируем таблицу URLs ... &quot;;</div><div class="code_line">&nbsp;&nbsp;$query = &quot;REINDEX TABLE \&quot;URLs\&quot;&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;$Dbh-&#62;disconnect();</div><div class="code_line">&nbsp;&nbsp;print &quot;Ок\n &nbsp; - пауза 30 сек ... &quot;;</div><div class="code_line">&nbsp;&nbsp;sleep(30);</div><div class="code_line">&nbsp;&nbsp;print &quot;Ok\n\n&quot;;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">sub ThreadRawFunc {</div><div class="code_line">&nbsp;&nbsp;print &quot; * Записываем LogsRaw &quot;;</div><div class="code_line">&nbsp;&nbsp;my @Threads;</div><div class="code_line">&nbsp;&nbsp;my $Threads=10;</div><div class="code_line">&nbsp;&nbsp;# Создаём нужное количество потоков</div><div class="code_line">&nbsp;&nbsp;for my $T (1..$Threads) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;push @Threads, threads-&#62;create(\&amp;WriteLogsRaw, $T);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;# Дожидаемся окончания работы всех потоков</div><div class="code_line">&nbsp;&nbsp;my $Start = gettimeofday;</div><div class="code_line">&nbsp;&nbsp;foreach my $T (@Threads) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;$T-&#62;join();</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;$TimeRaw = gettimeofday() - $Start;</div><div class="code_line">&nbsp;&nbsp;print &quot; Ok\n&quot;;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">sub ThreadIdFunc {</div><div class="code_line">&nbsp;&nbsp;print &quot; * Записываем LogsId &quot;;</div><div class="code_line">&nbsp;&nbsp;my @Threads;</div><div class="code_line">&nbsp;&nbsp;my $Threads=10;</div><div class="code_line">&nbsp;&nbsp;# Создаём нужное количество потоков</div><div class="code_line">&nbsp;&nbsp;for my $T (1..$Threads) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;push @Threads, threads-&#62;create(\&amp;WriteLogsId, $T);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;# Дожидаемся окончания работы всех потоков</div><div class="code_line">&nbsp;&nbsp;my $Start = gettimeofday;</div><div class="code_line">&nbsp;&nbsp;foreach my $T (@Threads) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;$T-&#62;join();</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;$TimeId = gettimeofday() - $Start;</div><div class="code_line">&nbsp;&nbsp;print &quot; Ok\n&quot;;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">sub WriteLogsRaw {</div><div class="code_line">&nbsp;&nbsp;print &quot;.&quot;;</div><div class="code_line">&nbsp;&nbsp;my $Dbh = DBI-&#62;connect(&quot;dbi:Pg:dbname=$DBName;host=$DBHost;port=$DBPort&quot;,&quot;$UserName&quot;,&quot;&quot;,{PrintError =&#62; 0});</div><div class="code_line">&nbsp;&nbsp;die &quot;$DBI::errstr\n&quot; if (defined($DBI::err));</div><div class="code_line">&nbsp;&nbsp;foreach my $I (@{Req}) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;my $query = &quot;INSERT INTO \&quot;LogsRaw\&quot; (\&quot;URL\&quot;,\&quot;Timestamp\&quot;) VALUES (&#39;&quot;.$URLs[$I].&quot;&#39;, NOW())&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;my $sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp; &nbsp;my $rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp; &nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;$Dbh-&#62;disconnect();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">sub WriteLogsId {</div><div class="code_line">&nbsp;&nbsp;print &quot;.&quot;;</div><div class="code_line">&nbsp;&nbsp;my $Dbh = DBI-&#62;connect(&quot;dbi:Pg:dbname=$DBName;host=$DBHost;port=$DBPort&quot;,&quot;$UserName&quot;,&quot;&quot;,{PrintError =&#62; 0});</div><div class="code_line">&nbsp;&nbsp;die &quot;$DBI::errstr\n&quot; if (defined($DBI::err));</div><div class="code_line">&nbsp;&nbsp;foreach my $I (@{Req}) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;my $query = &quot;INSERT INTO \&quot;LogsId\&quot; (\&quot;IdUrl\&quot;,\&quot;Timestamp\&quot;) VALUES ((SELECT u.\&quot;Id\&quot; FROM \&quot;URLs\&quot; AS u WHERE u.\&quot;URL\&quot; = &#39;&quot;.$URLs[$I].&quot;&#39;), NOW())&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;my $sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp; &nbsp;my $rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp; &nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;$Dbh-&#62;disconnect();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">sub GatheringStats {</div><div class="code_line">&nbsp;&nbsp;my $Name = shift;</div><div class="code_line">&nbsp;&nbsp;print &quot; * Поизводим вакуум и вычисляем размер таблицы \&quot;&quot;.$Name.&quot;\&quot; ... &quot;;</div><div class="code_line">&nbsp;&nbsp;my $Dbh = DBI-&#62;connect(&quot;dbi:Pg:dbname=$DBName;host=$DBHost;port=$DBPort&quot;,&quot;$UserName&quot;,&quot;&quot;,{PrintError =&#62; 0});</div><div class="code_line">&nbsp;&nbsp;die &quot;$DBI::errstr\n&quot; if (defined($DBI::err));</div><div class="code_line">&nbsp;&nbsp;my $query = &quot;VACUUM FULL ANALYZE&quot;;</div><div class="code_line">&nbsp;&nbsp;my $sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;my $rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;$query = &quot;SELECT (relpages * 8192 / (1024*1024))::int as size_mb FROM pg_class WHERE relname LIKE &#39;&quot;.$Name.&quot;&#39;&quot;;</div><div class="code_line">&nbsp;&nbsp;$sth = $Dbh-&#62;prepare($query);</div><div class="code_line">&nbsp;&nbsp;$rv = $sth-&#62;execute();</div><div class="code_line">&nbsp;&nbsp;die &quot;Error query on \&quot;$query\&quot;: &quot; . $Dbh-&#62;errstr . &quot;\n&quot; unless(defined $rv);</div><div class="code_line">&nbsp;&nbsp;my @array = $sth-&#62;fetchrow_array();</div><div class="code_line">&nbsp;&nbsp;$sth-&#62;finish();</div><div class="code_line">&nbsp;&nbsp;$Dbh-&#62;disconnect();</div><div class="code_line">&nbsp;&nbsp;print &quot; Ok\n&quot;;</div><div class="code_line">&nbsp;&nbsp;return $array[0];</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>JoeUser</author>
        <category>Perl</category>
      </item>
	
      </channel>
      </rss>
	