我注意到的Kohana 3 ORM運行「SHOW FULL列」我的每個模型,當我開始使用它們:幫助Kohana的3 ORM加快一點
SHOW FULL COLUMNS FROM `mytable`
此查詢可能需要幾個時鐘週期來執行(在Kohana分析器中,它實際上是我當前應用程序中運行的最慢的所有查詢)。
有沒有辦法通過禁用這種行爲來幫助Kohana 3 ORM加速並在我的模型中明確定義列?
我注意到的Kohana 3 ORM運行「SHOW FULL列」我的每個模型,當我開始使用它們:幫助Kohana的3 ORM加快一點
SHOW FULL COLUMNS FROM `mytable`
此查詢可能需要幾個時鐘週期來執行(在Kohana分析器中,它實際上是我當前應用程序中運行的最慢的所有查詢)。
有沒有辦法通過禁用這種行爲來幫助Kohana 3 ORM加速並在我的模型中明確定義列?
biakaveron回答我的問題有意見,所以我不能除了正確的答案。
從武泰答案摘自官方Kohana的論壇(其中biakaveron指向),這是正確的答案:
這很容易,
$table_columns
是 大陣了大量的信息,但 實際上這個信息中只有很少一部分在ORM中使用 。這樣做:
protected $_table_columns = array(
'id' => array('type'=>'int'),
'name' => array('type'=>'string'),
'allowNull' => array('type'=>'string','null'=>TRUE),
'created' => array('type'=>'int')
);
我已經選擇了這個作爲正確的答案,因爲它以最好的方式回答問題,無論它是否有用。 – Luke 2011-02-06 00:19:36
沒有當查詢被執行的開銷太大;儘管你可以緩存它們/通過手動定義它們來跳過這個過程(如果這真的是你想在你的模型中重寫$_table_columns
,儘管我沒有看到你可以節省多少時間 - 這是值得嘗試的)。
我提出了一個替代的緩存爲list_columns()
但它得到了否定,因爲它真的是沒有太大的瓶頸:http://dev.kohanaframework.org/issues/2848
不要忘了下劃線:
protected $_table_columns = array(
'id' => array('type'=>'int'),
'name' => array('type'=>'string'),
'allowNull' => array('type'=>'string','null'=>TRUE),
'created' => array('type'=>'int')
);
這會給你一個完整的列 信息作爲數組:
var_export($ORM->list_columns());
不知道Kohana的團隊是怎麼說的「秀全列」運行速度[R從緩存中退出所有情況。查詢緩存是mysql工作負載瓶頸,因爲我們的工作量很大。所以我們不得不關掉它。
https://blogs.oracle.com/dlutz/entry/mysql_query_cache_sizing
證據表明全列是最運行查詢 https://www.dropbox.com/s/zn0pbiogt774ne4/Screenshot%202015-02-17%2018.56.21.png?dl=0
證明從MySQL的NewRelic的插件磁盤上的臨時表。 https://www.dropbox.com/s/cwo09sy9qxboeds/Screenshot%202015-02-17%2019.00.19.png?dl=0
最常犯的查詢(> 100ms)按查詢數排序。
https://www.dropbox.com/s/a1kpmkef4jd8uvt/Screenshot%202015-02-17%2018.55.38.png?dl=0
http://kohanaframework.org/guide/api/ORM檢查了那裏,$ _table_columns可能是你在找什麼。 – egis 2011-02-04 06:33:22
http://forum.kohanaframework。org/discussion/comment/19555 /#Comment_19555 – biakaveron 2011-02-04 21:12:08