<?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>Rpsl &#187; mysql</title> <atom:link href="http://blog.rpsl.info/tag/mysql/feed" rel="self" type="application/rss+xml" /><link>http://blog.rpsl.info</link> <description>Очень остроумная надпись</description> <lastBuildDate>Wed, 08 Sep 2010 21:30:18 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0</generator> <item><title>Кэширование MySQL&#160;&#8212; MySimpleCache</title><link>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html</link> <comments>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html#comments</comments> <pubDate>Tue, 06 Jul 2010 17:33:43 +0000</pubDate> <dc:creator>Rpsl</dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Полезное]]></category> <category><![CDATA[cache]]></category> <category><![CDATA[memcache]]></category> <category><![CDATA[mysimplecache]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[php]]></category> <category><![CDATA[sql]]></category><guid isPermaLink="false">http://blog.rpsl.info/?p=2294</guid> <description><![CDATA[Собственно возвращаясь к прошлому посту&#160;&#8212; "PHP Кэширование MySQL, хочу сказать спасибо всем, кто помог советами. По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением. Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно [...]]]></description> <content:encoded><![CDATA[<p>Собственно возвращаясь к прошлому посту&nbsp;&mdash; <strong>"<a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html">PHP Кэширование MySQL</a></strong>, хочу сказать спасибо всем, кто помог советами.</p><p>По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением.</p><p>Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось.</p><p>Проект поселился на <a href="http://github.com/Rpsl/MySimpleCache">github.com</a>, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там.<br /> <a href="http://github.com/Rpsl/MySimpleCache"><img src="http://blog.rpsl.info/wp-content/uploads/2010/07/mysimplecache.png" alt="mysimplecache Кэширование MySQL   MySimpleCache" width="214" height="119" class="aligncenter size-full wp-image-2295" title="Кэширование MySQL   MySimpleCache" /></a></p><p>Логика работы проста. Что бы <strong>закэшировать <a href="http://blog.rpsl.info/tag/mysql" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with mysql">MySQL</a></strong> запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций кеширования. Они являются синонимами, а значит вам нужно только перед вызовом дописать название класса.</p><p>При вызове mysql_query, скрипт попытается закешировать данный запрос и либо вернет ссылку на закешированный массив, либо вернет ссылку на ресурс.</p><p>Все последующие операции будут проверять является ли ссылка ресурсом и уже по обстоятельствам будут либо доставать данные из <strong><a href="http://blog.rpsl.info/tag/memcache" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with memcache">memcache</a></strong>, либо получать их напрямую.</p><p>Буду рад любым комментариям и повторяю еще раз, что крайне не рекомендую прикручивать этот скрипт на сайты которые чуть более серьезнее чем сателит.</p><p>Сюда приходят по следующим фразам</p><ul><li><a href="http://blog.rpsl.info/2010/06/slim-otvet-gufu-slim-spice-bape.html">ответ на spice baby</a></li><li><a href="http://blog.rpsl.info/2010/06/slim-otvet-gufu-slim-spice-bape.html">spice baby kommentarii</a></li><li><a href="http://blog.rpsl.info/2010/06/slim-otvet-gufu-slim-spice-bape.html">spice baby комменты</a></li><li><a href="http://blog.rpsl.info/tag/mootools">плагины mootools</a></li><li><a href="http://blog.rpsl.info/2009/01/google-disk-aka-gdrive.html">google disk</a></li></ul>Тэги: <a href="http://blog.rpsl.info/tag/cache" title="cache" rel="tag nofollow">cache</a>, <a href="http://blog.rpsl.info/tag/memcache" title="memcache" rel="tag nofollow">memcache</a>, <a href="http://blog.rpsl.info/tag/mysimplecache" title="mysimplecache" rel="tag nofollow">mysimplecache</a>, <a href="http://blog.rpsl.info/tag/mysql" title="mysql" rel="tag nofollow">mysql</a>, <a href="http://blog.rpsl.info/tag/php" title="php" rel="tag nofollow">php</a>, <a href="http://blog.rpsl.info/tag/sql" title="sql" rel="tag nofollow">sql</a><br /><h4>Похожие записи</h4><ul class="st-related-posts"><li><a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html" title="PHP Кеширование Mysql (27 Июнь  2010)">PHP Кеширование Mysql</a> (1)</li><li><a href="http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html" title="SQL Joins Виды, типы, различия (27 Июль  2009)">SQL Joins Виды, типы, различия</a> (1)</li><li><a href="http://blog.rpsl.info/2010/03/chat-dlya-vbulletin.html" title="Чат для vbulletin (5 Март  2010)">Чат для vbulletin</a> (3)</li><li><a href="http://blog.rpsl.info/2009/01/cvetovaya-identifikaciya.html" title="Цветовая идентификация (13 Январь  2009)">Цветовая идентификация</a> (1)</li><li><a href="http://blog.rpsl.info/2009/04/integraciya-phpbb3-s-lyubym-sajtom.html" title="Интеграция phpbb3 с любым сайтом (24 Апрель  2009)">Интеграция phpbb3 с любым сайтом</a> (20)</li></ul>]]></content:encoded> <wfw:commentRss>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PHP Кеширование Mysql</title><link>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html</link> <comments>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html#comments</comments> <pubDate>Sun, 27 Jun 2010 12:04:12 +0000</pubDate> <dc:creator>Rpsl</dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Заметки]]></category> <category><![CDATA[cache]]></category> <category><![CDATA[memcache]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[php]]></category><guid isPermaLink="false">http://blog.rpsl.info/?p=1401</guid> <description><![CDATA[UPD: Рабочая версия php MySimpleCache Други, мне требуется ваша помощь или совет. Такая ситуация, есть большая куча сайтов, написанных давным-давно. Они представляют из себя кучу файлов, в которых идет в перемешку php/html/sql запросы. Ни о каких современных паттернах программирования там речи нету. Переписывать эти сайты нет ни времени, ни желания, но они ужастно грузят БД. [...]]]></description> <content:encoded><![CDATA[<p><img src="http://blog.rpsl.info/wp-content/uploads/2010/06/mysql-logo.png" alt="mysql logo PHP Кеширование Mysql" title="mysql-logo" width="200" height="103" class="alignleft size-full wp-image-1426" /></p><p><strong>UPD:</strong> Рабочая версия <a href="http://blog.rpsl.info/tag/php" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with php">php</a> <a href="http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html">MySimpleCache</a></p><p>Други, мне требуется ваша помощь или совет.</p><p>Такая ситуация, есть большая куча сайтов, написанных давным-давно. Они представляют из себя кучу файлов, в которых идет в перемешку <a href="http://blog.rpsl.info/tag/php" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with php">php</a>/html/<a href="http://blog.rpsl.info/tag/sql" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with sql">sql</a> запросы. Ни о каких современных паттернах программирования там речи нету. Переписывать эти сайты нет ни времени, ни желания, но они ужастно грузят БД.</p><p>Задача добавить на эти сайты кеширование <a href="http://blog.rpsl.info/tag/sql" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with sql">sql</a> запросов. Переписывать их и править дело очень не благодарное и потребует кучу времени.</p><p>Я поразмышлял и решил, что проще всего будет написать класс, который будет содержать в себе ф-ции синомы всех ф-ций для работы с бд.</p><blockquote><p>mysql_query<br /> mysql_fetch_assoc<br /> mysql_fetch_array<br /> mysql_num_rows<br /> mysql_result<br /> ...</p></blockquote><p>Фишка в том, что они должны внутри себя пробовать кешировать запрос и либо возвразать результат запроса, либо возвращать закешированный результат.</p><p>Данная идея мне кажется крутой, так как, она позволит легкой автозаменой включить кеширование на сайте и лишь потом в нужных местах его допилить.</p><p>Теперь главное, я уверен что должны быть аналоги, а я пытаюсь изобрести велосипед. Возможно вы сталкивались с такими вещами и их решениями. Ну или просто можете высказать свое мнение по этому поводу. Не поленитесь, буду очень благодарен.</p>Тэги: <a href="http://blog.rpsl.info/tag/cache" title="cache" rel="tag nofollow">cache</a>, <a href="http://blog.rpsl.info/tag/memcache" title="memcache" rel="tag nofollow">memcache</a>, <a href="http://blog.rpsl.info/tag/mysql" title="mysql" rel="tag nofollow">mysql</a>, <a href="http://blog.rpsl.info/tag/php" title="php" rel="tag nofollow">php</a><br /><h4>Похожие записи</h4><ul class="st-related-posts"><li><a href="http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html" title="Кэширование MySQL&nbsp;&mdash; MySimpleCache (6 Июль  2010)">Кэширование MySQL&nbsp;&mdash; MySimpleCache</a> (0)</li><li><a href="http://blog.rpsl.info/2010/03/chat-dlya-vbulletin.html" title="Чат для vbulletin (5 Март  2010)">Чат для vbulletin</a> (3)</li><li><a href="http://blog.rpsl.info/2009/01/cvetovaya-identifikaciya.html" title="Цветовая идентификация (13 Январь  2009)">Цветовая идентификация</a> (1)</li><li><a href="http://blog.rpsl.info/2009/04/integraciya-phpbb3-s-lyubym-sajtom.html" title="Интеграция phpbb3 с любым сайтом (24 Апрель  2009)">Интеграция phpbb3 с любым сайтом</a> (20)</li><li><a href="http://blog.rpsl.info/2009/02/govnokoding-ili-ne-xochu.html" title="Говнокодинг или &laquo;не хочу!&raquo; (2 Февраль  2009)">Говнокодинг или &laquo;не хочу!&raquo;</a> (1)</li></ul>]]></content:encoded> <wfw:commentRss>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>SQL Joins Виды, типы, различия</title><link>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html</link> <comments>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html#comments</comments> <pubDate>Mon, 27 Jul 2009 18:56:43 +0000</pubDate> <dc:creator>Rpsl</dc:creator> <category><![CDATA[Полезное]]></category> <category><![CDATA[Статьи]]></category> <category><![CDATA[join]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[sql]]></category><guid isPermaLink="false">http://blog.rpsl.info/?p=307</guid> <description><![CDATA[В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным. Для начала оговорим, что у нас есть две таблицы: Table A и Table B: id name id name &#8212; ----&#160;&#8212; ---- 1 Pirate 1 Rutabaga 2 Monkey 2 Pirate 3 Ninja 3 Darth Vader 4 Spaghetti 4 Ninja Теперь можно рассмотреть, варианты и [...]]]></description> <content:encoded><![CDATA[<p>В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным.</p><p>Для начала оговорим, что у нас есть две таблицы: <strong>Table A</strong> и <strong>Table B</strong>:</p><blockquote><p>id name       id  name<br /> &mdash; ----&nbsp;&mdash;  ----<br /> 1 <span style="color: red;">Pirate</span> 1   Rutabaga<br /> 2  Monkey     2 <span style="color: red;">Pirate</span><br /> 3 <span style="color: red;">Ninja</span> 3   Darth Vader<br /> 4  Spaghetti  4 <span style="color: red;">Ninja<br /> </span></p></blockquote><p>Теперь можно рассмотреть, варианты и различия возможных <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a> запросов.</p><p><strong>Inner <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong> выведет записи, которые соответствуют  таблице A и таблице B.</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-308" title="join-inner" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner-150x150.png" alt="join inner 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a></p><p>SELECT * FROM TableA<br /> <strong>INNER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a></strong> TableB<br /> ON TableA.name = TableB.name</p><p>id  name       id   name<br /> &mdash;  ----&nbsp;&mdash;   ----<br /> 1   Pirate     2    Pirate<br /> 3   Ninja      4    Ninja</p></blockquote><p><span id="more-307"></span></p><p><strong>Full outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong> выведет все записи из Таблицы A и Таблицы B,  сопоставив данные из обеих таблиц, если в одной из таблиц данные отсутсвуют, то результатом для данной ячейки будет &laquo;NULL&raquo;</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-314" title="join-cartesian" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian-150x150.png" alt="join cartesian 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> <strong>FULL OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a></strong> TableB<br /> ON TableA.name = TableB.name</p><p>id    name       id    name<br /> &mdash;    ----&nbsp;&mdash;    ----<br /> 1     Pirate     2     Pirate<br /> 2     Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 3     Ninja      4     Ninja<br /> 4     Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 1     Rutabaga<br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 3     Darth Vader</p></blockquote><p><strong>Left outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong> выведет данные из Таблицы A, с сопутсвующими данными из Таблицы B. Если подходящих данных в Таблице B нету, то будет выбран &laquo;NULL&raquo;</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-316" title="join-left" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-150x150.png" alt="join left 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> <strong>LEFT OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a></strong> TableB<br /> ON TableA.name = TableB.name</p><p>id  name       id    name<br /> &mdash;  ----&nbsp;&mdash;    ----<br /> 1   Pirate     2     Pirate<br /> 2   Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 3   Ninja      4     Ninja<br /> 4   Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span></p></blockquote><p>Оперируя прошлым примером, нам не составит труда достать только те данные, которые есть в Таблице A, для этого нужно использовть <strong> left outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong>, с исключением пустых записей из Таблицы B</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-318" title="join-left-outer" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer-150x150.png" alt="join left outer 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> LEFT OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a> TableB<br /> ON TableA.name = TableB.name<br /> <strong>WHERE TableB.id IS null</strong></p><p>id  name       id     name<br /> &mdash;  ----&nbsp;&mdash;     ----<br /> 2   Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 4   Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span></p></blockquote><p>А если, чуть чуть усложнить задачу, то мы лего достанем данные, которые не имеют ничего общего. Для этого нужно использовать <strong>full outer <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">join</a></strong>.</p><blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignright size-thumbnail wp-image-320" title="join-outer" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer-150x150.png" alt="join outer 150x150 SQL Joins Виды, типы, различия." width="150" height="150" /></a>SELECT * FROM TableA<br /> FULL OUTER <a href="http://blog.rpsl.info/tag/join" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with join">JOIN</a> TableB<br /> ON TableA.name = TableB.name<br /> <strong>WHERE TableA.id IS null<br /> OR TableB.id IS null<br /> </strong><br /> id    name       id    name<br /> &mdash;    ----&nbsp;&mdash;    ----<br /> 2     Monkey <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> 4     Spaghetti <span style="color: gray;">null</span> <span style="color: gray;">null</span><br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 1     Rutabaga<br /> <span style="color: gray;">null</span> <span style="color: gray;">null</span> 3     Darth Vader</p></blockquote><p>Вот собственно и всё. Всё просто.</p><p>P.s. Данная статья является вольным переводом некой статьи, авторство которой мне не известно.</p>Тэги: <a href="http://blog.rpsl.info/tag/join" title="join" rel="tag nofollow">join</a>, <a href="http://blog.rpsl.info/tag/mysql" title="mysql" rel="tag nofollow">mysql</a>, <a href="http://blog.rpsl.info/tag/sql" title="sql" rel="tag nofollow">sql</a><br /><h4>Похожие записи</h4><ul class="st-related-posts"><li><a href="http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html" title="Кэширование MySQL&nbsp;&mdash; MySimpleCache (6 Июль  2010)">Кэширование MySQL&nbsp;&mdash; MySimpleCache</a> (0)</li><li><a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html" title="PHP Кеширование Mysql (27 Июнь  2010)">PHP Кеширование Mysql</a> (1)</li></ul>]]></content:encoded> <wfw:commentRss>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached (user agent is rejected)
Database Caching 16/35 queries in 0.095 seconds using memcached

Served from: blog.rpsl.info @ 2010-09-09 01:21:34 -->