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 逻辑读与物理读的更多相关文章

  1. 初谈SQL Server逻辑读、物理读、预读

    前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...

  2. SQL Server逻辑读、预读和物理读

    SQL Server数据存储的形式 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存 ...

  3. SQL Server 中的逻辑读与物理读

    首先要理解逻辑读和物理读: 预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存再次去读 ...

  4. SQL SERVER中的逻辑读,预读和物理读

    sqlserver:数据存储方式:最小单位是页,每一页8k,sqlserver 对页的读取是具有原子性,也就是说,要么读取完整一页,要么完全不读取,不会有中间状态,而页之间的数据组织结构是B树 但是每 ...

  5. 初谈SQL Server逻辑读、物理读、预读【转】

    前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...

  6. 理解SQL SERVER中的逻辑读,预读和物理读

    转自:https://www.cnblogs.com/CareySon/archive/2011/12/23/2299127.html 在我的上一篇关于SQL SERVER索引的博文,有圆友问道关于逻 ...

  7. sqlserver性能调优中的逻辑读,物理读,预读是什么意思

    表 'T_EPZ_INOUT_ENTRY_DETAIL'.扫描计数 1,逻辑读 4825 次,物理读 6 次,预读 19672 次.SQL SERVER 数据库引擎当遇到一个查询语句时,SQL SER ...

  8. [SQL] 理解SQL SERVER中的逻辑读,预读和物理读

    SQL SERVER数据存储的形式 在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小单位为页(Page).每一页大小为8k,SQL SERVE ...

  9. SQL SERVER中的逻辑读取,物理读取,以及预读的理解

    在SQLSERVER查询分析器中,当我们用Set Statistics on 语句来统计SQL语句或者存储过程I/O的时候, SQLSERVER会显示几个概念去词语:逻辑读取,物理读取,预读. 如下: ...

  10. SQLSERVER预读逻辑读物理读

    预读:用估计信息,去硬盘读取数据到缓存.预读100次,也就是估计将要从硬盘中读取了100页数据到缓存. 物理读:查询计划生成好以后,如果缓存缺少所需要的数据,让缓存再次去读硬盘.物理读10页,从硬盘中 ...

随机推荐

  1. spring boot 2.0集成并使用redis

    项目地址:https://gitee.com/indexman/spring_boot_in_action 前面一章介绍了spring boot自带的缓存,下面讲一下如何在2.0版本中集成并使用red ...

  2. python调用namp.py进行扫描,调用go编译的so文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- import json import os import platform from ctypes impo ...

  3. ubantu18.04使用APT安装go环境指令报错解决方案

    在ubantu下使用sudo apt install golang-go指令安装go环境,安装过程没有报错,在使用时无法识别指令,报错如下: root@sh001:~# go env -w GOPRO ...

  4. CXP2.0的相机是否可以使用CXP1.1的Grabber

    可以 答案是肯定的. 目前CXP共有2个发布版本: 2011年发布CXP1.1 2021年发布CXP2.1,向后兼容,新标准增加了同步功能.数据率放大了一倍. 只要是符合CXP标准.接插件匹配,那么C ...

  5. 【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?

    问题一:App Service 的默认启动路径为wwwroot,如何修改到到PHP代码运行目录呢? 如Laravel的启动目录为public/?那如何修改呢? App Service 的默认 PHP ...

  6. Java 常用类 JDK 8 之前日期和时间的API测试

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 import java.util.Date; 6 7 8 /** ...

  7. Java 常用类 于 StringBuffer 和 StringBuilder的使用 + String三者的异同

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 /** 6 * 关于 StringBuffer 和 StringB ...

  8. Java 属性赋值的先后顺序

    1 package com.bytezero.circle; 2 /** 3 * 4 * @Description 5 * @author Bytezero·zhenglei! Email:42049 ...

  9. Java 交换两个变量的值

    1 //交换两个变量的值 2 // 1 3 int nu1 = 10; 4 int nu2 = 20; 5 6 System.out.println("nu1 = "+nu1+&q ...

  10. 获取一段时间内,以月/季度为单位,第N天在各个月/季度是几几年几月几号

    /** * 获取一段时间内(可跨年),以季度为单位,第N天在各个季度是几月几号 * @param $sTime 时间戳 * @param $eTime 时间戳 * @param $number 第N天 ...