如何描述关系数据库的性能问题?

2024-01-31

我有一个查询在运行关系型数据库这不能满足用户的期望。

我应该提供哪些信息以及应该避免哪些信息,以便我能够在该网站上获得有效的帮助?


For 甲骨文数据库提供以下信息:

描述问题的症状

描述导致问题的行为。查询的行为是否稳定或者问题是否仅发生 有时,具有特定参数或简单随机。您可以在 IDE(例如 SQL Developer)中重现此行为吗?

描述环境

定义 Oracle 的确切版本

 select * from v$version

描述如何连接到数据库:驱动程序、ORM、编程语言。提供名称和/或版本号。

描述查询

发布查询文本。尝试简化 - 显示最小可重复示例.

示例 - 您有问题的查询连接了 10 个表。检查在具有 9 个或 8 个联接的查询中是否看到相同的症状。 逐步退出,直到看到问题并仅显示简化的查询。

是的,这很昂贵,但它大大增加了您获得支持的机会!查询越小,吸引的程度就越高 支持者。

描述执行计划

要获取执行计划,请运行此语句(替换您的查询文本)

 EXPLAIN PLAN  SET STATEMENT_ID = '<some_id>' into   plan_table  FOR
     select * from ....   -- your query here 
 ;

执行计划存储在PLAN_TABLE,查看它运行此查询

 SELECT * FROM table(DBMS_XPLAN.DISPLAY('plan_table', '<some_id>','ALL')); 

显示完整结果(不仅仅是带有执行计划的表)。 极其重要的可能是谓词部分和下面的注释。

示例select * from dual where dummy = :1;

Plan hash value: 272002086

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |     2 |     2   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$1 / DUAL@SEL$1

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("DUMMY"=:1)

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "DUMMY"[VARCHAR2,1]

不要剪切和粘贴图形结果您的 IDE 解释计划。

这个执行计划是真正执行的执行计划吗?

不幸的是并非总是如此。有几个原因解释了执行计划可能与真品不同 http://tkyte.blogspot.co.at/2007/04/when-explanation-doesn-sound-quite.html.

如果您有疑问(特别是当您看到一个好的计划,但查询运行不佳时),您可能会 从数据库缓存中提取计划,提供SQL_ID.

 SELECT t.* FROM  table(DBMS_XPLAN.DISPLAY_CURSOR('<SQL_ID>',null,'ALL')) t; 

当前正在运行(或运行不久且仍被缓存)的查询的 SQL_ID 可以通过以下方式找到 文本匹配和/或数据库用户:

select sql_id, sql_fulltext from v$sql a where 
 lower(sql_text) like lower('%<some identifying part of the query text>%') 
  and parsing_schema_name = '<user running the query>';

如果您有 AWR 许可证,您可以从那里获取执行计划,即使对于历史中运行的查询也是如此。

SELECT t.*
FROM  table(DBMS_XPLAN.DISPLAY_AWR('10u2rj016s96k'  )) t;

可以使用以下命令找到 SQL_ID

select sql_id, sql_text 
from dba_hist_sqltext a 
where lower(sql_text) like lower('%<some identifying part of the query text>%')

描述数据

显示表的 DDL 以及这些表上的索引。

提及最近是否收集了优化器统计信息并显示已使用的dbms_stats收集声明。

对于关键表,提供有关段大小、行数、分区等的信息...

对于访问或联接中使用的列,提供有关不同值数量的信息。 这些值是均匀分布的还是倾斜的(例如,经常出现的少量值和大量出现的值) 具有稀有价值)。 您定义直方图吗?

还要别的吗?

当然,这只是基础知识,可能仍然需要其他信息,例如系统统计数据或优化器参数。 但再次尝试提供(你的)可以识别问题的最少信息。 根据要求发布更多信息。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何描述关系数据库的性能问题? 的相关文章

随机推荐

  • DELETE 语句冲突 REFERENCE 约束

    我收到错误 DELETE 语句与 REFERENCE 约束冲突 FK DocYDocument1 表 DocYDocument 列 SubDocID 语句 从文档中删除 ID 参数 D7FAA3CF 表 DocYDocument 有列 PK
  • project.json 中的框架和导入部分:它们是什么?

    到底是什么frameworks and imports的部分project jsonASP NET Core 1 0 项目的文件以及它们的作用是什么 我一直在尝试寻找 官方 文档以更好地理解它 下面是我最近启动的一个 Yeoman 支架 A
  • 在java servlet中处理“多部分/相关”

    在 Jetty 8 下运行的 Servlet 接收以下请求 Header Content Type multipart related boundary example Data example content type text xml
  • Java中如何获取for循环的最后一个值?

    import java util Scanner public class Problem1 public static void main String args input Scanner kb new Scanner System i
  • 访问网站时如何检查自己的会话哈希?

    我有兴趣了解当我访问网站时人们在我的会话和 cookie 中存储了什么 有什么方法可以查看请求之间以及我在 Safari Chrome 或 Firefox 中的页面上时发生的情况吗 在 Firefox 中 您可以使用其他Firebug ht
  • Google Sheets 脚本:按名称引用图表

    我试图在 图表 工作表中创建一个 用户界面 这将允许他们从下拉列表中选择一个图表 然后它将显示在该下拉列表的正下方 最终会有大量图表 可能在另一个 图表数据 表上 所以我的想法是将图表从数据表移动到图表表 来回移动 不确定这是否可以做到 我
  • 有条件调用构造函数[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 假设某个类foo有两个自定义构造函数 例如foo foo bar const and foo foo baz const 根据某些条件调用其中任
  • 我可以从空 std 容器的 front() 得到什么?

    If front 返回一个引用 并且容器是空的 我会得到什么 未定义的引用 这是否意味着我需要检查empty 在每个之前front 你会得到未定义的行为 在调用 front 之前 你需要使用 empty 检查容器是否为空 检查容器是否包含某
  • 下载已上传的 Lambda 函数

    我使用 upload zip 在 AWS Python 中创建了一个 lambda 函数 我丢失了这些文件 需要进行一些更改 有什么方法可以下载该 zip 吗 Yes 导航到您的 lambda 函数设置 在右上角您将有一个名为 的按钮 Ac
  • 与模板类交朋友:编译错误

    我试图使用指向实现惯用语的指针来隐藏我正在使用 Concurrency unbounded buffer 来自 VC 2010 的事实 问题是 我正在使用模板执行此操作 但陷入了编译错误 这是代码 阻塞队列 h pragma once na
  • 如何在 php 中制作访客计数器? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我如何计算
  • 如何多次使用ConsoleCancelEventHandler

    我一直忙于编写一个充当前端的应用程序 它有一个 GUI 可以使用按钮和类似的东西来获取命令行选项 并将它们传递给命令行 exe 它使用应用程序的控制台来显示命令行应用程序的输出 这工作正常 但是当使用 Ctrl C 或尝试关闭控制台窗口时
  • 安装 Realm 后出错:必须首先使用有效主机创建 RPC 会话

    我最近使用以下方式安装了领域 npm i realm S react native link realm 重要编辑仅当从设备调试时才会出现此问题 一切仍然有效 但这一次 当我尝试启用Debug Js Remotely从开发菜单中 我收到错误
  • 在 Ruby 中构建长字符串的简洁方法

    在编写 Ruby 客户端脚本 时 我看到了三种构建更长字符串的方法 包括行结束符 所有这些对我来说 闻起来 都有点难看 有没有更干净 更好的方法 变量递增 if render quote quote Now that there is th
  • 项目生成的nuget包依赖于另一个不创建nuget包的项目

    如果我有一个构建 nuget 包的项目 P1 并且让它依赖于一个不构建 nuget 包的项目 P2 则生成的包仍将引用 P2作为 nuget 包 重现步骤 使用 2 个 C 项目 P1 和 P2 创建解决方案 使P1依赖于P2 将以下行添加
  • 使用 JMH 计算指标

    如何计算 JMH 中的 CPU 时间和内存量 例如 我有 代码 State Scope Thread BenchmarkMode Mode All public class JMHSample My int x 1 int y 2 Gene
  • Spring MVC Controller中JsonView的动态选择

    我知道可以用注释控制器方法 JsonView 在 Spring MVC 中静态定义单个视图类 不幸的是 这意味着我可能拥有的每种类型的视图都需要不同的端点 我看到其他人也问过这个问题before https stackoverflow co
  • 为什么在将 Marshmallow 与 SQLAlchemy 自动映射一起使用时出现“Decimal 类型的对象不可 JSON 序列化”?

    Using automap base from sqlalchemy ext automap映射我的桌子 不能够shema dumps result getting raise TypeError f Object of type o cl
  • 使用 HTML5 文件输入时单击按钮从多个文件上传器中删除文件

    如何添加remove这里的按钮就像简单地在文件队列中一一删除一样 我之所以不使用带有 OOB 插件的免费文件上传插件 是因为我的客户要求是出于安全目的 他们需要简单的上传 ui 而不需要任何复杂的插件 function var dropZo
  • 如何描述关系数据库的性能问题?

    我有一个查询在运行关系型数据库这不能满足用户的期望 我应该提供哪些信息以及应该避免哪些信息 以便我能够在该网站上获得有效的帮助 For 甲骨文数据库提供以下信息 描述问题的症状 描述导致问题的行为 查询的行为是否稳定或者问题是否仅发生 有时