Performance 实时问题:Oracle性能调整(类型/索引/plsql/查询)

Performance 实时问题:Oracle性能调整(类型/索引/plsql/查询),performance,database-design,oracle10g,database-tuning,Performance,Database Design,Oracle10g,Database Tuning,我正在寻找一个实时解决方案 下面是我的DB列。我正在使用Oracle10g。请帮助我为更新和插入定义表类型/索引和调优的PLSQL/查询(两者) 插入和更新查询很简单,但在这里我们需要注意性能,因为我的系统每秒将执行200次。 让我知道。。。我应该使用过程还是简单的查询?要求使用适当的DB表类型/索引编写调优的plsql和查询 我真的很想在每秒连续200次更新后看到我的系统的性能 DB表(列)(如果需要,我可以更改结构,因此请让我知道…) 先谢谢你。。。如果有任何疑问,请告诉我……您并没有提供很

我正在寻找一个实时解决方案

下面是我的DB列。我正在使用Oracle10g。请帮助我为更新和插入定义表类型/索引和调优的PLSQL/查询(两者)

插入和更新查询很简单,但在这里我们需要注意性能,因为我的系统每秒将执行200次。

让我知道。。。我应该使用过程还是简单的查询?要求使用适当的DB表类型/索引编写调优的plsql和查询

我真的很想在每秒连续200次更新后看到我的系统的性能

DB表(列)(如果需要,我可以更改结构,因此请让我知道…)


先谢谢你。。。如果有任何疑问,请告诉我……

您并没有提供很多关于您正在更新的内容等的详细信息

作为编写update语句的基础,不要使用PL/SQL,除非您无法在SQL中实现您想要做的事情,因为在您甚至还没有来得及处理任何记录之前,单独的上下文切换将损害您的性能

如果您能够专门为更新创建索引,那么请为update语句的
WHERE
子句中显示的列编制索引,以便在更新之前快速找到记录

至于插入,请查看插入记录的
/*+append*/
提示的好处,看看它是否对您的特定案例有益

最后,您将使用的表结构将取决于您甚至还没有开始接触您提供的详细信息的可能因素,我建议您对DB结构进行一些研究,或者向DBA索要101类

祝你好运

编辑:

针对:
Play ID-ID(这里ID是歌曲名,比如abc.wav之类的东西..也可能是VARCHAR2,但还没有决定..您的打开位置是什么…如果主键是VARCHAR2类型,那么就可以了..任何建议都是最受欢迎的..)type-song或Message(VARCHAR2)Count-总播放次数的总和(整数)重试次数-总播放次数的总和,如果失败。(整数)持续时间-上次更新的总持续时间(整数)-延迟更新的日期时间(日期时间)

将主键作为VARCHAR2数据类型没有什么错(尽管经常有关于非特定PK(即序列)的价值的争论)。然而,你必须确保你的PK是唯一的,如果你不能保证这一点,那么你的PK应该有一个序列,而不是引入另一个列来保持唯一性

至于将表列声明为整数,它们最终将解析为数字,因此我只将表列创建为数字(除非您有非常具体的理由将它们创建为整数)

最后,对于DATETIME列,您只需要将其作为日期数据类型进行decare,除非您在时间部分需要真正的精度,在这种情况下,将其声明为时间戳数据类型

至于帮助您了解表格本身的结构(即您需要哪些列等),我无法帮助您,因为我对您的报告要求、应用程序要求或审计要求、公司最佳实践一无所知,命名惯例等。恐怕这是你自己决定的事情


不过,为了提高性能,请将索引保持在最小值(即,仅索引列有助于更新WHERE子句搜索),只更新尽可能少的数据,并且,如前所述,研究附加提示以获取插入信息。它可能对您的情况有所帮助,但您必须自己进行测试。

,寻找答案…请建议…你的应用程序在做什么?是否每秒更新同一行200次?还是每秒更新200个不同的行?您是否根据
播放ID
进行更新?还是基于别的什么?你真的只关心一张桌子吗?谢谢你的回复。。。这是信息<代码>你的应用程序在做什么在容器上部署一个java应用程序名作为sbs。在容器顶部部署了3个其他java应用程序,比如A、B和C。现在应用程序A、B和C点击一个方法名作为应用程序sbs的Sing(id),用于播放消息。应用程序sbs的sing(id)方法,每秒点击200次左右,并为所有人播放消息。
是否每秒更新同一行200次?还是每秒更新200行?
-不同的行
是否根据播放ID进行更新?还是基于别的什么-是的,基于play idPlease请参见上文…我已提供了所有信息…谢谢…寻找您的反馈…由于您正在通过play_ID进行更新(并假设它是表的主键),因此我希望您在play_ID列上有一个主键索引(唯一索引),这不仅可以确保表键的唯一性,还可以提高更新性能。您仍然没有提供完整的表结构-例如,列数据类型是什么?特别是“Type”列,如果它是一个存储歌曲/消息名称的VARCHAR2,那么它就不是问题,如果它是一个存储实际歌曲曲目或消息的BLOB。。。DML中是否有引用的任何查找表?
Play ID-ID
(这里ID是歌曲名称,如abc.wav某物..可能是VARCHAR2,但尚未决定..您的打开方式是什么…如果主键是VARCHAR2类型,那么这很好..欢迎任何建议..)
类型-歌曲或消息
(VARCHAR2)
计数-总播放时间之和
(整数)
重试-总播放时间之和,如果失败。
(整数)
持续时间-总持续时间
(整数)
上次更新-晚更新日期时间
(日期时间)先生,请提供您宝贵的
Play ID  - ID 
Type - Song or Message
Count - Summation of total play
Retries - Summation of total play, if failed. 
Duration - Total Duration
Last Updated - Late Updated Date Time