我是Oracle的新手,我从企业管理器创建了一份AWR报告。这是报告的一个小快照。
登录:每秒0.01次 - 每次交易0.02次
内存排序% 100.00
执行每秒19.0 - 每笔交易27.7
%SQL执行> 1 开始:97.45 - 结束:94.41
缓冲区缓存:开始:240M - 结束:240M
回滚每秒0.2次 - 每次交易0.2次
Buffer Hit% 99.98
共享池大小:开始:1,024M - 结束:1,024M
你们能让我知道“登录”,“执行”等术语的含义以及它们如何用于确定数据库性能吗?
很抱歉,如果这个问题看起来很愚蠢,但我无法在网上的任何地方找到解释。
答案 0 :(得分:4)
登录非常简单 - 新用户/会话登录系统的次数。通常,您不需要每秒进行大量登录,因为这是一个非常慢的操作。如果你这样做,那么你可能应该看一下连接池。
排序 - 通常您希望对数据进行排序(日期,字母顺序)。小数据集可以在内存中排序。较大的可以溢出到磁盘,这是较慢的。如果你在记忆中做各种各样的事情,这并不意味着问题。
执行 - SQL通常通过PARSE,BIND,EXECUTE,FETCH。每次执行可能有多次提取(前10行,后10行等)。同样一些SQL没有提取(例如插入)。事务由许多SQL组成。如果每个事务有20-30个SQL,那么你会有一些合理的复杂性。并非每个声明本身都是孤立的交易。每秒执行更为基础。见我的结束评论。
%SQL执行> 1 - 每个解析可以有多个绑定和执行(这是一件好事,因为解析可能很昂贵)。大多数SQL都可以执行多次执行,非常好。
Buffer Cache - 数据块副本的内存量。没有“好”或“坏”,因为它取决于服务器上的内存。
回滚 - 每笔交易0.2美元......奇怪。它表明,20%的交易都是回滚而非承诺。可能没什么可担心的,它可能只是后退或取消按钮的工作方式。除非在强制回滚中引发大量错误,否则它不是数据库问题,而只是应用程序的工作方式。
Buffer Hit% - 数据块读取的百分比直接来自内存而无需转到磁盘。从内存读取速度比磁盘快,所以“好”(特别是对于OLTP应用程序 - 数据仓库通常处理的数据多于内存中的数据)。但是不要对比率感到兴奋。如果你可以减少物理IO(从磁盘读取)很好,但是从内存中的块生成额外的读取只是为了提高比率。
共享池大小 - 同样,它是对内存的测量。
=============================================== ========================= 最终,这些都不是衡量数据库性能的好方法。重要的是,如果应用程序用户(或开发人员或管理人员)说他们的程序符合或不符合其性能规范。
每秒执行次数是一项重要措施,但仅限于您所需的工作量。如果用户希望每秒执行50次执行,并且只执行20次并且正在加班,那么您就会遇到问题。如果他们只需要做一次10秒而他们在Youtube上花了半天时间,你就可以了。
同样地,如果该测量是一个工作日的八小时,如果它涵盖24小时,每个人都有16个小时的家,那么这可能是一个非常不同的故事。