SinoDB数据库运行分析

 SinoDB数据库运行主要从数据库互斥资源等待、数据库写类型、备份文件有效性、Chunk状态等15个方向进行分析,具体说明如下:

一、数据库互斥资源等待

  • 检查项目
    数据库互斥资源等待

  • 检查命令
    onstat -g con |head -20

  • 说明
    onstat -g con 查看目前数据处于等待条件中的线程信息
    查看这两项资源等待项目,判断数据库是否存在资源配置上的性能瓶颈

二、数据库写类型

  • 检查项目
    数据库写类型

  • 检查命令
    onstat -F |head

  • 说明
    Fg Writes ,LRU Writes,Chunk Writes分别代表了Buffer不足时清仓的数量,检查点来临前由LRU控制的清仓数量以及检查点触发时的清仓数量

三、备份有效性检测

  • 检查项目
    检查备份文件有效性

  • 检查命令
    onstat -g arc

  • 说明
    确认各个DBSPACE包含有效的备份可供恢复使用

四、Chunk状态检查

  • 检查项目
    Chunk状态

  • 检查命令
    onstat -d | grep PD-

  • 说明
    如果chunk块的FLAG标识出现PD-状态,表示该chunk设备已经脱机

五、检查系统关键区信息

  • 检查项目
    检查系统关键区信息

  • 检查命令
    oncheck -cc
    oncheck -cr

  • 说明
    每个数据库包含它本身的系统目录,该目录包含关于数据库表、列、索引、视图、约束、存储过程和特权的信息。保留页是驻留在根数据库空间初始块开始处的页。这些页包含主数据库服务器开销信息。如果该命令检测到错误,请从存储空间备份执行数据恢复。

六、数据库实例概要信息

  • 检查项目
    数据库实例概要信息

  • 检查命令
    onstat -p

  • 说明
    1.%cached 是读取共享内存相对于磁盘读取百分比。OLTP 系统应该在95%以上。它是在系统中缓冲区太少的指标。

  1. seqscans & isamtot - 如果seqscans 和isamtot之间的比例大于1%,我们可以看看是否索引(index)使用少,顺序扫描(seqscans)使用太多。
  2. lokwaits & lockreqs - 是用户线程必须在锁定表发出请求/页/行锁的次数。如果与lokwaits/lockreqs 比率太高,那么应用程序可能单线程(single-threading)。
  3. ovlock 是数据库服务器试图分配锁15次数以上。ovlock 字段表明IDS 在使用了最大数量的锁之后尝试过再使用锁的次数。如果该数字非零,那么您可能需要提高配置文件中LOCKS 参数的值。
  4. ovbuff 字段表明IDS 在使用了最大数量的缓冲区之后尝试过再使用缓冲区的次数。如果该数字很大,比如说超过100000,那么表示我们需要提高BUFFERS 参数,以便用户在需要从磁盘访问数据
    时不必等待缓冲区。这会缩短响应时间,因而可以改善整体性能。我们还需要检查与LRU 有关的参数,将它们的值调整到较低的bufwait。
  5. commit & rollbk
    是回滚(rollback)和提交(commit)两者的比例。如果比例过高1%,那么应用程序可能设计不正确。需要研究为什么有这么多回滚,并采取纠正措施。

七、检查点持续时间

  • 检查项目
    检查点持续时间

  • 检查命令
    tail -100000 onstat -m | grep "Message Log File" | awk -F: '{print $2}' | grep duration | grep -v “0 seconds”

  • 说明
    检查点持续时间反映出了一定的数据库性能,如果出现持续的检查点时间超过20秒则需要引起关注,可通过设置LRU_MIN_DIRTY , LRU_MAX_DIRTY来缓解。

八、非连续物理分布的表

  • 检查项目
    非连续物理分布的表

  • 检查命令
    dbaccess [DBNAME] <<EOF
    select dbinfo(‘DBNAME’) dbname,t.tabname tabname,dbinfo(‘DBSPACE’,t.partnum) dbspace,count() extent_num, max(p.nrows) rows
    from sysmaster:sysptnext e, systables t,sysmaster:sysptnhdr p
    where e.pe_partnum=t.partnum
    and t.partnum=p.partnum
    and t.tabid>99
    and t.tabname not like “sys%”
    and t.tabname not like “tmp%”
    group by 1,2,3
    having count(
    )>100
    order by 4 desc
    EOF

  • 说明
    如果除了大型分段表以外,表的扩展块超过了100个,那么应该考虑重新构建这些表以合并扩展块。通过指定表的extent size 和nextsize调整重建表来减少extent数量。同时我们还需要根据表的记录数
    来判断表的extent设置的问题。

九、全表扫描最多的表

  • 检查项目
    全表扫描最多的表

  • 检查命令
    select p.dbsname, t.tabname,
    sum(p.seqscans) seqscans , max(t.nrows) nrows
    from sysmaster:sysptprof p, systables t
    where p.tabname =t.tabname
    and t.nrows > 10000 and p.seqscans>10
    and p.dbsname not like “sys%” and p.tabname not like “sys%” and p.tabname not like “tmp%”
    group by 1,2
    order by 3 desc;

  • 说明
    对于大表的全表扫描操作会产生极高的开销,通过找出全表扫描最多的大表,并合理的建立相应的索引可以有效的避免额外的开销

十、DUMP目录检查

  • 检查项目
    DUMP目录空间及文件检查

  • 检查命令
    1.df -h $DUMPDIR
    2.ls -lrt $DUMPDIR|egrep ‘.af|.dmp|core’

  • 说明
    定期检查DUMPDIR剩余空间确保其在故障时可以产生完整的AF文件供诊断使用

十一、IO最多的表

  • 检查项目
    各个表上IO情况

  • 检查命令
    select a.dbsname, a.tabname,
    (isreads + pagreads) diskreads,
    (iswrites + pagwrites) diskwrites,
    (isreads + pagreads)+(iswrites + pagwrites) disk_rsws
    from sysptprof a,systabnames b
    where a.partnum=b.partnum
    and a.tabname != ‘TBLSpace’
    and a.tabname not like ’ %’
    and a.tabname not like ‘sys%’
    and a.dbsname not like ‘sys%’
    and isreads + pagreads + iswrites + pagwrites >50000
    order by 5 desc;

  • 说明
    根据表的繁忙程度可以帮我们找出最需要进行关注的表,如果该部分表很大,则需要考虑对其进行分区操作,此外该信息可以帮助我们更为合理的规划磁盘IO

十二、效率低下的索引

  • 检查项目
    索引层超过4层的表

  • 检查命令
    dbaccess [DBNAME] <<EOF
    select t.tabname,i.idxname, i.levels
    from sysindexesi,systables t
    where i.tabid = t.tabid
    and i.levels>=4
    order by 3 desc
    EOF

  • 说明
    层数在3层以上的索引性能将会严重降低,需考虑重建

十三、磁盘排序情况

  • 检查项目
    查看系统磁盘排序情况

  • 检查命令
    dbaccess sysmaster <<EOF
    Select *
    from sysprofile
    where name matches “sort

  • 说明
    磁盘排序在性能上远低于内存排序,当内存排序空间不足时数据库则会使用磁盘进行排序,如果系统存在大量的磁盘排序,则应当考虑是否需要增加临时空间

十四、rootdbs上非系统表

  • 检查项目
    找出Rootdbs上非系统表

  • 检查命令
    dbaccess sysmaster <> $chkFile
    select distinct t.dbsname database,d.name dbspace,t.tabname
    from sysdbstab d,syschunks c,sysextents t
    where t.chunk=c.chknum
    and c.dbsnum=d.dbsnum
    and t.dbsname not like ‘sys%’
    and t.dbsname != ‘onpload’
    and t.tabname not like ‘sys%’
    and d.name = ‘rootdbs’
    EOF

  • 说明
    rootdbs中本身包含所有的系统表,如果附加业务表于其上则会产生IO和空间上的多种争用,如发现Rootdbs中存在业务表,则应考虑将其迁出至相应业务数据DBSPACE上

十五、表空间使用过高的表清单

  • 检查项目
    找出系统内空间使用过高的表

  • 检查命令
    set isolation to dirty read;
    select s.dbsname,s.tabname, p.npused from sysptnhdr p,systabnames s
    where p.partnum = s.partnum
    and p.npused >10000000 ;

  • 说明
    2k page Size数据库内若单一个partition 使用超过16775134 pages ,则该表会导致无法在新增数据的问题。若有该状况建议:
    1、将该表移至大Page Size的表空间
    2、将该表进行表分区或表分片。

更多信息内容请移步星瑞格官方社区,期待大家加入     
Sinoregal Tech ForumAsk questions, share solutions, and get to know the Sinoregal community.icon-default.png?t=N7T8https://forum.sinoregal.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468650.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql的学习笔记

干前端好几年了,只会前端总感觉少了条腿,处处不自在,决定今年学习下后端的东西.以前总想着学node会更快,但是实际工作上却用不上. 出来混,总是要还的,该学的javaWeb这一套体系的东西,总是需要学习的. 那就开始啦. 一,在本地电脑mac上安装mysql 这个参考的这篇文章,照着做一次…

Python:filter过滤器

filter() 是 Python 中的一个内置函数&#xff0c;用于过滤序列&#xff0c;过滤掉不符合条件的元素&#xff0c;返回由符合条件元素组成的新列表。该函数接收两个参数&#xff0c;一个是函数&#xff0c;一个是序列&#xff0c;序列的每个元素作为参数传递给函数进行判定&…

Linux——进程通信(二) 匿名管道的应用:进程池

前言 之前我们学习了进程通过匿名管道进行通信&#xff0c;实现了两个进程的数据传输。 如果我们管理的是很多个进程&#xff0c;通过管道发送指令&#xff0c;因为如果管道中没有数据&#xff0c;读端必须等待&#xff0c;也就是被管理的进程们都在等待我发送的指令&#xf…

某东联盟js逆向

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018…

【Web技术应用基础】HTML(2)——文本练习

题目1&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTML链接</title><meta name"description" content"HTML链接知识讲解"><meta name"keywords" content&qu…

C语言经典算法-6

文章目录 其他经典例题跳转链接31.数字拆解32.得分排行33.选择、插入、气泡排序34.Shell 排序法 - 改良的插入排序35.Shaker 排序法 - 改良的气泡排序 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官&#xff08;一&…

HTML5+CSS3小实例:具有悬停效果的3D闪耀动画

实例:具有悬停效果的3D闪耀动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, init…

Python 第三方库(Tiptop\Rembg)

Tiptop 简介 tiptop:命令行系统监控工具 Tiptop 安装 1、创建虚拟环境photemaker, 并激活photemaker. 2、安装tiptop, 执行如下指令: pip install tiptop 3、执行效果 Tiptop 命令执行遇到的问题 在CMD 控制台执行tiptop 命令&#xff0c;提示如下报错&#xff1a; ──…

【Docker篇】数据卷相关操作

文章目录 &#x1f388;前言&#x1f354;数据卷&#x1f6f8;操作命令⭐创建一个数据卷&#xff0c;并查看数据卷在宿主机的目录位置 &#x1f339;挂载数据卷 &#x1f388;前言 在前面文章的nginx案例中&#xff0c;修改nginx的html页面时&#xff0c;需要进入nginx内部。并…

【sequence进阶 config_db message_2024.03.14】

sequence进阶 sequence的仲裁 多个sequence发送给一个sequencer的情况&#xff0c;使用的两种方式&#xff1a; class virtual_seqence extends uvm_sequence;virtual task body();sub_sequene seq_0;sub_sequene seq_1;//第一种方式p_sequencer.apb_mst_sqr.set_arbitratio…

【机器学习】基于机器学习的分类算法对比实验

摘要 基于机器学习的分类算法对比实验 本论文旨在对常见的分类算法进行综合比较和评估&#xff0c;并探索它们在机器学习分类领域的应用。实验结果显示&#xff0c;随机森林模型在CIFAR-10数据集上的精确度为0.4654&#xff0c;CatBoost模型为0.4916&#xff0c;XGBoost模型为…

Android视角看鸿蒙第六课(module.json5中的各字段含义之pages)designWidth的用法

Android视角看鸿蒙第六课(module.json5中的各字段含义之pages&#xff09; 导读 前面几篇文章&#xff0c;我们陆续分析了entry->src->main下的module.json5中的各个字段的含义及作用。目前剩余pages和abilities两个字段&#xff0c;本篇文章一起来了解pages。 过程有错…

递归算法c++

主页:(*∇&#xff40;*) 咦,又好了~ xiaocr_blog 算法概述&#xff1a;递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。 算法实质&#xff1a;递归算法就是将原问题不断分解为规模缩小的子问题&#xff0c;然后递归调用方法来表示问题的…

[C语言]指针详解一、数组指针、二维数组传参、函数指针

一、数组指针 对一个数组&#xff0c;如果我们想要让一个指针指向这个数组&#xff0c;我们应该如何定义呢?我们知道一个数组定义本来就是一个指针&#xff0c;那为何要多定义一个数组指针呢?我们来看看下面这个代码就理解了 #include <stdio.h> int main() {int arr…

Docker与containerd:容器技术的双璧

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker幻想曲&#xff1a;从零开始&#xff0c;征服容器宇宙》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、Docker和containerd的背景…

SpringBoot如何优雅实现远程调用

微服务之间的通信方式 常见的方式有两种&#xff1a; RPC——代表-dubbo HTTP——代表-SpringCloud 在SpringCloud中&#xff0c;默认是使用http来进行微服务的通信&#xff0c;最常用的实现形式有两种&#xff1a; RestTemplate Feign

深度学习_ResNet_5

ResNet学习目标 什么是ResNet为什么要引入ResNet&#xff1f;ResNet网络结构的特点利用ResNet完成图像分类 什么是ResNet&#xff1f; ResNet&#xff08;Residual Network&#xff09;是一种深度残差网络&#xff0c;由何凯明等人在2015年提出&#xff0c;是深度学习领域中一…

Gartner发布安全运营指南:迈向卓越安全运营的 5 项举措

顶级组织通常会实施一套通用的安全运营活动&#xff0c;以实现成熟&#xff0c;但是&#xff0c;他们在应对快速发展的威胁方面仍然面临挑战。安全和风险管理领导者可以利用这五项举措来加强他们的网络防御工作&#xff0c;同时促进安全投资的更大回报。 主要发现 旨在提升威胁…

【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类

目录 1、JUC&#xff08;java.util.concurrent&#xff09; 1.1、Callable 接口 1.2、ReentrantLock 可重入锁 1.3、Semaphore 信号量 1.4、CountDownLatch 1、JUC&#xff08;java.util.concurrent&#xff09; 这是java中的一个包&#xff0c;存放着多线程编程中常见的…

电机学(笔记一)

磁极对数p&#xff1a; 直流电机的磁极对数是指电机定子的磁极对数&#xff0c;也等于电机电刷的对数。它与电机的转速和扭矩有直接关系。一般来说&#xff0c;极对数越多&#xff0c;电机转速越低&#xff0c;扭矩越大&#xff0c;适用于低速、高扭矩的场合&#xff1b;相反&…