如何提高数据库实例命中率? (数据库实例命中率检测)

随着互联网和移动互联网的不断发展,数据库成为了大数据处理的核心。在应用程序中,数据库可用于存储、访问和修改数据。在数据库系统中,高命中率是一项重要的指标,它反映了数据库的性能和效率,并对应用程序的响应时间产生直接影响。因此,提高数据库实例命中率就成了数据库管理员不可回避的重要任务。本文就带领大家深入了解如何提高数据库实例命中率。

一、什么是数据库实例命中率?

在数据库系统中,实例指的是运行在计算机上的数据库进程。命中率指的是缓存中的数据在数据库的访问中所占的比例。因此,数据库实例命中率就是数据库实例中缓存中的数据被命中而不需要在磁盘中进行访问的比例。

二、提高数据库实例命中率的方法

1. 使用高速硬件

数据库缓存通常使用高速存储器来存储数据,如RAM。因此,使用高速硬件装备服务器可以提高缓存的速度,从而提高数据库实例命中率。此外,使用固态硬盘(SSD)来替换传统的机械硬盘也是一种有效的方法。

2. 使用适当的数据库调度策略

有些数据库采用了访问策略,比如先进先出、最近最少使用等。然而,这些策略不一定都是最为合适的。因此,需要根据实际情况选择适当的数据库调度策略,以提高命中率。一些数据库产品还提供了一些更为高级的调度策略,如自适应调度。

3. 加倍缓存

为了提高数据库实例命中率,还可以尝试增加缓存的大小。这可以通过调整数据库的缓存参数实现。要注意的是,缓存过大可能会导致缓存效率低下,因此建议在实验性阶段逐步增加缓存的大小,并根据实际需要作出相应的调整。

4. 优化查询

对于大型数据库来说,查询优化是提高数据库性能的关键。可以使用索引、提高SQL语句执行效率等方式来优化查询。同时,也需要避免经常使用全表扫描的语句。优化查询,可以减少磁盘读写操作,从而提高命中率。

5. 使用数据分区

数据分区可以将一个大表划分成更小的数据块,每个数据块都存储在不同的硬盘上。这可以提高磁盘访问的效率,从而提高命中率。数据分区还可以为应用程序提供更好的性能,并减少锁的竞争。

6. 定期维护数据库

定期维护数据库可以避免数据过期、索引失效、空闲空间不足等问题。这可以帮助缓存保持高效,并提高命中率。一些数据库系统也提供了自动维护功能,可以自动处理这些任务。

三、

为了提高数据库实例命中率,需要使用高速硬件、适当的数据库调度策略、加倍缓存、优化查询、使用数据分区和定期维护数据库。数据库管理员应该根据实际情况选择适合自己的策略,并根据缓存的效率和实际需要对策略进行相应的调整。这样可以确保数据库系统的高性能,同时提高应用程序的响应速度,提高应用程序的用户体验。

相关问题拓展阅读:

如何在 SAP 系统中监控和分析 DB2 UDB 性能

性能问题总是数据库领域里面永恒的话题,使用 DB2 作为底层数据平台的 SAP 系统为我们提供了许多方法监控和检测数据库性能问题。本文从数据库性能问题检测的一般思路和方法论入手,介绍了如何通过 SAP 系统对 DB2 的性能进行监控和分析。回页首数据库性能问题检测的思路及方法论在数据库运维工作中遇到性能问题时,通常会让数据库管理员感到无从下手,不容易断定问题的根源所在。如果能有一种可操作的一般性的方法作为指导,我们通常就能够发现大部分数据库性能问题的根源。那么,首先根据我们对数据库性能监控的一些实践经验来总结一下在遇到性能问题时应该进行哪些检查。我们不能保证通过文中介绍的方法就能找到所有性能瓶颈,性能问题的原因很多,解决方法也多种多样,我们在这里只是提供一些普遍的,一般性的方法,具体的实施还需要根据系统的具体情况和不断的实践经验积累。同时,通过进行这些监控,也有利于为技术支持人员提供更详细诊断信息,以便于快速定位性能问题。当遇到一个性能问题,我们首先进塌兆行以下排查: 性能问题是在何时发生的; 性能问题持续存在的还是间断性的; 系统范畴的性能问题还是数据库本身的性能问题; 性能问题是否只存在于某一个应用; 性能问题是随机出现的还是必然出现的。如果性能问题存在于所有应用,我们可以进行以下排查: 如果发现系统存在大量的 I/O 操作: 检查设备磨辩使用情况; 检查排序情况和临时表空间; 检查查询性能是否有效的得到优化; 检查缓冲池的使用状况。 如果发现 CPU 具有很高的负载: 检查排序状况; 检查缓冲池的使用状况。 如果发现 CPU 和 I/O 操作的负荷都很大: 检查用户数量; 检查排序状况。 如果发现 CPU 和 I/O 操作的负荷都很小而数据库响应仍然很慢: 检查并发性和锁的使用状况; 检查缓冲池的使用状况。如果性能问题可以被定位在一个应用,我们可以进行以下排查: 检查排序情况。 检查并发性和团游租锁的使用状况。 检查统计信息是否更新。回页首通过SAP 系统的工具对 DB2 UDB 进行监控通过前一部分的描述,我们了解到了在遇到性能问题以后应该用什么思路寻找性能的瓶颈,从而想办法解决性能问题。在对数据库进行检查的过程中,我们通常会用到数据管理工具,命令行以及操作系统的工具,还要结合 SAP 的自身特点寻找性能问题的根源,这将是一个比较繁琐和费事的工作。在使用 SAP 作为底层数据库的 SAP 系统中,由于 SAP 实现了与 DB2 紧密的结合。SAP 的 DBA Cockpit 提供了许多功能来支持数据库的管理工作,使得数据库性能监控和分析变得更加简单。下面我们就来看看,SAP 为 DB2 性能监控和分析提供了哪些支持。磁盘I/O 性能监控概念对于数据库来说,最消耗时间的操作实际上是从磁盘中检索数据。这是由磁盘的物理特性决定的。尽管磁盘存储技术已经取得了极大的进步,但磁盘的读写速度与内存的读写速度仍然相差几个数量级。从性能调整的角度来说,如果一个机器的磁盘出现问题,那么其他的任何优化工作都无法提供帮助。因此我们应该保证运行数据库的磁盘系统是健康的。SAP 系统为我们提供了监控磁盘读写速度的功能,让我们可以直接了解当前磁盘的性能状况。监控我们首先进入 SAP 的 DBA Cockpit ( 可以直接输入 st04),然后在 Performance 的目录下双击 Database, Buffer Pool 的标签内,可以看到当前数据库磁盘的读写状况。图1. 磁盘 I/O 信息从图中我们可以看到磁盘物理平均读速度为 3.25ms,写速度为 7.45ms。分析磁盘物理读写速度反应了磁盘子系统的性能。一般情况下,磁盘读写速度应该小于 5ms,读速度一般要大于写速度,但在一些具有大量缓存的存储系统中,写速度可能会快于读速度。磁盘性能的优化已经超出了本文讨论的范围,这里只是提供一些基本的指导。缓冲池监控概念缓冲池是数据库单独开辟的一块存储区域,这片区域用来缓存从磁盘读出的包含数据表和索引的数据页。当数据之一次被检索出来以后便被暂时缓存在缓冲池中,当数据下次被访问时,数据库将直接从缓冲池中读取数据,这样减少了相对缓慢的磁盘 I/O 操作。因此,缓冲池的配置对于数据库性能十分重要。在缓冲池中,目前还不支持存储大对象和长数据记录。反映缓冲池质量的一个重要性能指标是缓冲池命中率。缓冲池命中率指数据库管理器不需从磁盘读入页就能处理页请求的时间百分比。其计算方法为:缓冲池命中率 = (1 – (( 缓冲池数据物理读 + 缓冲池索引物理读 ) / ( 缓冲池数据逻辑读 + 缓冲池索引逻辑读 ) ) ) * 100%另外两个重要性能指标是索引命中率和数据命中率。索引命中率反映了可以在缓冲池中找到的页面能够满足的对索引页的所有读请求所占的百分比。其计算方法为:索引命中率 = (1 – ( 缓冲池索引物理读 / 缓冲池索引逻辑读 ) ) ) * 100%数据命中率说明了可以在缓冲池中找到的页面能够满足的对数据页的所有读请求所占的百分比。其计算方法为:数据命中率 = (1 – ( 缓冲池数据物理读 / 缓冲池数据逻辑读 ) ) ) * 100%监控我们可以从三个级别来看缓冲池的质量,这三个层次分别是数据库级,缓冲池级,表空间级。在 SAP 系统中我们可以使用 DBA Cockpit 来查看不同级别的缓冲池质量。首先可以在数据库级查看缓冲池的质量,我们进入 SAP 的 DBA Cockpit,然后在 Performance 的目录下双击 Database, 在 Buffer Pool 的标签内,可以看到当前数据库总体的缓冲池质量。图2. 缓冲池总体状况我们从图中可以看出,数据库缓冲池的总体命中率是 99.81%,数据命中率为 99.86%,索引命中率为 99.70%。如果在 st04 中选中 Performance -> Buffer pools, 我们也可以在缓冲池级别看到命中率,如果一个数据库只有一个缓冲池,那么这个命中率与我们在数据库级别看到的命中率相同。图3. 数据库级别缓冲池信息如果在 st04 中选中 Performance -> Tablespaces,我们就可以在表空间级别看到缓冲池的命中率。图4. 表空间级别缓冲池信息分析缓冲池的理想命中率对于索引应该大于 90%, 对于数据应该大于 95%。要提高缓冲池的命中率,可以增加缓冲池的大小,也可以为不同类型数据分配不同缓冲池,可以为每个经常访问的具有自己的表空间的大型表使用一个缓冲池,也可以为一组小型表使用一个缓冲池。缓存监控概念数据库的缓存主要有包缓存 (Package Cache) 和编目录缓存 (Catalog Cache)。它们与数据库的查询性能息息相关。包缓存(Package Cache) :SQL 语句编译通常消耗的资源比较大,为了提高系统性能,动态 SQL 语句在被编译后一般存放于包缓存中。当用户下一次请求同一条 SQL 语句,就无需再次编译 SQL 语句。包缓存的质量一般通过包缓存命中率来衡量,它表明了包缓存的设置是否成功的避免了 SQL 语句的重新编译。其计算方法为:包缓存命中率 = (1 – ( 在包缓存中的插入次数 / 查询包缓存的次数 )) * 100编目录缓存 (Catalog Cache):编目录缓存用来缓存系统编目录信息,如系统表,权限,系统存储过程。系统编目录的访问速度对于系统的性能有着十分重要的影响。在 DPF 环境下,系统编目录的访问速度至关重要。通过使用编目录缓存可以大大提高访问系统编目录的速度。编目录缓存质量一般通过编目录命中率来衡量,它表明了编目录缓存是否成功的避免了从磁盘中读取编目录信息。其计算方法为:包缓存命中率 = (1 – ( 在编目录缓存中的插入次数 / 查询编目录缓存的次数 )) * 100监控我们进入 SAP 的 DBA Cockpit,然后在 Performance 的目录下双击 Database, 在 Cache 的标签内,可以看到当前数据库缓存的统计信息。图5. 数据库缓存信息从图中我们可以看到编目录缓存的质量是 99.93%,在图中的 quality 就是我们前面所说的命中率。当前数据库编目录缓存的大小为 10240KB,没有缓存溢出。在左边一栏,我们可以看到,包缓存的质量是 97.64%,包缓存的大小为 62023KB,没有缓存溢出。分析包缓存的理想命中率应该大于 98%,用户通常不用关注包缓存的大小,如果 PCKCACHESZ 被设置为 automatic,其大小由 DB2 自动调节。编目录缓存的理想命中率也应该大于 98%,其大小应该保证编目录缓存不应该发生任何溢出。我们可以调整数据库配置参数 CATALOGCACHE_SZ 来改变编目录缓存大小,由于编目录缓存是从数据库堆中分配的,因此,在改变 CATALOGCACHE_SZ 变量的同时,应该注意到数据库堆的大小也会相应改变。排序监控概念DB2 在运行过程中时经常要做排序操作。一般说来,在 OLTP 类型的数据库中,排序操作通常少于 OLAP 类型的数据库环境。排序操作通常会在三种情况下发生,之一种情况是数据的查询处理,比如 order by, group, 哈希连接,索引操作,内存的表操作等等。第二种是当我们载入操作的对象是带有索引的表时,再载入操作过程中就会涉及到对索引键的列表和排序,这样就会产生排序操作。第三种情况发生在创建索引的时候。排序的效率因而直接影响到数据库的响应时间,我们必须对排序进行有效监控。监控我们进入 SAP 的 DBA Cockpit,然后在 Performance 的目录下双击 Database, 在 Sorts 的标签内,可以看到当前数据库的排序状况。图6. 数据库排序状况可以从图中看出,共享排序堆的大小为 1676KB, 私有排序堆的大小为 1340KB。如果没有索引满足所取的行的要求顺序,或者 DB2 查询优化器认为排序的代价低于索引扫描,那么就需要在排序堆中进行排序。DB2 的排序分为私有排序和共享排序。私有排序发生在代理的私有代理内存中,而共享排序发生在数据库的数据库共享内存中。我们还可以看出,排序堆溢出次数 1174 次,总的排序次数为次。分析如果数据库分配的排序堆大小不够大,就会出现排序溢出的情况,这样就需要动用临时表空间来辅助排序的进行,由于临时表空间存在于磁盘,这将大大影响排序的速度。理想情况下,排序溢出率 ((Sort overflows * 100) / Total sorts ) 不应该超过 1%。如果这个溢出率过高,那么数据库中很可能发生了大的排序,我们就需要调查出现过度排序的原因。在发现根源之前,一个简易的解决方案是增加 SORTHEAP 的大小。然而,这样做通常是治标不治本并且掩盖了真实的性能问题。比较彻底的解决方案应该是确定引起排序的 SQL 并更改该语句,或通过增加索引来避免或减少排序开销。并发性和锁的监控概念数据库的锁是数据库管理器用来控制应用程序并发访问数据库数据并且保证数据库数据的一致性的重要机制,数据库中行和表都可以上锁。数据库的锁在保证了数据库数据一致性同时也在一定程度上降低了数据库的响应速度。锁等待和死锁是影响数据库相应速度的重要因素,糟糕的应用程序设计和不合理的 SQL 查询计划的生成都会导致锁等待和死锁。锁升级 (Lock Escalation):一个锁通常作为一个记录存储在内存锁表中,锁表的大小可以由数据库自动调节。锁升级一般发生在锁的数量超过了数据库配置参数 MAXLOCKS 所指定的大小,为了减少锁的数量,数据库会把若干行一级的锁合并为表锁。这样数据库的并发性就会受到影响。监控我们进入 SAP 的 DBA Cockpit,然后在 Performance 的目录下双击 Database, 在 Locks and Deadlocks 的标签内,可以看到当前数据库的锁的状况。图7. 数据库锁状况从图中可以看到,当前锁表的大小为 22144KB,已经使用了 94KB。锁等待的平均时间为 10.40ms,没有锁升级和死锁被检测到。分析影响数据性能的有关锁的问题主要集中在锁等待,死锁和锁升级。这些问题的根源很可能是数据库应用的设计问题。因此,我们应该仔细调查造成死锁,锁等待和锁升级的应用程序,以及其用到的 SQL 语句。同时,在问题定位之前,我们也可以通过下面方法来解决数据库锁造成的性能问题。锁等待和死锁:如果要避免锁等待和死锁的问题我们需要注意数据库参数中的 DLCHKTIME 和 LOCKTIMEOUT 两个参数的设置。其中 DLCHKTIME 单位是毫秒,是 DB2 检查死锁的间隔时间,如果该值为 10000ms,则表明每隔 10 秒钟数据库会检查一下有无死锁存在,如有死锁,会选择回滚其中的某一个事务,让另外一个事务完成交易。LOCKTIMEOUT 单位是秒,是锁等待最长时间,超过该时间仍未获得锁,则返回错误。LOCKTIMEOUT 的默认值为 -1,这意味着锁等待时间无限大,一般不推荐这种设置。DLCHKTIME 时间通常要设得比 LOCKTIMEOUT 时间小一些,否则还未发现死锁,就会返回锁等待超时错误 (SQL0911N 返回码 68) 。锁升级:要避免锁升级,我们应该正确设置数据库参数 LOCKLIST 和 MAXLOCKS。LOCKLIST 表明分配给锁表的内存大小。每个数据库都有一个锁表,锁表包含了并发连接到该数据库的所有应用程序所持有的锁。MAXLOCKS 定义了应用程序可以占有锁表空间的百分比,当一个应用程序所使用的锁表百分比达到 MAXLOCKS 时,数据库管理器会升级这些锁,用表锁代替行锁,从而减少列表中锁的数量。我们一般可以通过增加锁表大小的方法解决锁升级问题。日志性能监控概念DB2 事务日志对于恢复来说极其重要。它们记录对数据库对象和数据所做的更改。在 DB2 中数据和索引的改变都会先被写入日志缓冲区,保证对数据所做的修改在记录到数据库之前,总是被具体化为日志文件。日志缓冲区的数据由日志处理器写入磁盘。在下列情况下,查询处理必须等待日志数据写入磁盘后才能进行: 事务提交时。

在将相应数据页写入磁盘之前,因为 DB2 使用预写日志记录。预写日志记录的好处是当执行 COMMIT 语句完成事务之后,并非所有更改的数据和索引页都需要写入磁盘。 在元数据更改(一般通过执行 DDL 语句产生的)之前。 日志缓冲区已满。DB2 以这种方法管理向磁盘写入日志数据的目的是尽可能地缩短处理延迟时间。在存在许多较小的并发事务的环境中,许多处理延迟是由 COMMIT 造成的,因为它必须等待日志数据写入磁盘后才能进行。因此,日志处理器进程频繁地将少量日志数据写入磁盘会造成大量处理延迟,另外一些延迟是由日志 I/O 开销造成的。监控我们进入 SAP 的 DBA Cockpit,然后在 Performance 的目录下双击 Database, 在 Logging 的标签内,可以看到当前数据库日志的状况。图8. 数据库日志状况我们在图中可以看到日志文件以及日志缓冲区的情况。包括日志文件的数量,大小,数据库使用的日志空间以及可用日志空间的大小。还可以看到日志缓冲区的情况,当前日志缓冲区的命中率为 100%。分析由于数据库中的处理必须等待日志数据写入磁盘才能进行,日志文件的读写速度对数据库的响应速度也会产生很大影响。因此,应该把日志文件放到速度比较快的磁盘上,以减少磁盘 I/O 开销。日志文件写入的性能可以通过平均写时间来观察。另外,我们可以通过调整数据库配置参数 LOGBUFSZ 来指定日志缓冲区的大小。如果数据库对于日志磁盘有相当多的读操作,或者希望有较高的磁盘利用率。一般来说,如果日志缓冲区的命中率小于 98%,那么可以增加这个缓冲区的大小以提高命中率。当增加这个参数的值时,也要考虑 DBHEAP 参数,日志缓冲区使用的空间是 DBHEAP 参数所定义的内存空间的一部分。数据库统计信息监控概念数据库的统计信息反映了表及其相关索引的物理特点。统计信息主要包含: 表信息:表的行数,使用的数据页,溢出的行数,列的平均长度,列的更大最小值等。 索引信息:索引条目的数量,索引所关联列的不同值的数量,索引的层数等。这些信息被数据库查询优化器用来生成查询计划。好的访问计划对于 SQL 语句的快速执行至关重要。我们需要想办法保证统计信息准确地反映了当前数据库的状况。由于数据库的表和索引总是随着数据库处理各种更新请求而不断发生变化的,因此,总会出现统计信息过时,而不能正确反映数据库数据现状的情况。这时,数据库查询优化器生成的查询计划可能不是更优的,这将大大影响数据库的查询性能。我们应该经常检查数据库的统计信息是否为最新的,并及时更新统计信息。SAP 系统为我们提供了监控和执行统计信息收集的方法。监控我们进入 SAP 的 DBA Cockpit,然后在 Performance 的目录下双击 Tables, 在 Table 列表中双击要监控的表,在 Table 的标签中,我们可以看到当前表的基本信息。这时,如果我们点击 Count 按钮,就会看到统计信息的质量。图9. 表的统计信息状况从图中我们看到,表的当前行数为 27,Deviation 为 8%。分析如果我们监控到一个表的 Deviation 超过了 15%,我们就应该重新收集这个表的统计信息。在 SAP 中我们可以选择手动收集统计信息。我们也可将系统配置成自动收集统计信息,这样大大减少了系统手动维护的工作量。自动统计信息收集通常每隔 2 个小时触发一次,它会自动选择在 24 小时之内没有收集过统计信息的持久的基表。如果 SAP 系统进行 Client Copy 或在 BI 表中加载大量数据,由于这些操作在短时间就可以改变表的数据状况及分布,因此会导致统计信息的过时。在 DB2 V9.5 中,为了解决这个问题,提供了一种 RTS (Real Time Statistics) 的特性,该特性可以允许在查询被处理并优化前对表的统计信息进行收集或采样,如果优化器认为重新收集统计信息比用过时的统计信息进行查询的速度快,那么会在处理该查询之前重新收集表的统计信息,从而达到实时收集统计信息的目的。我们一般需要将数据库配置参数 AUTO_STMT_STATS 设为 ON 来开启 RTS 特性,但在 SAP 系统中,RTS 已经是默认设置,我们无需进行任何改变。回页首结束语本文从数据库问题检测的一般思路和方法论出发,介绍了如何通过 SAP 系统对 DB2 的性能进行监控。

oracle性能检测sql语句

监控事例的等待

  select event sum(decode(wait_Time )) Prev

  sum(decode(wait_Time )) Curr count(*) Tot

  from v$session_Wait

  group by event order by ;

   回滚段的争用情况

  select name waits gets waits/gets Ratio

  from v$rollstat a v$rollname b

  where a usn = b usn;

   监控表空间的 I/O 比例

  select df tablespace_name name df file_name file f phyrds pyr

  f phyblkrd pbr f phywrts pyw f phyblkwrt pbw

  from v$filestat f dba_data_files df

  where f file# = df file_id

  order by df tablespace_name;

 耐好  监控文件系统的 I/O 比例

  select substr(a file# ) # substr(a name ) Name

  顷银a status a bytes b phyrds b phywrts

  from v$datafile a v$filestat b

  where a file# = b file#;

   在某个用户下找所有的索引

  select user_indexes table_name user_indexes index_name uniqueness column_name

  from user_ind_columns user_indexes

  where user_ind_columns index_name = user_indexes index_name

  and user_ind_columns table_name = user_indexes table_name

  order by user_indexes table_type user_indexes table_name

  user_indexes index_name column_position;

   监控 SGA 的命中率

  select a value + b value logical_reads c value phys_reads

  round( * ((a value+b value) c value) / (a value+b value)) BUFFER HIT RATIO

  from v$sysstat a v$sysstat b v$sysstat c

  where a statistic# = and b statistic# =

  and c statistic# = ;

   监控 SGA 中字典缓冲区的命中率

  select parameter gets Getmisses getmisses/(gets+getmisses)* miss ratio

  ( (sum(getmisses)/ (sum(gets)+sum(getmisses))))* Hit ratio

  from v$rowcache

  where gets+getmisses

  group by parameter gets getmisses;

   监控 SGA享雀亩宴缓存区的命中率 应该小于 %

  select sum(pins) Total Pins sum(reloads) Total Reloads

  sum(reloads)/sum(pins) * libcache

  from v$librarycache;

  select sum(pinhits reloads)/sum(pins) hit radio sum(reloads)/sum(pins) reload percent

  from v$librarycache;

   显示所有数据库对象的类别和大小

  select count(name) num_instances type sum(source_size) source_size

  sum(parsed_size) parsed_size sum(code_size) code_size sum(error_size) error_size

  sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required

  from dba_object_size

  group by type order by ;

   监控 SGA 中重做日志缓存区的命中率 应该小于 %

  SELECT name gets misses immediate_gets immediate_misses

  Decode(gets misses/gets* ) ratio

  Decode(immediate_gets+immediate_misses

  immediate_misses/(immediate_gets+immediate_misses)* ) ratio

  FROM v$latch WHERE name IN ( redo allocation redo copy );

监控内存和硬盘的排序比率 更好使它小于 增加 sort_area_size

  SELECT name value FROM v$sysstat WHERE name IN ( sorts (memory) sorts (disk) );

   监控当前数据库谁在运行什么SQL语句

  SELECT osuser username sql_text from v$session a v$sqltext b

  where a sql_address =b address order by address piece;

   监控字典缓冲区

  SELECT (SUM(PINS RELOADS)) / SUM(PINS) LIB CACHE FROM V$LIBRARYCACHE;

  SELECT (SUM(GETS GETMISSES USAGE FIXED)) / SUM(GETS) ROW CACHE FROM V$ROWCACHE;

  SELECT SUM(PINS) EXECUTIONS SUM(RELOADS) CACHE MISSES WHILE EXECUTING FROM V$LIBRARYCACHE;

  后者除以前者 此比率小于 % 接近 %为好

  SELECT SUM(GETS) DICTIONARY GETS SUM(GETMISSES) DICTIONARY CACHE GET MISSES

  FROM V$ROWCACHE

   找ORACLE字符集

  select * from sys props$ where name= NLS_CHARACTERSET ;

   监控 MTS

  select busy/(busy+idle) shared servers busy from v$dispatcher;

  此值大于 时 参数需加大

  select sum(wait)/sum(totalq) dispatcher waits from v$queue where type= dispatcher ;

  select count(*) from v$dispatcher;

  select servers_highwater from v$mts;

  servers_highwater接近mts_max_servers时 参数需加大

   碎片程度

  select tablespace_name count(tablespace_name) from dba_free_space group by tablespace_name

  having count(tablespace_name)> ;

  alter tablespace name coalesce;

  alter table name deallocate unused;

  create or replace view ts_blocks_v as

  select tablespace_name block_id bytes blocks free space segment_name from dba_free_space

  union all

  select tablespace_name block_id bytes blocks segment_name from dba_extents;

  select * from ts_blocks_v;

  select tablespace_name sum(bytes) max(bytes) count(block_id) from dba_free_space

  group by tablespace_name;

  查看碎片程度高的表

  SELECT segment_name table_name COUNT(*) extents

  FROM dba_segments WHERE owner NOT IN ( SYS SYSTEM ) GROUP BY segment_name

  HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);

   表 索引的存储情况检查

  select segment_name sum(bytes) count(*) ext_quan from dba_extents where

  tablespace_name= &tablespace_name and segment_type= TABLE group by tablespace_name segment_name;

  select segment_name count(*) from dba_extents where segment_type= INDEX and owner= &owner

  group by segment_name;

   找使用CPU多的用户session

   是cpu used by this session

  select a sid spid status substr(a program ) prog a terminal osuser value/ / value

  from v$session a v$process b v$sesstat c

  where c statistic#= and c sid=a sid and a paddr=b addr order by value desc;

lishixinzhi/Article/program/Oracle/202311/17800

数据库实例命中率检测的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库实例命中率检测,如何提高数据库实例命中率?,如何在 SAP 系统中监控和分析 DB2 UDB 性能,oracle性能检测sql语句的信息别忘了在本站进行查找喔。


数据运维技术 » 如何提高数据库实例命中率? (数据库实例命中率检测)