欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

緩存池

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

緩沖池 (Buffer Pool):

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

計劃緩存 (Plan Cache):

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

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

  • 數(shù)據(jù)緩存是緩沖池的一部分,專門用于緩存數(shù)據(jù)頁
  • 當(dāng)查詢訪問表中的數(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');

截圖如下:

連接池

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

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

截圖如下:

二、查看當(dāng)前連接的具體信息

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不行,反而重啟服務(wù)器才可以,考慮是否應(yīng)用有死鎖,導(dǎo)致應(yīng)用在爭奪資源

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

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;

如果當(dāng)前資源池的內(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)先級的任務(wù):(調(diào)整工作負載組的配置,以確保高優(yōu)先級任務(wù)獲得更多資源)

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)文章

  • SQLServer中匯總功能的使用GROUPING,ROLLUP和CUBE

    SQLServer中匯總功能的使用GROUPING,ROLLUP和CUBE

    查看SQL Server的幫助才發(fā)現(xiàn),厲害啊,原來還有這么厲害的東西,不由的想起以前做水晶報表的時候,原來在SQL Server中就可以實現(xiàn)這樣的功能.
    2010-07-07
  • 合并SQL腳本文件的方法分享

    合并SQL腳本文件的方法分享

    在平時的工作中,我會經(jīng)常的碰到這樣需要合并SQL腳本的問題。如,有很多的SQL腳本文件,需要按照一定的先后順序,再生成一個合并SQL腳本文件,然后再發(fā)布到用戶SQL Server服務(wù)器上。
    2011-09-09
  • jdbc使用PreparedStatement批量插入數(shù)據(jù)的方法

    jdbc使用PreparedStatement批量插入數(shù)據(jù)的方法

    這篇文章主要介紹了jdbc使用PreparedStatement批量插入數(shù)據(jù)的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • CREATE FUNCTION sqlserver用戶定義函數(shù)

    CREATE FUNCTION sqlserver用戶定義函數(shù)

    創(chuàng)建用戶定義函數(shù),它是返回值的已保存的 Transact-SQL 例程。用戶定義函數(shù)不能用于執(zhí)行一組修改全局數(shù)據(jù)庫狀態(tài)的操作。與系統(tǒng)函數(shù)一樣,用戶定義函數(shù)可以從查詢中喚醒調(diào)用。也可以像存儲過程一樣,通過 EXECUTE 語句執(zhí)行
    2012-07-07
  • sql server定時作業(yè)調(diào)用Kettle job出錯的快速解決方法

    sql server定時作業(yè)調(diào)用Kettle job出錯的快速解決方法

    這篇文章主要介紹了sql server定時作業(yè)調(diào)用Kettle job出錯的快速解決方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • SQL SERVER數(shù)據(jù)庫收縮日志的實現(xiàn)步驟

    SQL SERVER數(shù)據(jù)庫收縮日志的實現(xiàn)步驟

    這篇文章主要介紹了SQL SERVER數(shù)據(jù)庫收縮日志的實現(xiàn)步驟,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2024-04-04
  • sqlserver中獲取月份的天數(shù)的方法分享

    sqlserver中獲取月份的天數(shù)的方法分享

    今天查看以前專案的數(shù)據(jù)庫自定義函數(shù),溫習(xí)溫習(xí)。發(fā)現(xiàn)其中有一個函數(shù),是獲取月份的天數(shù)的自定義函數(shù)。
    2011-09-09
  • SQL Server里書簽查找的性能傷害

    SQL Server里書簽查找的性能傷害

    本文主要介紹了SQL Server里書簽查找的性能傷害,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 文本、Excel、Access數(shù)據(jù)導(dǎo)入SQL Server2000的方法

    文本、Excel、Access數(shù)據(jù)導(dǎo)入SQL Server2000的方法

    昨天參加一個項目的維護,因為各種原因,數(shù)據(jù)在不同服務(wù)器上不一致,所以需要重新將數(shù)據(jù)庫清空一次,并將整理后的數(shù)據(jù)重新導(dǎo)入。需導(dǎo)入的數(shù)據(jù)源為文本文件,記錄以行存儲,“,”逗號分割各字段,每個字段值用“”雙引號封閉。
    2008-10-10
  • sql調(diào)優(yōu)的幾種方式小結(jié)

    sql調(diào)優(yōu)的幾種方式小結(jié)

    本文主要介紹了sql調(diào)優(yōu)的幾種方式小結(jié),包含了15種調(diào)優(yōu)方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06

最新評論