当前位置: 首页 > news >正文

SQL Server 视图的更新排查及清除缓存

目录

  • 前言
  • 排查方向

前言

获取数据的时候,发现数据少了两个字段值,归根原因是Java中的实体类少写了两个,后续补充上就好了!

但也正了解到视图中的刷新原理以及排查机制,如果确认是视图等引起,可结合如下文章学习

原先也写过类似的知识点:

  1. Sql Server缓冲池、连接池等基本知识(附Demo)
  2. SQL Server索引碎片的基本知识(附Demo)

排查方向

在 SQL Server 中,视图不会自动更新其结构

如果表中添加了新字段,但没有刷新视图,查询视图时仍然返回旧结构的数据

一共有两种解决方案:

EXEC sp_refreshview '视图名字';

截图如下:

在这里插入图片描述

或者重新创建视图:

DROP VIEW 视图;
CREATE VIEW dbo.vw_SSBoxCheck AS 
SELECT ...

第二个排查方向是用户权限的问题!
确保用户可以查询得到

GRANT SELECT ON 视图 TO your_user;

第三个排查方向是视图的缓存问题:

SQL Server 可能存在缓存问题,导致查询的仍然是旧视图结构

DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;
  • SQL Server 在执行查询时,会先生成 查询执行计划 并缓存起来,以加快后续相同 SQL 语句的执行速度。
    DBCC FREEPROCCACHE 命令用于清除 SQL Server 的 执行计划缓存,让 SQL Server 重新解析 SQL 语句并生成新的执行计划

  • SQL Server 数据缓存(Buffer Pool) 存储了最近访问的数据页,以减少磁盘 I/O 操作,提高查询速度。
    DBCC DROPCLEANBUFFERS 命令用于清空 SQL Server 缓冲池中的 干净数据页(未修改的页),让查询重新从磁盘读取数据

总的来说

  • EXEC sp_refreshview —— 刷新视图
  • DBCC FREEPROCCACHE —— 清空执行计划缓存
  • DBCC DROPCLEANBUFFERS —— 清空数据缓存
命令作用适用场景影响备注
sp_refreshview刷新视图的元数据视图结构变更后查询异常仅影响视图只影响视图定义,不影响数据或缓存
DBCC FREEPROCCACHE清空查询执行计划缓存结构变更、索引优化、查询优化影响 SQL 解析性能,导致查询重新编译仅清除执行计划,不影响数据缓存
DBCC DROPCLEANBUFFERS清空数据缓存进行数据库性能测试或数据更新异常影响查询性能,需要重新加载数据仅清理未修改的缓冲页,不影响脏页

相关文章:

  • Protobuf原理与序列化
  • 高数1.1 函数
  • 深度学习-11.用于自然语言处理的循环神经网络
  • Spring Boot集成Spring Security之HTTP请求授权
  • C++11智能指针
  • 细说 Java GC 垃圾收集器
  • springBoot统一响应类型3.1版本
  • 高举高打,阶跃星辰冲刺商业化
  • 【JavaSE-1】初识Java
  • 【Godot_4.3】预加载preload失败
  • Windows 11【1001问】删除Win11左下角小组件的6种方法
  • 【Jenkins】个人向-Jenkinsfile如何写
  • Axure PR 9 中继器 03 翻页控制
  • 【Qt QML】布局管理
  • 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(2):功能介绍
  • SQL笔记#SQL高级处理
  • 软件工程复试专业课-测试
  • Eclipse 编译项目指南
  • 基础设施安全(Infrastructure Security)是什么?
  • CMU15445(2024fall) Project #1 - Buffer Pool Manager踩坑大全
  • 中东睿评|特朗普中东三国行:喧嚣的形式与空洞的实质
  • 西北大学副校长成陕西首富?旗下巨子生物去年净利超20亿,到底持股多少
  • 75万买299元路由器后续:重庆市纪委、财政局、教委联合调查
  • 香港暂停进口美国北达科他州一地区禽肉及禽类产品
  • 央行等印发《关于金融支持广州南沙深化面向世界的粤港澳全面合作的意见》
  • 被流量绑架人生,《人生开门红》能戳破网络时代的幻象吗