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
Читать дальше
Команда Explain отображает информацию о запросе Select. Эта информация может выявить проблемы с оптимизацией таблиц: необходимостью добавить индексы, чтобы получить более быструю выборку; можно понять, насколько запрос связывающий несколько таблиц удачный и т.д.
На страничке EXPLAIN Cheatsheet выложили электронную версию краткого описания работы с этой командой: pdf-версия. Там всего одна страница формата А-4, что весьма удобно.
Что можно почитать:
• MySQL: Optimizing Queries with EXPLAIN
• Habr: EXPLAIN — Самая мощная команда MySQL
Топ-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.
Как известно, при коммите InnoDB записывает данные не сразу в файлы данных, а сначала записывает изменения в innodb_log_file. Дело в том что записать данные непосредственно в таблицу – существенно более дорогая операция, чем записать изменения в бинарный лог.
Ведение innodb_log_file позволяет проводить оптимизацию i/o: записывать данные большими последовательными кусками, а также более быстрее обслуживать клиентов (клиент быстро сделал коммит, а данные в табличное пространство записываются в фоне). Поэтому чем больше файл, тем больше возможности для InnoDB оптимизировать ввод/вывод. В настоящее время суммарный размер innodb_log_file ограничен 4 Гб, что более чем достаточно для большинства случаев.
Читать дальше
Поддержка триггеров появилась в MySQL 5.0.2. Триггер – это аналог процедуры, который ассоциируется с конкретной таблицей и запускается при наступлении определенных событий связанных с этой самой таблицей. Событий для таблиц всего несколько: INSERT, DELETE, UPDATE.
Пример триггера INSERT для таблицы News – записываем в поле `created_at` дату и время создания записи. Конечно можно было воспользоваться TIMESTAMP, но в данном случае это сделано в качестве простого примера:
Читать дальше
Оператор BETWEEN идеально подходит для сравнения диапазона между датами (datetime). Но тут есть подводные камни. Например, есть задача – выбрать данные из таблицы за некоторый промежуток времени (с ‘2008-08-14′ по ‘2008-08-23′).
Рекомендации:
1. Выполняя любые сравнения, приводить все данные к одному типу.
2. Если один операнд имеет значение типа TIMESTAMP или DATETIME, а другой является константой, операнды сравниваются как значения типа TIMESTAMP. А это значит, что если была строка в виде ‘2008-08-14′, то она автоматически преобразуется в TIMESTAMP ‘2008-08-14 00:00:00′ и это влияет на результат запроса.
3. Над данными, которые участвуют в условиях сравнения желательно не делать никаких операций – это позволяет для них использовать индексы, иначе они игнорируются.
Читать дальше
На сайте highscalability разместили очень полезную статью о взаимодействии Memcached и MySQL: A Bunch of Great Strategies for Using Memcached and MySQL Better Together.
Каждый раз когда, делаю установку, обновление новой версии сервера MySQL под Windows, необходимо перекинуть все базы данных со старой версии на новую. В этом случае удобно запустить обе версии MySQL на разных портах, а не останавливать одну службу, потом другую, потому что, что-то забываем, что-то не надо сразу. Итак последовательность действий.
Читать дальше
Журнал содержит информацию о подключениях клиентов, запросах и другого рода событиях. Это файл очень полезен для отладки, оптимизации систем.
Читать дальше
Комментарии (7)