sql配置缓存大小原因

sql配置缓存大小原因,第1张

数据缓存和执行缓存的控制。

SQLServer占用的内存主要由三部分组成:数据缓存(DataBuffer)、执行缓存(ProcedureCache)、以及SQLServer引擎程序。SQLServer引擎程序所占用缓存一般相对变化不大,则我们进行内存调优的主要着眼点在数据缓存和执行缓存的控制上。

SQL语句在执行前首先将被编译并通过查询优化引擎进行优化,从而得到优化后的执行计划,然后按照执行计划被执行。对于整体相似、仅仅是参数不同的SQL语句,SQLServer可以重用执行计划。但对于不同的SQL语句,SQLServer并不能重复使用以前的执行计划,而是需要重新编译出一个新的执行计划。同时,SQLServer在内存足够使用的情况下,此时并不主动清除以前保存的查询计划。这样,不同的SQL语句执行方式,就将会大大影响SQLServer中存储的查询计划数目。如果限定了SQLServer最大可用内存,则过多无用的执行计划占用,将导致SQLServer可用内存减少,从而在执行查询时尤其是大的查询时与磁盘发生更多的内存页交换。如果没有限定最大可用内存,则SQLServer由于可用内存减少,从而会占用更多内存。

内存数据库有现成的redis,高效存取键值对,键设为你的查询条件,值设为你的查询结果转为字符串

查询时先从redis取,没有再查数据库,并且设置redis的过期时间,这种方式需要项目对实时性要求不高,这样你才能用缓存,而且如果你的项目没有明显的热点,即没有某些内容确定会多次被查到,那你缓存就不会命中,添加缓存反而影响你得速度

redis是一种nosql的内存数据库,感兴趣你可以了解一下,优点就是性能强劲

数据查询请求多就把结果缓存下来,你查数据库再快也没有直接把结果从内存读出来快

同样的sql请求只有第一次查数据库,之后通通读内存

或者你干脆借助这种思想,创建一个全局的map对象,然后查询条件作key

,结果作value,就省去了了解redis的过程,把整个数据库装内存不太科学,你有多少条数据啊


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

原文地址:https://54852.com/sjk/10032451.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存