Buffer Pool--内存总结2
按內存劃分:
1.DATABASE CACHE
? ? 用于存放數據頁面的緩沖區,8KB每頁
2.各項組件
? ? A)數據庫連接(CONNECTION)
? ? B)通用數據,如果事務上下文,表和索引的元數據
? ? C)執行計劃(QUERY PLAN),語句和存儲過程的執行計劃
? ? D)查詢優化器(Optimizer)
? ? E)Utilities,如BCP,Log Manager,Backup tools,parallel queries and so on
3.線程內存
? ? Each thread use 0.5MB memory to store data structure and relative infomation
4.The third application apply memeory
? ? like link server, sql mail, user defined CLR,Extended stored procedure,dirver ect
?
Divided by Apply method:
1.Reserved and committed memory, reserved first and then committed.
2.Stolen memory,commited without reserving memory.
?
SQL SERVER never use AWE for stolen memery
?
?
Divided by Page size:
1.Single page memory,the applied memory is equal or less then 8KB
2.Multiple page memory(MemToLeave), the applied?memery is bigger than 8KB
?
the most part of memery in MemToLeave is not charged by SQL SERVER
?
SQL SERVER使用Memory Clerk來管理SQL SERVER內存的分配和回收,因此可以使用sys.dm_os_memory_clerks 來查看內存使用情況,注意sys.dm_os_memory_clerks反應的內存不包括第三方代碼使用的內存。
?
SELECT M.type,
sum(M.virtual_memory_reserved_kb) AS VirtualMemoryReservedKB,
SUM(M.virtual_memory_committed_kb) AS VirtualMemortCommitedKB,
SUM(M.shared_memory_committed_kb) AS SharedMemroyCommittedKB,
SUM(M.shared_memory_reserved_kb) AS SharedMemroyReservedKB,
SUM(M.multi_pages_kb) AS MultiPagesKB,
SUM(M.single_pages_kb) AS SinglePagesKB,
SUM(M.multi_pages_kb)+SUM(M.single_pages_kb) AS TotalPagesKB
FROM sys.dm_os_memory_clerks M
GROUP BY M.type
ORDER BY TotalPagesKB DESC
?
?
?
查看表中數據在緩沖池中的信息
SELECT name AS TabelName,
index_id AS IndexId,
COUNT(*)AS CachedPageCount,
CAST(COUNT(*)*8.0/1024 AS INT) AS CachedMemoryMB?
FROM sys.dm_os_buffer_descriptors AS bd?
? ? INNER JOIN?
? ? (
? ? ? ? SELECT OBJECT_NAME(OBJECT_ID) AS name?
? ? ? ? ? ? ,index_id ,allocation_unit_id
? ? ? ? FROM sys.allocation_units AS au
? ? ? ? ? ? INNER JOIN sys.partitions AS p?
? ? ? ? ? ? ? ? ON au.container_id = p.hobt_id?
? ? ? ? ? ? ? ? ? ? AND (au.type = 1 OR au.type = 3)
? ? ? ? UNION ALL
? ? ? ? SELECT OBJECT_NAME(OBJECT_ID) AS name ??
? ? ? ? ? ? ,index_id, allocation_unit_id
? ? ? ? FROM sys.allocation_units AS au
? ? ? ? ? ? INNER JOIN sys.partitions AS p?
? ? ? ? ? ? ? ? ON au.container_id = p.partition_id?
? ? ? ? ? ? ? ? ? ? AND au.type = 2
? ? ) AS obj?
? ? ? ? ON bd.allocation_unit_id = obj.allocation_unit_id
WHERE database_id = DB_ID()
GROUP BY name, index_id?
ORDER BY CachedMemoryMB DESC;
轉載于:https://www.cnblogs.com/TeyGao/p/3519001.html
總結
以上是生活随笔為你收集整理的Buffer Pool--内存总结2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL——将表中的最大ID+1插入新的I
- 下一篇: poj1961Period(next数组