Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql server缓存优化_Sql Server_Caching - Fatal编程技术网

Sql server sql server缓存优化

Sql server sql server缓存优化,sql-server,caching,Sql Server,Caching,我有两个关于sql server缓存的问题,可以帮助我调整性能问题 我在一篇文章中读到,当我查询COUNT()时,表的所有页面都加载到缓存中。这是真的吗??这是否意味着我们使用“select coun()…”和“select*…”加载相同数量的数据 当我在没有order by的情况下查询“select top…”时,查询结果会加载到缓存中,或者所有数据都会加载到缓存中,然后Optimizer会在缓存中执行top操作以选择所需的数据 提前感谢我忍不住想知道为什么您需要知道,您是否有具体的性能问题,

我有两个关于sql server缓存的问题,可以帮助我调整性能问题

我在一篇文章中读到,当我查询COUNT()时,表的所有页面都加载到缓存中。这是真的吗??这是否意味着我们使用“select coun()…”和“select*…”加载相同数量的数据

当我在没有order by的情况下查询“select top…”时,查询结果会加载到缓存中,或者所有数据都会加载到缓存中,然后Optimizer会在缓存中执行top操作以选择所需的数据


提前感谢

我忍不住想知道为什么您需要知道,您是否有具体的性能问题,或者这是理论上的问题?答案通常是“视情况而定”——sql server将根据查询执行各种缓存和优化。还不清楚您指的是内存中的数据缓存还是查询计划缓存,但假设您指的是从磁盘加载到内存中并因此“缓存”的数据量。回答这类问题的最简单方法是在打开某些统计信息的情况下运行查询

SET STATISTICS IO ON
然后运行查询并比较结果。输出将显示“逻辑读取”和“物理读取”。e、 g

每次读取都是加载的一页数据,其中物理是从磁盘读取,逻辑是从内存读取。从磁盘(物理)加载页面后,SQL Server会将其保留在内存中,直到它认为适合将其从缓存中逐出,因此对相同数据的第二次读取将被视为合乎逻辑。使用此功能,您应该能够测量查询,并自行确定哪些查询会向内存缓存中读取更多数据。请注意,如果服务器可以使用索引来回答您的查询,那么它会这样做,这通常意味着读取的数据要少得多


更多信息:

我不确定您要优化什么。但在缓存中加载东西听起来并不正确。特别是因为缓存不是太大,请求之间的内容会发生变化。我的第一个问题是,当我查询select count(*)时,缓存中加载了哪些数据?
Table 'ProductCostHistory'. Scan count 1, logical reads 5, physical 
reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, 
lob read-ahead reads 0.