Kohana. Ускоряем ORM

Штатный ORM у Kohana практически на каждое шевеление создаёт запрос «SHOW CREATE TABLE blablabla«.

Я как-то не придавал этому значения раньше, но похоже этот запрос довольно ёмкий по времени, у меня он почему-то занимает до пол-секунды в плохую погоду (погода зависит от текущей загрузки хостинга). А если страница пестрит обращениями к БД, которые делаются через ORM, то ждите того, что треть запросов будет именно «SHOW CREATE TABLE«.

Как бы сделать так, чтобы ORM так не делал? Ведь структура таблиц работающего сайта практически не меняется годами!

Решение простое! Нужно немного переопределить метод list_columns класса ORM так, чтобы он кешировал структуру таблицы и дважды не бегать.

Для этого нужно в папке application/classes создать файл orm.php с примерно сдедующим содержанием:

_table_name .»structure»; if ($result = Kohana::cache($cache_key, NULL, $cache_lifetime)) { $_columns_data = $result; }
if( !isset($_columns_data)) { $_columns_data = $this->_db->list_columns($this->_table_name); Kohana::cache($cache_key, $_columns_data, $cache_lifetime); }
return $_columns_data; } }

Кстати это не я такой умный. Идею решения я нагуглил, хотя и немного переделал.

UPD: Понятно это нужно делать в конце, когда разработка завершена и структура БД уже не будет меняться

Оставить комментарий

Яндекс.Метрика