MySQL的缓存对象有什么?

MySQL的缓存对象有什么?,第1张

1)只缓存SELECT语句。SHOW命令和存储程序不会被缓存。

2)不能缓存预编译语句(prepared statement)和游标。查询缓存中保存的是查询语句和结果集,而预编译语句中存在替代符和额外的参数,游标从块中读取结果,因此上述两种情况不能被缓存。

3)查询语句不能包含动态内容。多次执行某SQL,必须能够返回相同的结果集,因此查询中不能包含像UUID(), RAND(), CONNECTION_ID()这样的函数。

4)SQL中包含定义函数和自定义变量不会被缓存。

Mysql>set @id=1

Mysql>select * from test where id=@id 像这种语句也不会缓存

5)对系统表的查询不会被缓存。

Mysql>select * from mysql.user where user=’root’

6)非自动提交(显示使用BEGIN…END)事务中的SQL不会被缓存。

7)使用TEMPORARY表的SQL不会被缓存。

8)不使用任何表的SQL不会被缓存。

Mysql>select @id

9)在下面的SELECT *** 作也不会被缓存:

SELECT ...IN SHARE MODE

SELECT ...FOR UPDATE

SELECT ...INTO OUTFILE ...

SELECT ...INTO DUMPFILE ...

SELECT * FROM ...WHERE autoincrement_col IS NULL

一、Session缓存(又称作事务缓存):Hibernate内置的,不能卸除。

缓存范围:缓存只能被当前Session对象访问。缓存的生命周期依赖于Session的生命周期,当Session被关闭后,缓存也就结束生命周期。

Hibernate一些与一级缓存相关的 *** 作(时间点):

数据放入缓存:

1. save()。当session对象调用save()方法保存一个对象后,该对象会被放入到session的缓存中。

2. get()和load()。当session对象调用get()或load()方法从数据库取出一个对象后,该对象也会被放入到session的缓存中。

3. 使用HQL和QBC等从数据库中查询数据。

二、SessionFactory缓存(又称作应用缓存):使用第三方插件,可插拔。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8386325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存