KingbaseES 逻辑读与物理读
oracle数据库中逻辑读,物理读

数据访问方式:数据库少不了和操作系统进行数据交互,表数据最好的方式是从数据库共享池中访问到,避免发生磁盘IO,当然如果共享池中没有访问到数据就难免发生磁盘IO。
物理读:从磁盘读取数据到buffer cache,消耗磁盘io,一般是全表扫描导致,这种情况就尽量用到索引减少数据访问以降低io。
逻辑读:通过从数据库buffer cache中获取数据(包含物理读),分为当前读和一致性读,当前读获取数据块的最新版本,进程会给读取的块加锁,一致性读读取是块的最新版本或者回滚段中的历史版本,不需要加锁。逻辑读消耗cpu。
直接路径读:从磁盘读取数据绕过buffer cache,直接读取到pga,通常是由于大表全表扫描或使用并行导致,oracle 11g 新特性,好处是能降低buffer cache争用,坏处是大量io消耗,
说明:KES数据库中不存在直接路径读的概念,那么针对物理读,和逻辑读和oracle中的定义也略有区别,下面看一下KES中逻辑读,物理读是如何定义的。
KInbgaseESV8R6中逻辑读,物理读
sys_stat_statements视图可以查看数据库性能的关键指标,以下是有关计算物理读,逻辑读的关键字段及其含义。
shared_blks_hit shared_buffer中的命中块数
shared_blks_read shared_buffer中未命中,从操作系统缓冲读进shared_buffer的块数,如果操作系统缓存中没有有关记录,则需要读取数据文件而发生物理磁盘IO,此过程理解为发生物理读。
shared_blks_dirtied shared_buffer中弄脏的总块数
shared_blks_written 从shared_buffer中写入的总块数,这里指从shared_buffer写入了操作系统缓存或写入数据文件而发生物理磁盘IO,此过程理解为发生物理写。
local_blks_hit 本地块缓冲命中总数,指temp_buffers中命中块数
local_blks_read 本地块缓冲未命中,从操作系统缓冲读进temp_buffer的块数,如果操作系统缓冲区没有找到,有可能发生物理IO,此过程理解为发生物理读
local_blks_dirtied temp_buffers中产生的脏块数
local_blks_written 从temp_buffers写入临时表,同理,此过程理解为发生物理写。
temp_blks_read 从临时文件temp_file读取到work_mem的块数,此过程理解为发生物理读。
temp_blks_written 从work_mem写入 temp_file总块数,发生物理io,此过程理解为发生物理写。
blocks 都是物理磁盘块在内存里的映射
shared blocks:共享数据库块,shared_buffers 上分配的数据块,各关系表都是从磁盘文件加载到shared-buffer后才能读写。
local blocks:临时表等只有本会话可以使用的数据块,别的会话看不到。
temp blocks: SQL 语句执行过程中,排序、Hash等操作需要的work_mem,maintance_work_mem 不够,使用磁盘文件排序、Hash等,这些临时文件对应的就是临时块,本会话可见。
4 种数据访问方式:
Hit:读数据页的时候,直接在 shared/local blocks 命中,没有发生磁盘 IO
dirty:写数据的时候,写入了 shared/local 数据库块,还没有发生磁盘 IO
read:物理读
written:物理写
注意区别于oracle的物理读,物理写,KES数据库包括了操作系统缓存信息,而尽管read,written这时候不一定会发生物理磁盘IO。所以与oracle中的物理读略有区别,oracle数据库中不考虑操作系统缓存。
temp blocks 只有 read/written 操作。没有数据库实例内的缓存。
对于逻辑读,物理读,kwr中的体现如图:

物理写:writte
逻辑读:hit
物理读:read

此部分展示了几个内存区域发生了物理IO,也就是sql没有在数据库内存区域找到对应数据,需要和操作系统进行交互。

也可以从设备上看到主机IO每秒写入/读取大小等指标判断物理读写对于磁盘的消耗。
KWR报告中的TOP SQL内容还展示了,可以据此查到消耗IO性能的sql,具体内容略过不展示。
按 I/O 时间排序的 SQL 语句
按逻辑读块数排序的 SQL 语句
按物理读块数排序的 SQL 语句
按物理写块数排序的 SQL 语句
KingbaseES 逻辑读与物理读的更多相关文章
- 初谈SQL Server逻辑读、物理读、预读
前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...
- SQL Server逻辑读、预读和物理读
SQL Server数据存储的形式 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存 ...
- SQL Server 中的逻辑读与物理读
首先要理解逻辑读和物理读: 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存再次去读 ...
- SQL SERVER中的逻辑读,预读和物理读
sqlserver:数据存储方式:最小单位是页,每一页8k,sqlserver 对页的读取是具有原子性,也就是说,要么读取完整一页,要么完全不读取,不会有中间状态,而页之间的数据组织结构是B树 但是每 ...
- 初谈SQL Server逻辑读、物理读、预读【转】
前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...
- 理解SQL SERVER中的逻辑读,预读和物理读
转自:https://www.cnblogs.com/CareySon/archive/2011/12/23/2299127.html 在我的上一篇关于SQL SERVER索引的博文,有圆友问道关于逻 ...
- sqlserver性能调优中的逻辑读,物理读,预读是什么意思
表 'T_EPZ_INOUT_ENTRY_DETAIL'.扫描计数 1,逻辑读 4825 次,物理读 6 次,预读 19672 次.SQL SERVER 数据库引擎当遇到一个查询语句时,SQL SER ...
- [SQL] 理解SQL SERVER中的逻辑读,预读和物理读
SQL SERVER数据存储的形式 在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小单位为页(Page).每一页大小为8k,SQL SERVE ...
- SQL SERVER中的逻辑读取,物理读取,以及预读的理解
在SQLSERVER查询分析器中,当我们用Set Statistics on 语句来统计SQL语句或者存储过程I/O的时候, SQLSERVER会显示几个概念去词语:逻辑读取,物理读取,预读. 如下: ...
- SQLSERVER预读逻辑读物理读
预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存再次去读硬盘.物理读10页,从硬盘中 ...
随机推荐
- 【framework】WindowContainer简介
1 前言 WindowContainer 继承自 ConfigurationContainer,是 WMS 家族的重要基类.ConfigurationContainer简介 中,已介绍 Confi ...
- 如何查看当前Ubuntu系统的版本-【转 https://www.cnblogs.com/chenxiaomeng/p/10038492.html】
如何查看当前Ubuntu系统的版本 一.系统位数 在控制台输入:sudo uname --m 如果显示i686,则表示安装了32位操作系统 如果显示 x86_64,则表示安装了64位操作系统 sudo ...
- SpringCloud Bus动态刷新中心化配置
说明 上一篇我们介绍了配置中心实战,并留下了一个配置修改后如何实现自动刷新的问题,下面就实际操作一下,首先是手动刷新单个微服务,其次是利用消息总线实现全部刷新. 手动动态刷新 动态刷新是当远程配置文件 ...
- Direct2D CreateHwndRenderTarget 和 CreateDCRenderTarget
前段时间稍微看了点Direct3D, 觉得挺有意思的,但是想着要有3D得先从2D开始.故开始了D2D旅行. 如标题所示,CreateHwndRenderTarget 是在用来创建一个渲染到窗口的渲染目 ...
- 用Taro写一个微信小程序——Taro3路由传参
参考https://docs.taro.zone/docs/router 1.传入参数 Taro.navigateTo({ url: '/pages/page/path/name?id=2&t ...
- 08-Redis系列之-Redis布隆过滤器,MySQL主从,Django读写分离
Redis实现布隆过滤器 前言 布隆过滤器使用场景 比如有如下几个需求: 原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中? 解决办法一:将10亿个号码存 ...
- celery正常启动后能接收任务但不执行(已解决)
错误截图:celery接收到任务却不执行(多出在windows系统中) 解决方法1 添加–pool=solo参数 celery -A celery_tasks.main worker --pool=s ...
- 【LeetCode贪心#03】最大子序和
最大子序和 力扣题目链接 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 子数组 是数组中的一个连续部分. 示例 1: 输入:nums = ...
- 《HelloGitHub》第 95 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- 【Azure 应用服务】在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exist异常
问题描述 在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exis ...