<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Разработка &#187; оптимизация</title>
	<atom:link href="http://www.job-blog.bullgare.ru/tag/%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.job-blog.bullgare.ru</link>
	<description>о программировании и работе</description>
	<lastBuildDate>Wed, 08 Feb 2012 09:39:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Использование VIEW в mySQL 5.0. Проблемы с производительностью.</title>
		<link>http://www.job-blog.bullgare.ru/2009/10/%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-view-%d0%b2-mysql-5-0-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d1%8b-%d1%81-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/10/%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-view-%d0%b2-mysql-5-0-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d1%8b-%d1%81-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 10:34:58 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[серверная оптимизация]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql 5]]></category>
		<category><![CDATA[оптимизация]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=448</guid>
		<description><![CDATA[Для тех, кто не знает, что это такое &#8211; ссылка Вкратце: созздаёт, фактически, &#171;временную таблицу&#187; (более правильно сказать &#8211; виртуальную таблицу или результат выборки в виде таблицы), в которой могут храниться данные из других таблиц и результаты применения аггрегирующих функций к ним. При этом если хранятся только данные, то эта таблица обновляется при обновлении входящих [...]]]></description>
			<content:encoded><![CDATA[<p>Для тех, кто не знает, что это такое &#8211; <a href="http://dev.mysql.com/tech-resources/articles/mysql-views.html">ссылка</a><br />
Вкратце: созздаёт, фактически, &laquo;временную таблицу&raquo; (более правильно сказать &#8211; виртуальную таблицу или результат выборки в виде таблицы), в которой могут храниться данные из других таблиц и результаты применения аггрегирующих функций к ним. При этом если хранятся только данные, то эта таблица обновляется при обновлении входящих в её состав таблиц.<br />
Но оказывается, что, как и многие нововведения (хранимые процедуры должны перекомпилироваться заново при начале сессии, если использовать подзапросы &#8211; очень много запросов получается), это тоже имеет очень большие проблемы с производительностью (<a href="http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/">ссылка</a>).<br />
Вкратце:<br />
неудобно искать проблемы в запросах (вроде как обращаешься к одной таблице, а на деле &#8211; нет), создаётся временная таблица без индексов. Также есть проблемы у mySQL при оптимизации запросов при обращении к VIEW.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/10/%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-view-%d0%b2-mysql-5-0-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d1%8b-%d1%81-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL Profiler: простой и удобный инструмент профилирования запросов</title>
		<link>http://www.job-blog.bullgare.ru/2009/09/mysql-profiler-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d0%b8-%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%bf%d1%80%d0%be%d1%84%d0%b8/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/09/mysql-profiler-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d0%b8-%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%bf%d1%80%d0%be%d1%84%d0%b8/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 09:42:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[серверная оптимизация]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[оптимизация]]></category>
		<category><![CDATA[профилирование]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=339</guid>
		<description><![CDATA[оригинал; полная цитата: Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL. Хочу представить вашему вниманию фичу MySQL — профайлинг. Появилась она начиная с версии 5.0.37. Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов) и почему она тормозит. И раньше подобный функционал был доступен, но пользоваться журналом запросов не в [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://habrahabr.ru/blogs/mysql/70435/">оригинал</a>; полная цитата:<br />
Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL.</p>
<p>Хочу представить вашему вниманию фичу MySQL — профайлинг.<br />
Появилась она начиная с версии 5.0.37.</p>
<p>Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов)<br />
и почему она тормозит.</p>
<p>И раньше подобный функционал был доступен, но пользоваться журналом запросов не в пример сложнее.</p>
<p>Итак, как пользоваться:</p>
<p>mysql> set profiling=1;<br />
mysql> select count(*) from comment;<br />
mysql> select count(*) from message;<br />
mysql> show profiles;</p>
<p>+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| Query_ID | Duration   | Query                        |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
|        1 | 0.00012700 | select count(*) from comment |<br />
|        2 | 0.00014200 | select count(*) from message |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
2 rows in set (0.00 sec)</p>
<p>Вуаля! Все выполненные запросы за сессию с временем выполнения.</p>
<p>На мой взгляд очень просто и сверх-удобно.</p>
<p>Можно пойти дальше, и узнать подробно на что тратилось время по каждому запросу:</p>
<p>mysql> show profile for query 1;<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
| Status                         | Duration |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
| starting                       | 0.000015 |<br />
| checking query cache for query | 0.000021 |<br />
| checking permissions           | 0.000003 |<br />
| Opening tables                 | 0.000007 |<br />
| System lock                    | 0.000004 |<br />
| Table lock                     | 0.000023 |<br />
| init                           | 0.000005 |<br />
| optimizing                     | 0.000005 |<br />
| executing                      | 0.000025 |<br />
| end                            | 0.000003 |<br />
| end                            | 0.000001 |<br />
| query end                      | 0.000002 |<br />
| storing result in query cache  | 0.000003 |<br />
| freeing items                  | 0.000003 |<br />
| closing tables                 | 0.000004 |<br />
| logging slow query             | 0.000002 |<br />
| cleaning up                    | 0.000001 |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
17 rows in set (0.00 sec)</p>
<p>Подробнее о профайлинге в статье: <a href="http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html">Using the New MySQL Query Profiler</a></p>
<p>Upd: как точно подметил zayceslavshow profiles по умолчанию показывает профили для 15 запросов. Кол-во запрсов можно увеличить с помощью параметра profiling_history_size, но не более чем до 100.</p>
<p>mysql> set profiling=1;<br />
mysql> set profiling_history_size=100;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/09/mysql-profiler-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d0%b8-%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%bf%d1%80%d0%be%d1%84%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Оптимизация и скорость выполнения в jQuery</title>
		<link>http://www.job-blog.bullgare.ru/2009/08/%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d0%b8-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-jquery/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/08/%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d0%b8-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-jquery/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 14:26:08 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[клиентская оптимизация]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[оптимизация]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=173</guid>
		<description><![CDATA[ссылка на интересный доклад по jQuery]]></description>
			<content:encoded><![CDATA[<p><a href="http://mabp.kiev.ua/2009/08/10/presentation-from-coffee-n-code/">ссылка на интересный доклад по jQuery</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/08/%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d0%b8-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Кеширование php-кода в промежуточный (байт-) код: APC</title>
		<link>http://www.job-blog.bullgare.ru/2009/07/%d0%ba%d0%b5%d1%88%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-php-%d0%ba%d0%be%d0%b4%d0%b0-%d0%b2-%d0%bf%d1%80%d0%be%d0%bc%d0%b5%d0%b6%d1%83%d1%82%d0%be%d1%87%d0%bd%d1%8b%d0%b9-%d0%b1%d0%b0/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/07/%d0%ba%d0%b5%d1%88%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-php-%d0%ba%d0%be%d0%b4%d0%b0-%d0%b2-%d0%bf%d1%80%d0%be%d0%bc%d0%b5%d0%b6%d1%83%d1%82%d0%be%d1%87%d0%bd%d1%8b%d0%b9-%d0%b1%d0%b0/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 10:36:53 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[серверная оптимизация]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[кеширование]]></category>
		<category><![CDATA[оптимизация]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=20</guid>
		<description><![CDATA[документация (англ.) Всё очень просто. в php.ini добавить [APC] extension=apc.so #(.dll) apc.enabled = 1 apc.shm_segments = 1 apc.shm_size = 128 apc.max_file_size = 10m #apc.stat = 0 для статистики apc.stat_ctime = 1 *apc.stat_ctime=1 &#8211; очень важно при работе через &#171;export&#187; системы контроля версий (SVN). Вот для чего: SVN на самом деле создает новые файлы, заменяет старые, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ru2.php.net/apc/">документация</a> (англ.)<br />
Всё очень просто.</p>
<p>в php.ini добавить<br />
[APC]<br />
extension=apc.so #(.dll)<br />
apc.enabled = 1<br />
apc.shm_segments = 1<br />
apc.shm_size = 128<br />
apc.max_file_size = 10m<br />
#apc.stat = 0 для статистики<br />
apc.stat_ctime = 1</p>
<p>*apc.stat_ctime=1 &#8211; очень важно при работе через &laquo;export&raquo; системы контроля версий (SVN).<br />
Вот для чего:<br />
SVN на самом деле создает новые файлы, заменяет старые, и выставляет для них старую дату изменения. Это меняет индексные дескрипторы, а не mtime, и APC будет выполнять некорректный файл.<br />
Включение верификации ctime позволит избежать этой проблемы (будут проверяться индексные дескрипторы на предмет изменения).</p>
<p>apc_cache_info() &#8211; в php-файле посмотреть информацию по кешу<br />
<a href="http://docs.moodle.org/en/Installing_APC_in_Windows">как установить APC в Windows</a> (англ.) &#8211; проблема в том, что официально больше не поддерживается</p>
<p><a href="http://habrahabr.ru/blogs/webdev/11553/">неплохая статья на хабре про оптимизацию</a> (2007 год)</p>
<p>Для справки:<br />
Установка на Gentoo:<br />
emerge pecl-apc<br />
Проверка установки:<br />
php -r &#8216;phpinfo();&#8217; |grep apc</p>
<p>Для установки в Windows нужно <a href="http://downloads.php.net/pierre/">скачать php_apc.dll</a>.<br />
Будет работать ссылка или нет &#8211; не знаю, поэтому выкладываю здесь файлы:<br />
<a href='http://www.job-blog.bullgare.ru/wp-content/uploads/2009/07/php_apc-3.0.19-5.2-Win32-VC6-x86.zip'>php_apc-3.0.19-5.2-Win32-VC6-x86</a><br />
<a href='http://www.job-blog.bullgare.ru/wp-content/uploads/2009/07/php_apc-3.0.19-5.2-Win32-nts-VC6-x86.zip'>php_apc-3.0.19-5.2-Win32-nts-VC6-x86</a><br />
<a href='http://www.job-blog.bullgare.ru/wp-content/uploads/2009/07/php_apc-3.1-5.3-svn-20091026.zip'>php_apc-3.1-5.3-svn-20091026</a><br />
<a href='http://www.job-blog.bullgare.ru/wp-content/uploads/2009/07/php_apc-3.1-5-3-nts-svn-20091026.zip'>php_apc-3.1-5-3-nts-svn-20091026</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/07/%d0%ba%d0%b5%d1%88%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-php-%d0%ba%d0%be%d0%b4%d0%b0-%d0%b2-%d0%bf%d1%80%d0%be%d0%bc%d0%b5%d0%b6%d1%83%d1%82%d0%be%d1%87%d0%bd%d1%8b%d0%b9-%d0%b1%d0%b0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

