Zend Framework 在執行 SQL 時,會先再跑一個 SQL,取得 Metadata 資訊後,
才會真正的執行你的 SQL。
所以如果將 Metadata Cache 後,就可以減少一個 SQL 語法,讓 DB 不至於被操到死~~
可以參考:Zend_Db_Table > Caching Table Metadata
我的環境是 : Zend Framework 1.9.5
我在 application > Bootstrap.php
加入:
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    protected function _initDbTableCache() {
        // 設定 metadata cache
        $fOpt = array(
            'automatic_serialization' => true
        );
        $bOpt = array(
            'cache_dir' => '/tmp/_zf_cache'
        );
        $cache = Zend_Cache::factory('Core', 'File', $fOpt, $bOpt);
        Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
    }
    //...... 略
之後只要有 Cache ,就不會再去 DB 查 Metadata 了。
但如果你的 Table 有修改過,可能就要記得去清一下 Cache 了。
我是還沒改過Table ( Alter Table),不確定是不是一定要清,但感覺是要。
下圖,加入 Cache 後,就沒有再去查 Metadata 了。
搞定~
 
0 comments:
張貼留言