Пространство имен в теме и производительность версии на бд
27.11.2009Приступил к первым тестам версии на бд и сразу же решил оценить производительность - бд всегда работает медленнее файлов. Генерация без кеша страницы занимает при одном посте 13 запросов, самым долгим из которых оказался установка часового пояса. Закомментировал этот участок - часовой пояс в бд особо ни на что не влияет. Для сравнения цифры - на файлах генерация занимает около 0.03 секунды, на бд 0.09. После ликвидации ошибок надо будет еще подтестировать на большом сайте - тесты идут на одном посте и одном комменте.
Движок сайта - это сложный набор скриптов, и мне лично разработчику, не совсем очевидна статистика производительности. Посмотрел все запросы к бд - чуть ли не половина из них это проверка событий. Объясню - в версии на файлах все события хранятся в одной особой таблице, и соответственно все классы, чтобы вызвать событие, предварительно дергают бд для получения списка подписчиков на событие. В версии на файлах все события хранятся в данных самого класса. Для бд сделал отдельную общую таблицу. Вот сейчас призадумался - не ликвидировать ли этот алгоритм с бд, а сделать один общий класс, работающий на файлах. То есть не использовать для хранения подписчиков на события бд. Текущий опыт показывает, что подписчиков как правило мало, а поэтому нет особой необходимости использовать бд для хранения данных. Думаю следует сделать следующим образом: классы которые не используют бд для хранения данных будут по прежнему события хранить в своих данных, а классы с бд в отдельно.
Также встал вопрос о названиях секций в теме, и соответствующем доступе к ним из класса на php. Шаблоны темы организованы в виде дерева, когда как я пока сделал в классе в виде массива. Думаю переделать это все под примерно следующий стиль:
$theme = ttheme::instance();
$tml = $theme->excerpts->files->image;
Проблема была в вложенных объектах - что если требуется не объект, а строка. Для этого есть спецметод в php - __tostring();
← Ранее Формализация кэширования сайтбаров
Позже Дерево шаблонов темы →
Комментарии (6) на запись “Пространство имен в теме и производительность версии на бд”
Оставить комментарий
или будут как?
Движок будет двойным: можно будет выбирать тип установки - только на файлах, или с использованием бд.Правда это следует устанавливать только перед установкой в index.php
define('dbversion', false); - для файлов
define('dbversion', 'combo'); - для бд
define('dbversion', 'full'); - исключительно на бд (не рекомендуется)
Параметры бд вводятся при установки в форме. Кстати сейчас уменьшил количество запросов с 16 до 8, и еще хочу убрать пару. Правда это с одной записью. Генерация страницы становиться примерно одинаковой, что на файлах, что с бд. Есть даже предположение, что на бд с большим количеством постов будет работать быстрее
Привет.
Спасибо за CMS все нравится.
Кстати создал бы на поддомене форум небольшой, там бы было легче обсуждать и систематизировать инфу, тут по комментам ничего не найти. Можно какой нибудь PunBB поставить что нибудь из легких движков. :-)
Вопросы:
FOAF
Профиль
Карта сайта