Oct 21 2009

ORM в мире PHP

Category: PHP,Symfony,Базы данныхingvar @ 22:50

ORM (англ. Object-relational mapping, русск. Объектно-реляционная проекция) — запись объектов программы в реляционную базу данных, отображение объекта и его представления в виде набора таблиц. — Википедия: ORM

В своей работе используем PHP Framework Symfony 1.2.9 и Propel 1.3, но планируем перейти на Symfony 1.3 + Doctrine. У меня возник вопрос: «А какие еще PHP ORM разработаны?». Немного погуглив — получили следующую подборку. Многие проекты новые и ещё альфа/бета версии, но в любом случае уже есть возможность из чего выбрать.

Propel
Doctrine
dOrm
Outlet PHP ORM
RedBean
phpORM
phpDataMapper
Qcodo
CoughPHP
PHPLinq
LightOrm for PHP, LightOrm on Freshmeat
PHP ActiveRecord, PHP ActiveRecord on GitHub
phpersistence
Rocks PHP Library
Pork.dbObject
Repose
ORMer
Porte
DaBase, DaBase — не очередная ORM для PHP

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


Jun 07 2009

MySQL EXPLAIN Cheat Sheet

Category: Cheat Sheets,MySQLingvar @ 00:19

Команда Explain отображает информацию о запросе Select. Эта информация может выявить проблемы с оптимизацией таблиц: необходимостью добавить индексы, чтобы получить более быструю выборку; можно понять, насколько запрос связывающий несколько таблиц удачный и т.д.

На страничке EXPLAIN Cheatsheet выложили электронную версию краткого описания работы с этой командой: pdf-версия. Там всего одна страница формата А-4, что весьма удобно.

Что можно почитать:
MySQL: Optimizing Queries with EXPLAIN
Habr: EXPLAIN — Самая мощная команда MySQL


Mar 14 2009

Топ-100 советов по производительности MySQL

Category: MySQLingvar @ 11:03

Топ-100 советов о производительности MySQL от авторов: Jay Pipes, Sheeri Kritzer, Bill Karwin, Ronald Bradford, Farhan «Frank Mash» Mashraqi, Taso Du Val, Ron Hu, Klinton Lee, Rick James, Alan Kasindorf, Eric Bergen, Kaj Arno, Joel Seligstein, Amy Lee.


Feb 04 2009

Как определить оптимальный размер innodb_log_file_size

Category: MySQLingvar @ 10:25

Как известно, при коммите InnoDB записывает данные не сразу в файлы данных, а сначала записывает изменения в innodb_log_file. Дело в том что записать данные непосредственно в таблицу — существенно более дорогая операция, чем записать изменения в бинарный лог.

Ведение innodb_log_file позволяет проводить оптимизацию i/o: записывать данные большими последовательными кусками, а также более быстрее обслуживать клиентов (клиент быстро сделал коммит, а данные в табличное пространство записываются в фоне). Поэтому чем больше файл, тем больше возможности для InnoDB оптимизировать ввод/вывод. В настоящее время суммарный размер innodb_log_file ограничен 4 Гб, что более чем достаточно для большинства случаев.

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


Aug 27 2008

Триггеры в MySQL

Category: MySQLingvar @ 23:08

Поддержка триггеров появилась в MySQL 5.0.2. Триггер — это аналог процедуры, который ассоциируется с конкретной таблицей и запускается при наступлении определенных событий связанных с этой самой таблицей. Событий для таблиц всего несколько: INSERT, DELETE, UPDATE.

Пример триггера INSERT для таблицы News — записываем в поле `created_at` дату и время создания записи. Конечно можно было воспользоваться TIMESTAMP, но в данном случае это сделано в качестве простого примера:
Читать дальше


Aug 23 2008

MySQL: cравнение даты (datetime) через оператор BETWEEN

Category: MySQLingvar @ 20:29

Оператор BETWEEN идеально подходит для сравнения диапазона между датами (datetime). Но тут есть подводные камни. Например, есть задача — выбрать данные из таблицы за некоторый промежуток времени (с ‘2008-08-14’ по ‘2008-08-23’).

Рекомендации:
1. Выполняя любые сравнения, приводить все данные к одному типу.
2. Если один операнд имеет значение типа TIMESTAMP или DATETIME, а другой является константой, операнды сравниваются как значения типа TIMESTAMP. А это значит, что если была строка в виде ‘2008-08-14’, то она автоматически преобразуется в TIMESTAMP ‘2008-08-14 00:00:00’ и это влияет на результат запроса.
3. Над данными, которые участвуют в условиях сравнения желательно не делать никаких операций — это позволяет для них использовать индексы, иначе они игнорируются.

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


Aug 07 2008

Список стратегий эффективного взаимодействия Memcached и MySQL

Category: MySQLIgor @ 21:40

На сайте highscalability разместили очень полезную статью о взаимодействии Memcached и MySQL: A Bunch of Great Strategies for Using Memcached and MySQL Better Together.


Jul 26 2008

Установка, настройка и запуск нескольких серверов MySQL для Windows

Category: MySQLIgor @ 14:30

Каждый раз когда, делаю установку, обновление новой версии сервера MySQL под Windows, необходимо перекинуть все базы данных со старой версии на новую. В этом случае удобно запустить обе версии MySQL на разных портах, а не останавливать одну службу, потом другую, потому что, что-то забываем, что-то не надо сразу. Итак последовательность действий.
Читать дальше


Jul 25 2008

Журнал общих запросов Mysql 5.1 general_log_file

Category: MySQLIgor @ 00:11

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