PHP Кеширование Mysql

UPD: Рабочая версия php MySimpleCache

Други, мне требуется ваша помощь или совет.

Такая ситуация, есть большая куча сайтов, написанных давным-давно. Они представляют из себя кучу файлов, в которых идет в перемешку php/html/sql запросы. Ни о каких современных паттернах программирования там речи нету. Переписывать эти сайты нет ни времени, ни желания, но они ужастно грузят БД.

Задача добавить на эти сайты кеширование sql запросов. Переписывать их и править дело очень не благодарное и потребует кучу времени.

Я поразмышлял и решил, что проще всего будет написать класс, который будет содержать в себе ф-ции синомы всех ф-ций для работы с бд.

mysql_query
mysql_fetch_assoc
mysql_fetch_array
mysql_num_rows
mysql_result
….

Фишка в том, что они должны внутри себя пробовать кешировать запрос и либо возвразать результат запроса, либо возвращать закешированный результат.

Данная идея мне кажется крутой, так как, она позволит легкой автозаменой включить кеширование на сайте и лишь потом в нужных местах его допилить.

Теперь главное, я уверен что должны быть аналоги, а я пытаюсь изобрести велосипед. Возможно вы сталкивались с такими вещами и их решениями. Ну или просто можете высказать свое мнение по этому поводу. Не поленитесь, буду очень благодарен.


SQL Joins Виды, типы, различия.

В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным.

Для начала оговорим, что у нас есть две таблицы: Table A и Table B:

id name id name
— —- — —-
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja

Теперь можно рассмотреть, варианты и различия возможных JOIN запросов.

Inner join выведет записи, которые соответствуют  таблице A и таблице B.

join-inner

SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name

id name id name
— —- — —-
1 Pirate 2 Pirate
3 Ninja 4 Ninja

Читать далее »