📄 query_cache.test
字号:
-- source include/have_query_cache.inc## Tests with query cache#set GLOBAL query_cache_size=1355776;# Reset query cache variables.flush query cache; # This crashed in some versionsflush query cache; # This crashed in some versionsreset query cache;flush status;--disable_warningsdrop table if exists t1,t2,t3,t4,t11,t21;drop database if exists mysqltest;--enable_warnings## First simple test#create table t1 (a int not null);insert into t1 values (1),(2),(3);select * from t1;select * from t1;select sql_no_cache * from t1;select length(now()) from t1;# Only check the variables that are independent of the machine and startup# optionsshow status like "Qcache_queries_in_cache";show status like "Qcache_inserts";show status like "Qcache_hits";drop table t1;show status like "Qcache_queries_in_cache";## MERGE TABLES with INSERT/UPDATE and DELETE#create table t1 (a int not null);insert into t1 values (1),(2),(3);create table t2 (a int not null);insert into t2 values (4),(5),(6);create table t3 (a int not null) engine=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;# insertselect * from t3;select * from t3;show status like "Qcache_hits";show status like "Qcache_queries_in_cache";insert into t2 values (7);show status like "Qcache_queries_in_cache";select * from t1;select * from t1;show status like "Qcache_hits";show status like "Qcache_queries_in_cache";insert into t3 values (8);show status like "Qcache_queries_in_cache";# updateselect * from t3;show status like "Qcache_queries_in_cache";update t2 set a=9 where a=7;show status like "Qcache_queries_in_cache";select * from t1;show status like "Qcache_queries_in_cache";update t3 set a=10 where a=1;show status like "Qcache_queries_in_cache";#deleteselect * from t3;show status like "Qcache_queries_in_cache";delete from t2 where a=9;show status like "Qcache_queries_in_cache";select * from t1;show status like "Qcache_queries_in_cache";delete from t3 where a=10;show status like "Qcache_queries_in_cache";drop table t1, t2, t3;## SELECT SQL_CACHE ...#set query_cache_type=demand;create table t1 (a int not null);insert into t1 values (1),(2),(3);select * from t1;show status like "Qcache_queries_in_cache";select sql_cache * from t1 union select * from t1;set query_cache_type=2;select sql_cache * from t1 union select * from t1;select * from t1 union select sql_cache * from t1;show status like "Qcache_hits";show status like "Qcache_queries_in_cache";set query_cache_type=on;## RESET QUERY CACHE#reset query cache;show status like "Qcache_queries_in_cache";## SELECT SQL_NO_CACHE#select sql_no_cache * from t1;show status like "Qcache_queries_in_cache";drop table t1;## Check that queries that uses NOW(), LAST_INSERT_ID()... are not cached.#create table t1 (a text not null);select CONNECTION_ID() from t1;#GET_LOCK#RELEASE_LOCK#LOAD_FILEselect FOUND_ROWS();select NOW() from t1;select CURDATE() from t1;select CURTIME() from t1;select DATABASE() from t1;select ENCRYPT("test") from t1;select LAST_INSERT_ID() from t1;select RAND() from t1;select UNIX_TIMESTAMP() from t1;select USER() from t1;select CURRENT_USER() from t1;select benchmark(1,1) from t1;explain extended select benchmark(1,1) from t1;show status like "Qcache_queries_in_cache";## Tests when the cache is filled#create table t2 (a text not null);insert into t1 values("1111111111111111111111111111111111111111111111111111");insert into t2 select * from t1;insert into t1 select * from t2; # 2insert into t2 select * from t1; # 3insert into t1 select * from t2; # 5insert into t2 select * from t1; # 8insert into t1 select * from t2; # 13insert into t2 select * from t1; # 21insert into t1 select * from t2; # 34insert into t2 select * from t1; # 55insert into t1 select * from t2; # 89insert into t2 select * from t1; # 144insert into t1 select * from t2; # 233insert into t2 select * from t1; # 357insert into t1 select * from t2; # 610insert into t2 select * from t1; # 987insert into t1 select * from t2; # 1597insert into t2 select * from t1; # 2584insert into t1 select * from t2; # 4181show status like "Qcache_hits";show status like "Qcache_lowmem_prunes";disable_result_log;select a as a1, a as a2 from t1;select a as a2, a as a3 from t1;select a as a3, a as a4 from t1;# next query must be out of 1Mb cacheselect a as a1, a as a2 from t1;enable_result_log;show status like "Qcache_hits";show status like "Qcache_queries_in_cache";show status like "Qcache_lowmem_prunes";reset query cache;## Query bigger then query_cache_limit#insert into t2 select * from t1;insert into t1 select * from t2;insert into t2 select * from t1;insert into t1 select * from t2;insert into t2 select * from t1;insert into t1 select * from t2;insert into t2 select * from t1;insert into t1 select * from t2;insert into t2 select * from t1;insert into t1 select * from t2;disable_result_log;select * from t1;enable_result_log;show status like "Qcache_queries_in_cache";drop table t1,t2;## noncachable ODBC work around (and prepare cache for drop database)#create database mysqltest;create table mysqltest.t1 (i int not null auto_increment, a int, primary key (i));insert into mysqltest.t1 (a) values (1);select * from mysqltest.t1 where i is null;## drop db#create table t1(a int);select * from t1;show status like "Qcache_queries_in_cache";select * from mysqltest.t1;show status like "Qcache_queries_in_cache";drop database mysqltest;show status like "Qcache_queries_in_cache";drop table t1;## Charset convertion (cp1251_koi8 always present)#create table t1 (a char(1) not null collate koi8r_general_ci);insert into t1 values(_koi8r"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -