最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Sql Server緩沖池、連接池等基本知識詳解

 更新時間:2024年09月04日 10:21:14   作者:碼農(nóng)研究僧  
這篇文章主要介紹了Sql Server緩沖池、連接池等基本知識,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

緩存池

緩存機制是指將經(jīng)常訪問的數(shù)據(jù)或查詢結(jié)果保存在內(nèi)存中,以提高查詢性能和整體系統(tǒng)響應速度

緩沖池 (Buffer Pool):

  • SQL Server 中最大的一塊內(nèi)存區(qū)域,用于存儲從磁盤讀取的頁,以減少對磁盤的直接訪問
  • 緩沖池中的頁包括數(shù)據(jù)頁、索引頁、系統(tǒng)表頁等

計劃緩存 (Plan Cache):

  • 將執(zhí)行過的查詢計劃緩存在計劃緩存中,以便重復使用,減少查詢解析和優(yōu)化的開銷
  • 查詢計劃是查詢優(yōu)化器生成的執(zhí)行查詢的步驟

數(shù)據(jù)緩存 (Data Cache):

  • 數(shù)據(jù)緩存是緩沖池的一部分,專門用于緩存數(shù)據(jù)頁
  • 當查詢訪問表中的數(shù)據(jù)時,SQL Server 會首先檢查數(shù)據(jù)緩存,如果數(shù)據(jù)已經(jīng)在緩存中,則直接返回,否則從磁盤讀取并緩存

一、查看緩存使用情況

-- 查看緩沖池使用情況
DBCC DROPCLEANBUFFERS;  -- 清除緩沖池

SELECT 
    COUNT(*) AS cached_pages_count,
    (COUNT(*) * 8.0) / 1024 AS cached_pages_in_MB
FROM sys.dm_os_buffer_descriptors
WHERE database_id = DB_ID('YourDatabaseName');

-- 查看計劃緩存使用情況
SELECT 
    cp.objtype AS [CacheType],
    OBJECT_NAME(st.objectid, st.dbid) AS [ObjectName],
    cp.usecounts AS [ExecutionCount],
    st.text AS [QueryText],
    cp.size_in_bytes / 1024 AS [SizeInKB]
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st
WHERE cp.cacheobjtype = 'Compiled Plan'
ORDER BY cp.usecounts DESC;

截圖如下:

二、清理緩存

-- 清除緩沖池
DBCC DROPCLEANBUFFERS;

-- 清除計劃緩存
DBCC FREEPROCCACHE;

-- 清除數(shù)據(jù)緩存
CHECKPOINT;
DBCC DROPCLEANBUFFERS;

三、監(jiān)控緩存命中率

-- 緩沖池命中率
SELECT 
    object_name, 
    counter_name, 
    cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Buffer cache hit ratio', 'Buffer cache hit ratio base');

截圖如下:

連接池

一、查看當前活動的連接數(shù)

SELECT 
    DB_NAME(dbid) AS DatabaseName,
    COUNT(dbid) AS NumberOfConnections
FROM sys.sysprocesses
WHERE dbid > 0
GROUP BY dbid;

截圖如下:

二、查看當前連接的具體信息

SELECT 
    spid,
    ecid,
    status,
    loginame,
    hostname,
    db_name(dbid) AS DatabaseName,
    cmd,
    request_id
FROM sys.sysprocesses;

截圖如下:

三、查看連接池信息

SELECT 
    pool_id,
    min_memory_percent,
    max_memory_percent,
    used_memory_kb,
    target_memory_kb,
    max_memory_kb
FROM sys.dm_resource_governor_resource_pools;

截圖如下:

四、查看每個連接的詳細信息

SELECT 
    session_id,
    login_time,
    host_name,
    program_name,
    client_interface_name,
    login_name,
    status,
    cpu_time,
    memory_usage,
    logical_reads,
    writes,
    reads
FROM sys.dm_exec_sessions;

截圖如下:

五、查看用戶連接數(shù)

SELECT login_name,
Count(0) user_count
FROM Sys.dm_exec_requests dr WITH(nolock)
RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock)
ON dr.session_id = ds.session_id
RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock)
ON ds.session_id = dc.session_id
WHERE ds.session_id > 50
GROUP BY login_name
ORDER BY user_count DESC

截圖如下:

彩蛋

重啟Mysql不行,反而重啟服務器才可以,考慮是否應用有死鎖,導致應用在爭奪資源

如果連接池信息滿了,考慮如下方式重置資源池

ALTER RESOURCE POOL pool_name
WITH (
    MIN_MEMORY_PERCENT = 0,
    MAX_MEMORY_PERCENT = 100
);

重置資源配置調(diào)度:

ALTER RESOURCE GOVERNOR RECONFIGURE;

通過KILL的方式來清空連接:

DECLARE @session_id INT;

DECLARE session_cursor CURSOR FOR
SELECT session_id 
FROM sys.dm_exec_sessions
WHERE session_id != @@SPID AND is_user_process = 1;

OPEN session_cursor;

FETCH NEXT FROM session_cursor INTO @session_id;

WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC('KILL ' + @session_id);
    FETCH NEXT FROM session_cursor INTO @session_id;
END

CLOSE session_cursor;
DEALLOCATE session_cursor;

如果當前資源池的內(nèi)存限制太低,可以增加這兩個參數(shù):

ALTER RESOURCE POOL pool_name
WITH (
    MIN_MEMORY_PERCENT = new_min_memory_percent,
    MAX_MEMORY_PERCENT = new_max_memory_percent
);
ALTER RESOURCE GOVERNOR RECONFIGURE;

還可分配更多的資源給高優(yōu)先級的任務:(調(diào)整工作負載組的配置,以確保高優(yōu)先級任務獲得更多資源)

ALTER WORKLOAD GROUP group_name
USING pool_name;
ALTER RESOURCE GOVERNOR RECONFIGURE;

最終還需監(jiān)控和優(yōu)化

  • 監(jiān)控資源使用情況:定期監(jiān)控資源池的資源使用情況,確保配置合理
SELECT 
    pool_id,
    min_memory_percent,
    max_memory_percent,
    used_memory_kb,
    target_memory_kb,
    max_memory_kb
FROM sys.dm_resource_governor_resource_pools;
  • 優(yōu)化查詢和索引:優(yōu)化查詢和索引,減少資源消耗
  • 定期維護和清理:定期維護數(shù)據(jù)庫,清理不必要的數(shù)據(jù)和索引,釋放資源

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

高碑店市| 洪泽县| 太仓市| 淳化县| 武邑县| 中宁县| 安西县| 论坛| 丰台区| 绿春县| 通海县| 远安县| 郧西县| 淮安市| 集贤县| 武安市| 广宗县| 鄂托克前旗| 亳州市| 滨州市| 广宗县| 文山县| 盘山县| 修武县| 石台县| 宁强县| 托克逊县| 寿阳县| 东源县| 德昌县| 泌阳县| 明星| 安义县| 潜山县| 边坝县| 怀远县| 远安县| 余干县| 道真| 平度市| 磐石市|