[Maria-discuss] Partitions and query cache
Guys new doubts about partition and query cache drop table t1; reset query cache; CREATE TABLE t1 (c DATETIME) PARTITION BY HASH ( YEAR(c) ) partitions 4; *using myisam engine insert into t1 values ('2014-01-01'),('2013-01-01'),('2012-01-01'),('2011-01-01'),('2010-01-01'); select * from t1; select * from t1 partition (p0); select * from t1 partition (p1); select * from t1 partition (p2); select * from t1 partition (p3); --- this return: || *QUERY_CACHE_ID* || *SCHEMA* || *TABLE* || || 1 || teste || t1 || || 2 || teste || t1 || || 3 || teste || t1 || || 4 || teste || t1 || || 5 || teste || t1 || --- now using innodb: --- alter table t1 engine=innodb; select * from t1; select * from t1 partition (p0); select * from t1 partition (p1); select * from t1 partition (p2); select * from t1 partition (p3); select * from information_schema.QUERY_CACHE_QUERIES_TABLES; --- this return: || *QUERY_CACHE_ID* || *SCHEMA* || *TABLE* || || 1 || teste || t1 || || 1 || teste || t1#P#p0 || || 1 || teste || t1#P#p1 || || 1 || teste || t1#P#p2 || || 1 || teste || t1#P#p3 || || 2 || teste || t1 || || 2 || teste || t1#P#p0 || || 2 || teste || t1#P#p1 || || 2 || teste || t1#P#p2 || || 2 || teste || t1#P#p3 || || 3 || teste || t1 || || 3 || teste || t1#P#p0 || || 3 || teste || t1#P#p1 || || 3 || teste || t1#P#p2 || || 3 || teste || t1#P#p3 || || 4 || teste || t1 || || 4 || teste || t1#P#p0 || || 4 || teste || t1#P#p1 || || 4 || teste || t1#P#p2 || || 4 || teste || t1#P#p3 || || 5 || teste || t1 || || 5 || teste || t1#P#p0 || || 5 || teste || t1#P#p1 || || 5 || teste || t1#P#p2 || || 5 || teste || t1#P#p3 || Now my question... Why ha_partition don't use the right partition at query cache? this give a new problem of query cache partition prune, update t1 set c='2009-01-01' where c='2012-01-01'; after this i have no query at query cache the problem is instead of remove partition #p0 (2012) and #p1 (2009), it removed all partitions from query cache that's the right thing to do? maybe we should check ha_partition and query cache? -- Roberto Spadim
from ha_partition.cc function ha_partition::register_query_cache_dependant_tables if (m_file[0]->table_cache_type() != HA_CACHE_TBL_ASKTRANSACT) DBUG_RETURN(FALSE); // nothing to register there's difference from HA_CACHE_TBL_ASKTRANSACT and others? that query cache should take care?
participants (1)
-
Roberto Spadim