请教一下缓存的几个问题

中文命名法 2021-04-07 09:42:44
举个例子,表内就只有一个字段。
建立表的时候让表使用A盘的文件组,
然后再创建缓存,指向B盘的文件组。
当日后做 where 字段 = '想找的东西' 类似这样的查询,这时sql是只读B盘?还是既要读B盘又要读A盘?

问这个问题,是因为我想提高查询速度。
工况时这样的,向表内新增的纪录永远不存在更新或者删除的可能。
只用于查找这个表里是不是有这条数据。
所以我在不了解缓存是怎么读写的情况下,想把数据存放在机械硬盘上,把缓存写到固态硬盘。
但又不知道查找时,是只需要读缓存,还是缓存和数据都要读取。

请大神讲解一下,学习。
...全文
340 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yolyry 2021-04-23
  • 打赏
  • 举报
回复
对SQLServer来说,当内存足够大时,在不关停服务的情况下,你用过的语句的执行计划就会一直缓存在内存中,并且它查询的数据表的页内容也会完全缓存在内存中。用的次数越多,它的优先级就会越高,当出现内存压力情况下时,被清掉的机率越小。当内存中确实没有对应数据,并且查询时,SQLServer会产生一个Hard Page Fault,这时才会从硬盘中读取数据,这是可以在性能计数器中监测到的。理论上讲,一个合理的数据库,Hard Page Fault是非常小的,也就是说,你基本不需要担心数据是从硬盘中读取的,除非你的内存设置极不合理~
吉普赛的歌 2021-04-08
  • 打赏
  • 举报
回复
sqlserver的缓存,是在内存中,不是放在磁盘或固定盘。 里面存储的是执行计划和一些热数据。 但无法保证你这这个表的数据一直在里面。 真正要高效,最好还是用 redis , 不要太依赖数据库。 当然, 如果你sqlserver的版本比较高(2014+),也不想用redis,可以使用 内存优化表:https://blog.csdn.net/yenange/article/details/32705347
morliz子轩 2021-04-08
  • 打赏
  • 举报
回复
即席缓存计划(Adhoc)技术 可参考:https://blog.csdn.net/fanzhanfei1990/article/details/84550439

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧