GBase8s数据库SQL语句性能缓慢从哪个方面入手分析

GBase8s数据库SQL语句性能缓慢从哪个方面入手分析,第1张

在实际的生产运行环境中,很多客户现场都看到开发人员和系统管理人员遇到很多有关于GBase 8s 数据库引起的性能问题,进而被多次问起如何进行GBase 8s 数据库性能调优,

性能优化原则

包括:

性能规划:深入了解应用与数据库的交互特征,确立良好的设计、开发、测试迭代过程,上线前消除模型上的性能瓶颈。

实例调优:建立性能基准,对比调节数据库、 *** 作系统、存储、网络等的配置,主动监控、消除瓶颈。

SQL 调优:书写高效 SQL,优化相关数据库对象,充分借助优化器,确定最佳执行计划。

性能优化流程

首先执行下面的初始检查:

– 获取直接用户的使用反馈,确定性能目标和范围。

– 获取性能表现好与坏时的 *** 作系统、数据库、应用统计信息。

– 对数据库做一次全面健康检查。

根据收集的信息,以及对应用特性的了解,构建性能概念模型,明确性能瓶颈所在,以及导致性能的根本原因。

– 首先应该排除 *** 作系统、硬件资源造成的瓶颈。

– 然后针对数据库系统性能进行分析

– 必要时,还需要检查应用日志,因为系统性能问题也可能由于应用非 SQL 部分造成瓶颈。

提出一系列针对的优化措施,并根据它们对性能改善的重要程度排序,然后逐一加以实施。不要一次执行所有的优化措施,必须逐条尝试,逐步对比。

通过获取直接用户的反馈验证调节是否已经产生预期的效果,否则,需要重新提炼性能概念模型,直到对应用特性了解进一步准确。

重复上述,直到性能达到目标或由于客观约束无法进一步优化。

常见调优技巧

找到 CPU 占用最高的 SQL

在 sysmaster 库中执行

select sqx_estcost, sqx_sqlstatement

from syssqexplain

order by sqx_estcost desc

1

2

3

注意:此时看到的仅仅是当前正在执行的 SQL

需要多看几次

onstat 命令

onstat -g act 得到当前正在执行的 SQL

根据 rstcb 列

onstat -u | grep 57c68220

1

从第三列 sessid 得到 SESSION

onstat -g ses SESSION 即可得到当时正在执行的 SQL

一般多找几个 threads 后,就基本可以确定问题 SQL

得到 SQL 后,利用 set explain on 分析其查询路径,看是否未利用索引,在对大表进行全表扫描,根据需要创建相应索引。

找到全表扫描较多的表及其 SQL

得到全表扫描较多的表

-- 系统顺序扫描较多时,被多次顺序扫描的大表,如果有,应该考虑增加索引

select first 5

substr(ttabname,0,20) tabname,

substr(dbsname,0,10) dbname,

nrowsrowsizepseqscans costs,

substr(pseqscans,0,8) seqscans,

substr(nrows,0,8) nrows

from sysmaster:sysptprof p , systables t,sysmaster:sysprofile s

where ptabname = ttabname

and pseqscans > svalue/50

and sname = 'seqscans'

--and svalue > 2000000 and nrows > 2000

order by 3 desc

1

2

3

4

5

6

7

8

9

10

11

12

13

利用 onstat –g ses 0 –r 5/ onstat –g stm 的输出信息,根据表名,找到可能的 SQL 语句。由于以上获取 SQL 的办法是有局限的,如果无法获取,建议通过查看应用日志或联系开发人员查看源代码的方式来找到。

利用 set explain on 分析其查询路径,确认是在对表进行全表扫描,根据需要创建相应索引。

long_query_time 参数的查看

默认是10秒,10秒以上的sql会记录。可进行值的修改,

long_query_time 默认不开启 ,如果不是需要进行开始调优,一般不建议开启此参数。

永久开启:

在mycnf中的

1查看慢查询的时长

看此图默认10秒,是大于10秒,不等于10秒。

2修改此时长

临时修改,重启mysql后失效,修改后需要新开连接才能查询到

永久在配制文件中修改

查看慢sql个数

将所有没有使用带索引的查询语句全部写到慢查询日志中

设置没带索引的慢sql进行记录

最后汇总mycnf配制

1、要熟练使用符合ANSI标准的SQL语言,这样就可以访问大多数数据库

2、了解最基础的数据库体系结构和管理手段

管理实例和数据库、视图、管理日志文件、管理表空间和数据文件、管理表和索引、密码安全和资源限定、管理用户和权限

3、了解数据库日常维护服务的概念,制定配置策略

一定的硬件了解(磁盘阵列、磁带机、供电、降温系统等等)、要有一定的 *** 作系统和网络管理基础、数据库客户机和服务器端配置、数据库备份与恢复、导入/导出工具

4、数据库性能调优

要做数据库开发除了以上的,先要掌握一到两种开发语言如JAVA,C#等,还要更深入的了解数据库功能如ORACLE\SQL SERVER等。我个人认为其实开发软件最重要的是需求分析、流程分析和数据库规划这些前期工作。只要规划好了,功能的代码实现都不困难。归根结底是对要开发软件相对应的行业了解要深入、透彻。其它的在就是经验的累积了。从小到大做几个软件就明白了。当然看别人的软件代码也是积累经验的好办法。

我们发现,有时一个简单合理的优化配置就可以极大地减少数据库的响应时间,提高数据库的吞吐量。另外,我们还需要关注系统的状态(比如CPU、内存、磁盘的利用率)、 *** 作系统是否存在问题、Oracle Server性能问题的成因以及应用程序的SQL质量是否合理等等。但是这些问题的合理解决需要对数据库底层原理有深入的理解、经验和判断力。课程目标掌握数据库调优的思路和技巧掌握多种优化工具的使用和优化方法能够进行性能故障分析掌握各种优化算法的优劣,根据应用需求选择合适的算法等等课程大纲时间上午下午第一天Oracle体系结构组件q理解Oracle的物理结构q理解Oracle的内存结构q理解Oracle的进程结构q理解Oracle的逻辑结构qSql语句的处理过程qOracle 数据库,服务器,例程的定义管理Oracle例程q创建管理和使用参数文件q实例启动的过程和阶段q实例关闭的过程和阶段q监控警告和跟踪文件Oracle性能调优概述q调优的问题和目标q调优的步骤q度量调优目标的例子q常见的性能问题q常见的性能问题的结果q开发过程中前摄性的调优考虑q性能与安全的平衡诊断和调优的工具q维护警报日志文件q使用警报日志文件调优q后台进程跟踪文件q使用跟踪文件q动态排错和性能视图q收集系统范围的统计信息q收集会话相关的统计信息qSTATSPACK和UTLBSTATqV$EVENT_NAME、V$EVENT_EVENT和V$EVENT_WAIT视图q性能管理器q第二天调整共享池的大小q系统全局区(SGA)q共享池q类库缓存I调优类库缓存的诊断工具II类库缓存的重新加载III调整类库缓存的大小q缓存执行计划q查看支持的执行计划q全局空间分配q大内存需求q调优共享池保留空间q维护大对象q其它影响类库缓存的参数q数据字典缓存、术语和调优q测量字典缓存统计qUGA和Oracle共享服务器qUGA的大小控制调整缓冲缓存的大小qOracle 9i中的缓冲缓存的大小参数q动态SGA特征q动态SGA的分配单位q粒度的考虑q多缓冲池q计算多池的点击率q缓冲池的字典视图q缓存数据表q自动的空间管理调整其它SGA结构qRedo日志缓存大小控制和效率诊断q使用动态视图分析Redo日志缓存的效率qRedo日志缓存调优准则q监控Java池内存q控制针对Java的SGA大小q多DBWR进程q调优DBWn I/O第三天数据库配置和I/O问题qOracle进程和文件q跨设备的分布式文件q表空间的用法qI/O统计和诊断q完整数据表扫描 *** 作的性能调优q检查点的性能调优q定义和监控FASTSTART检查点q在线Redo日志文件配置q归档日志文件配置q自动的空间管理优化排序 *** 作q排序过程q排序区域和参数q新的排序区域参数q排序调优q排序过程和临时空间q临时空间片段q *** 作必须的排序q需要避免的排序q监控临时表空间q临时表空间配置调优回滚段q回滚段的用法q回滚段的增长q对手动管理的回滚段调优q控制事务回滚的数据的大小q自动撤销的管理q改变、删除和切换撤销的表空间q自动撤销管理的参数q监控自动撤销管理监控和检测锁q锁的机制和类型qDML锁q表锁模式qDDL锁q监控锁活动的诊断工具和应用实例调试Oracle共享服务器qOracle共享服务器特征q监控共享服务器和进程用法q共享服务器和内存使用q错误处理第四天应用程序调优q数据库管理员角色q数据存储结构q选择物理结构q数据访问方法q簇类型及应用分析q索引调优q索引组织表q使用和维护映射表q创建和使用物化视图q物化视图和查询重写示例q启用、控制和禁用查询重写qOLTP系统、需求和应用问题q决策支持系统和商业智能q数据仓库要求和应用问题有效地使用Oracle块q数据库存储的阶层结构qExtent的分配及注意事项q本地管理Extentq表统计qDBMS_SPACE包q迁移和链接q索引重组q监控索引空间q重建索引还是融合索引的问题q监控和识别索引的使用SQL语句调优q优化器模式概述q设置优化器模式q衡量计划q创建、编辑和维护存储概要q使用SQL跟踪和TKPROFq禁用和启用SQL跟踪q使用TKPROF格式化跟踪文件qSQLPlus的AUTOTRACEq管理统计信息I表统计II索引统计III列统计

以上就是关于GBase8s数据库SQL语句性能缓慢从哪个方面入手分析全部的内容,包括:GBase8s数据库SQL语句性能缓慢从哪个方面入手分析、mysql如何找出慢sql、数据库开发与管理人员,需要具备哪些素质等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9868605.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存