Domanda

Ho notato che Kohana 3 Orm esegue una "mostra colonne complete" per ciascuno dei miei modelli quando inizio a usarli:

SHOW FULL COLUMNS FROM `mytable`

Questa query potrebbe richiedere alcuni cicli di clock per essere eseguiti (nel profiler Kohana è in realtà il più lento di tutte le domande eseguite nella mia app attuale).

C'è un modo per aiutare Kohana 3 Orm ad accelerare disabilitando questo comportamento e definire esplicitamente le colonne nei miei modelli?

È stato utile?

Soluzione

Biakaveron Ho risposto alla mia domanda con un commento, quindi non posso tranne la risposta corretta.

Tratto dalla risposta di Wouter sui forum ufficiali di Kohana (dove Biakaveron indicava), questa è la risposta corretta:

È molto facile, $table_columns è un grande array con molte informazioni, ma in realtà solo pochissime informazioni vengono utilizzate in ORM.

Questo farà:

protected $_table_columns = array(
    'id'            =>  array('type'=>'int'),
    'name'          =>  array('type'=>'string'),
    'allowNull'     =>  array('type'=>'string','null'=>TRUE),
    'created'       =>  array('type'=>'int')
);

Altri suggerimenti

Non c'è troppo sovraccarico quando quella query viene eseguita; Anche se puoi memorizzarli nella cache / saltare il processo definendoli manualmente (se è davvero quello che vuoi sovrascrivere il $_table_columns Nei tuoi modelli, anche se non vedo quanto tempo puoi risparmiare farlo - vale la pena provare).

Ho proposto un'alternativa di memorizzazione nella cache per list_columns() Ma è stato negato in quanto non è così tanto un collo di bottiglia: http://dev.kohanaframework.org/issues/2848

Non dimenticare il sottolineaggio:

protected $_table_columns = array(
    'id'            =>  array('type'=>'int'),
    'name'          =>  array('type'=>'string'),
    'allowNull'     =>  array('type'=>'string','null'=>TRUE),
    'created'       =>  array('type'=>'int')
);

Questo ti darà informazioni complete sulla colonna come array:

var_export($ORM->list_columns());

Non sono sicuro di come il team di Kohana abbia detto che "Mostra colonne complete" funziona come una lettura rapida dalla cache per tutti i casi. Query Cache è un collo di bottiglia su MySQL per il nostro carico di lavoro dovuto a. Quindi abbiamo dovuto spegnerlo.

https://blogs.oracle.com/dlutz/entry/mysql_query_cache_sizing

Prova che mostrano colonne complete è la query più eseguitahttps://www.dropbox.com/s/zn0pbiogt774ne4/screenshot%202015-02-17%2018.56.21.png?dl=0

Prova delle tabelle temporanee sul disco dal plugin newrelic MySQL.https://www.dropbox.com/s/cwo09sy9qxboeds/screenshot%202015-02-17%2019.00.19.png?dl=0

E le migliori query offensive (> 100ms) ordinate per conteggio delle query.

https://www.dropbox.com/s/a1kpmkef4jd8uvt/screenshot%202015-02-17%2018.55.38.png?dl=0

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top