linux系统是CentOS-5.6,mysql的my.cnf配置文件如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
lower_case_table_names=1
query_cache_size=32M
#Query cache type to use.
query_cache_type=2
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 2
max_connections = 100
lower_case_table_names=1
#skip-networking
innodb_log_buffer_size=3M
innodb_buffer_pool_size=64M
innodb_log_file_size=16M
innodb_flush_log_at_trx_commit=1
innodb_additional_mem_pool_size=2M
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
#Set the default character set.
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
测试的sql语句:
select sql_cache id,name,type from yl_npc;
测试的java程序代码片段:
/**
* 查询缓存测试
*/
public void queryCacheTest() {
Connection conn = null;
PreparedStatement prepar = null;
ResultSet result = null;
String sql = "select sql_cache id,name,type from yl_npc";
try {
conn = openConnect();
prepar = conn.prepareStatement(sql);
result = prepar.executeQuery();
while (result.next()) {
System.out.println("id:"+result.getInt("id")+",name:"+result.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
log.error("",e);
} finally {
closeConnect(result, null, prepar, conn);
}
}
问题是:
在终端里多次执行上面的sql语句,查询是Qcache_hits 是可以命中的,同样的sql语句,但不知道为什么在应用程序里就命中不了。而且在window系统下就不会有这问题,只有在linux下才命中不了,很困惑。。。
淡痛啊,百思不解,请教各位大牛帮忙,小弟谢谢了。