SQL Server視圖的更新排查及清除緩存的操作方法
前言
獲取數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)數(shù)據(jù)少了兩個(gè)字段值,歸根原因是Java中的實(shí)體類少寫了兩個(gè),后續(xù)補(bǔ)充上就好了!
排查方向
在 SQL Server 中,視圖不會(huì)自動(dòng)更新其結(jié)構(gòu)
如果表中添加了新字段,但沒有刷新視圖,查詢視圖時(shí)仍然返回舊結(jié)構(gòu)的數(shù)據(jù)
一共有兩種解決方案:
EXEC sp_refreshview '視圖名字';
截圖如下:
或者重新創(chuàng)建視圖:
DROP VIEW 視圖; CREATE VIEW dbo.vw_SSBoxCheck AS SELECT ...
第二個(gè)排查方向是用戶權(quán)限的問題!
確保用戶可以查詢得到
GRANT SELECT ON 視圖 TO your_user;
第三個(gè)排查方向是視圖的緩存問題:
SQL Server 可能存在緩存問題,導(dǎo)致查詢的仍然是舊視圖結(jié)構(gòu)
DBCC FREEPROCCACHE; DBCC DROPCLEANBUFFERS;
SQL Server 在執(zhí)行查詢時(shí),會(huì)先生成 查詢執(zhí)行計(jì)劃 并緩存起來,以加快后續(xù)相同 SQL 語句的執(zhí)行速度。
DBCC FREEPROCCACHE 命令用于清除 SQL Server 的 執(zhí)行計(jì)劃緩存,讓 SQL Server 重新解析 SQL 語句并生成新的執(zhí)行計(jì)劃SQL Server 數(shù)據(jù)緩存(Buffer Pool) 存儲(chǔ)了最近訪問的數(shù)據(jù)頁,以減少磁盤 I/O 操作,提高查詢速度。
DBCC DROPCLEANBUFFERS 命令用于清空 SQL Server 緩沖池中的 干凈數(shù)據(jù)頁(未修改的頁),讓查詢重新從磁盤讀取數(shù)據(jù)
總的來說
EXEC sp_refreshview
—— 刷新視圖DBCC FREEPROCCACHE
—— 清空執(zhí)行計(jì)劃緩存DBCC DROPCLEANBUFFERS
—— 清空數(shù)據(jù)緩存
命令 | 作用 | 適用場景 | 影響 | 備注 |
---|---|---|---|---|
sp_refreshview | 刷新視圖的元數(shù)據(jù) | 視圖結(jié)構(gòu)變更后查詢異常 | 僅影響視圖 | 只影響視圖定義,不影響數(shù)據(jù)或緩存 |
DBCC FREEPROCCACHE | 清空查詢執(zhí)行計(jì)劃緩存 | 結(jié)構(gòu)變更、索引優(yōu)化、查詢優(yōu)化 | 影響 SQL 解析性能,導(dǎo)致查詢重新編譯 | 僅清除執(zhí)行計(jì)劃,不影響數(shù)據(jù)緩存 |
DBCC DROPCLEANBUFFERS | 清空數(shù)據(jù)緩存 | 進(jìn)行數(shù)據(jù)庫性能測試或數(shù)據(jù)更新異常 | 影響查詢性能,需要重新加載數(shù)據(jù) | 僅清理未修改的緩沖頁,不影響臟頁 |
到此這篇關(guān)于SQL Server視圖的更新排查及清除緩存的操作方法的文章就介紹到這了,更多相關(guān)SQL Server視圖更新排查及清除緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sqlserver游標(biāo)使用步驟示例(創(chuàng)建游標(biāo) 關(guān)閉游標(biāo))
這篇文章主要介紹了sqlserver游標(biāo)使用步驟,包括創(chuàng)建游標(biāo)、關(guān)閉游標(biāo),大家參考使用吧2014-01-01sql server使用臨時(shí)存儲(chǔ)過程實(shí)現(xiàn)使用參數(shù)添加文件組腳本復(fù)用
這篇文章主要介紹了sql server通過臨時(shí)存儲(chǔ)過程實(shí)現(xiàn)使用參數(shù)添加文件組腳本復(fù)用,需要的朋友可以參考下2019-12-12SQLServer行列互轉(zhuǎn)實(shí)現(xiàn)思路(聚合函數(shù))
這篇文章主要為大家詳細(xì)介紹了SQLServer行列互轉(zhuǎn)實(shí)現(xiàn)思路,使用聚合函數(shù)pivot/unpivot實(shí)現(xiàn)行列互轉(zhuǎn),感興趣的小伙伴們可以參考一下2016-03-03CASE表達(dá)式實(shí)現(xiàn)基于條件邏輯來返回一個(gè)值
針對一列,基于條件邏輯來返回一個(gè)值,那么,這時(shí)候就需要使用到CASE表達(dá)式了,下面是具體的應(yīng)用2014-07-07關(guān)于SQL Server中bit類型字段增刪查改的一些事
在 SQL Server中,用來處理判斷flag的字段,使用bit類型,下面這篇文章主要給大家介紹了關(guān)于SQL Server中bit類型字段增刪查改的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09