暂无图片
分享
吾亦可往
2024-08-12
如何确定适合的 INMEMORY_AUTOMATIC_LEVEL 参数值?

如何确定适合的 INMEMORY_AUTOMATIC_LEVEL 参数值?

收藏
分享
2条回答
默认
最新
风行
  • 当设置为 HIGH 时,‌所有未预先存在的 INMEMORY 设置的对象会自动设置为 INMEMORY MEMCOMPRESS AUTO。‌这意味着,‌默认情况下,‌所有新创建的表和实例化视图都将被填充到 IM 列存储中,‌这有助于提高查询性能,‌尤其是在处理大量数据时。‌然而,‌这也可能增加内存使用,‌因此需要确保系统有足够的资源来支持这种配置。‌
  • 如果设置为 LOW 或 MEDIUM,‌则自动管理填充到内存(IM)列存储中的对象将受到限制,‌这可能适用于那些对内存使用有严格限制或希望更精细控制哪些对象使用 INMEMORY 技术的场景。‌
  • 在选择参数值时,‌还需要考虑业务场景的复杂性。‌如果业务涉及大量复杂查询和数据处理,‌可能需要更高的 INMEMORY_AUTOMATIC_LEVEL 来优化性能。‌反之,‌如果业务相对简单,‌对性能要求不高,‌则可以选择较低的级别以节省资源。‌

综上所述,‌选择适合的 INMEMORY_AUTOMATIC_LEVEL 参数值需要综合考虑应用程序的性能需求、‌内存资源以及业务场景的复杂性。‌根据具体情况调整参数值,‌以达到最佳的性能和资源利用平衡

暂无图片 评论
暂无图片 有用 0
暂无图片
Whill

以下是一些用于确定适合的 INMEMORY_AUTOMATIC_LEVEL 参数值的方法和考虑因素:
一、分析数据库工作负载
事务处理与分析查询的比例
如果数据库主要用于事务处理,对实时数据的插入、更新、删除操作频繁,并且分析查询相对较少,那么较低的 INMEMORY_AUTOMATIC_LEVEL 值可能更合适,以避免过多的内存分配给 In-Memory 而影响事务处理的性能。
例如,一个在线银行系统,大部分操作是用户的转账、存款、取款等事务,分析类操作如月度报表生成等相对较少。在这种情况下,可以先从较低的 INMEMORY_AUTOMATIC_LEVEL(如 LOW)开始测试,观察对事务性能的影响。
相反,如果数据库中有大量的分析查询,如数据仓库或商业智能系统,分析查询对响应时间要求较高,那么可以考虑较高的参数值,让更多的数据和对象自动放入内存以加速查询。
例如,一个大型电商企业的数据仓库,每天需要进行大量的销售数据分析、用户行为分析等复杂查询,此时 INMEMORY_AUTOMATIC_LEVEL 可以设置为 HIGH 或至少 MEDIUM 来优化查询性能。
数据访问模式和热点数据
分析哪些数据被频繁访问(热点数据),以及这些数据的访问模式(随机访问还是顺序访问)。如果有明确的热点数据且这些数据的查询对性能至关重要,可能需要较高的 INMEMORY_AUTOMATIC_LEVEL 来确保这些数据优先进入内存。
比如,在一个医院的医疗信息系统中,患者的基本信息和近期的病历记录是频繁访问的热点数据,对于医生快速查询患者信息的响应时间要求很高,那么应该根据这些数据的特点和访问需求来确定合适的 INMEMORY_AUTOMATIC_LEVEL 值,以确保这些关键数据能在内存中高效访问。
二、评估系统资源
内存可用性
考虑服务器上可用的物理内存总量以及数据库实例已经使用的内存。如果服务器内存充足,可以承受更多的数据放入 In-Memory,那么可以设置较高的 INMEMORY_AUTOMATIC_LEVEL 值。
例如,服务器有 128GB 内存,数据库实例的其他组件(如 SGA 中的共享池、数据缓冲区等)已经占用了一定内存,通过计算剩余可用内存,如果还有足够的内存可以分配给 In-Memory,就可以考虑提高 INMEMORY_AUTOMATIC_LEVEL。
反之,如果内存资源紧张,需要谨慎设置该参数,避免因 In-Memory 占用过多内存导致其他关键组件或系统性能下降。
例如,服务器内存较小或者同时运行多个内存密集型应用,就需要根据实际可用内存来平衡 In-Memory 的内存分配,可能选择较低的参数值。
CPU 和 I/O 性能
虽然 INMEMORY_AUTOMATIC_LEVEL 主要与内存相关,但也需要考虑 CPU 和 I/O 性能的平衡。如果 CPU 利用率已经很高,将更多数据放入内存可能会增加 CPU 的负担,此时需要综合考虑调整参数。
例如,通过性能监控发现 CPU 使用率长期在 80%以上,而增加 In-Memory 可能会导致更多的数据处理和计算,进一步提高 CPU 使用率,这时就需要重新评估 INMEMORY_AUTOMATIC_LEVEL 的设置,避免因 CPU 过载而影响整体性能。
同时,观察磁盘 I/O 性能,如果磁盘 I/O 是系统性能的瓶颈,提高 INMEMORY_AUTOMATIC_LEVEL 以减少磁盘 I/O 可能会带来性能提升。但如果 I/O 不是主要瓶颈,过度调整该参数可能不会带来明显的性能改善。
三、进行性能测试和监控
模拟不同参数值下的性能
在测试环境中,设置不同的 INMEMORY_AUTOMATIC_LEVEL 值,模拟实际的工作负载进行性能测试。可以使用数据库性能测试工具或自定义的测试脚本,记录不同参数值下的查询响应时间、吞吐量、资源利用率等指标。
例如,先将参数值分别设置为 LOW、MEDIUM、HIGH,运行相同的一组查询或事务操作,比较它们在不同参数值下的性能表现。如果发现某个参数值下查询响应时间明显缩短,吞吐量增加,且系统资源利用合理,那么这个值可能是一个较好的选择。
持续监控生产环境
在生产环境中,使用数据库性能监控工具持续监控数据库的性能指标。观察随着时间推移和数据量、工作负载的变化,当前的 INMEMORY_AUTOMATIC_LEVEL 值是否仍然合适。
例如,定期分析查询响应时间的变化趋势、内存使用情况、In-Memory 命中率等。如果发现性能下降或者资源利用不合理,就需要重新评估 INMEMORY_AUTOMATIC_LEVEL 的设置。
可以根据监控数据进行逐步调整和优化,每次调整后观察一段时间,确保性能的稳定性和提升。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏