呼伦贝尔网站建设 设计wordpress域名邮箱设置
news/
2025/9/22 19:45:38/
文章来源:
呼伦贝尔网站建设 设计,wordpress域名邮箱设置,做网站页面视频教学,安全文化建设示范企业文章目录 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划83.1 MOT内存规划83.2 存储IO83.3 容量需求 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划
本节描述了为满足特定… 文章目录 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划83.1 MOT内存规划83.2 存储IO83.3 容量需求 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划
本节描述了为满足特定应用程序需求在评估、估计和规划内存和存储容量数量时需要注意的事项和准则以及影响所需内存数量的各种数据例如计划表的数据和索引大小、维持事务管理的内存以及数据增长的速度。
83.1 MOT内存规划
MOT是一种内存数据库存储引擎IMDB其中所有表和索引完全驻留在内存中。 说明 内存存储是易失的需要电力来维护所存储的信息。磁盘存储是持久的写入磁盘是非易失性存储。MOT使用两种存储既把所有数据保存在内存中也把事务性更改同步通过WAL日志记录到磁盘上以保持严格一致性使用同步日志记录模式。 服务器上必须有足够的物理内存以维持内存表的状态并满足工作负载和数据的增长。所有这些都是在传统的基于磁盘的引擎、表和会话所需的内存之外的要求。因此提前规划好足够的内存来容纳这些内容是非常有必要的。
开始可以使用任何数量的内存并执行基本任务和评估测试。但当准备好生产时应解决以下问题 内存配置 openGauss数据库和标准Postgres类似其内存上限是由max_process_memory设置的该上限在postgresql.conf文件中定义。MOT及其所有组件和线程都驻留在openGauss进程中。因此分配给MOT的内存也是在整个openGauss数据库进程的max_process_memory定义的上限内分配。 MOT为自己保留的内存是max_process_memory的一部分。可以通过百分比或通过小于max_process_memory的绝对值定义。这个部分在mot.conf配置文件中由min / maxmotglobal / local_memory配置项定义。 max_process_memory中可以除了被MOT使用的部分之外必须为PostgresopenGauss封装留下至少2GB的可用空间。为了确保这一点MOT在数据库启动过程中会进行如下校验 (max_mot_global_memory max_mot_local_memory) 2GB max_process_memory如果违反此限制则调整MOT内存内部限制最大可能地满足上述限制范围。该调整在启动时进行并据此计算MOT最大内存值。 说明 MOT最大内存值是配置或调整值max_mot_global_memory max_mot_local_memory的逻辑计算值。 此时会向服务器日志发出警告如下所示 以下是报告问题的警告消息示例 [WARNING] Configuration MOT engine maximum memory definitions (global: 9830 MB, local: 1843 MB, session large store: 0 MB, total: 11673 MB) breach GaussDB maximum process memory restriction (12288 MB) and/or total system memory (64243 MB). MOT values shall be adjusted accordingly to preserve required gap (2048 MB). 以下警告消息示例提示MOT正在自动调整内存限制 [WARNING] Configuration Adjusting MOT memory limits: global 8623 MB, local 1617 MB, session large store 0 MB, total 10240 MB 新内存限制仅在此处显示。 此外当总内存使用量接近所选内存限制时MOT不再允许插入额外数据。不再允许额外数据插入的阈值即是MOT最大内存百分比如上所述这是一个计算值。MOT最大内存百分比默认值为90即90%。尝试添加超过此阈值的额外数据时会向用户返回错误并且也会注册到数据库日志文件中。 最小值和最大值 为了确保内存安全MOT根据最小的全局和本地设置预先分配内存。数据库管理员应指定MOT和会话维持工作负载所需的最小内存量。这样可以确保即使另一个消耗内存的应用程序与数据库在同一台服务器上运行并且与数据库竞争内存资源也能够将这个最小的内存分配给MOT。最大值用于限制内存增长。 全局和本地 MOT使用的内存由两部分组成 全局内存全局内存是一个长期内存池包含MOT的数据和索引。它平均分布在NUMA节点由所有CPU核共享。 本地内存本地内存是用于短期对象的内存池。它的主要使用者是处理事务的会话。这些会话将数据更改存储在专门用于相关特定事务的内存部分称为事务专用内存。在提交阶段数据更改将被移动到全局内存中。内存对象分配以NUMA-local方式执行以实现尽可能低的延迟。 被释放的对象被放回相关的内存池中。在事务期间尽量少使用操作系统内存分配malloc函数避免不必要的锁和锁存。 这两个内存的分配由专用的min/max_mot_global_memory和min/max_mot_local_memory设置控制。如果MOT全局内存使用量太接近最大值则MOT会保护自身不接受新数据。超出此限制的内存分配尝试将被拒绝并向用户报告错误。 最低内存要求 在开始执行对MOT性能的最小评估前请确保 除了磁盘表缓冲区和额外的内存max_process_memory在postgresql.conf中定义还有足够的容量用于MOT和会话由mix/max_mot_global_memory和mix/max_mot_local_memory配置。对于简单的测试可以使用mot.conf的默认设置。 生产过程中实际内存需求 在典型的OLTP工作负载中平均读写比例为80:20每个表的MOT内存使用率比基于磁盘的表高60%包括数据和索引。这是因为使用了更优化的数据结构和算法使得访问速度更快并具有CPU缓存感知和内存预取功能。 特定应用程序的实际内存需求取决于数据量、预期工作负载特别是数据增长。 最大全局内存规划数据和索引大小 要规划最大全局内存需满足 确定特定磁盘表包括其数据和所有索引的大小。如下统计查询可以确定customer表的数据大小和customer_pkey索引大小 数据大小选择pg_relation_size‘customer’索引选择pg_relation_size‘customer_pkey’ 额外增加60%的内存相对于基于磁盘的数据和索引的当前大小这是MOT中的常见要求。 额外增加数据预期增长百分比。例如 5%月增长率 80%年增长率1.05^12。因此为了维持年增长需分配比表当前使用的还多80%的内存。 至此max_mot_global_memory值的估计和规划就完成了。实际设置可以用绝对值或Postgres max_process_memory的百分比来定义。具体的值通常在部署期间进行微调。 最大本地内存规划并发会话支持 本地内存需求主要是并发会话数量的函数。平均会话的典型OLTP工作负载最大占用8MB。此值乘以会话的数量再加一点额外的值。 可以通过这种方式进行内存计算然后进行微调 SESSION_COUNT * SESSION_SIZE (8 MB) SOME_EXTRA (100MB should be enough)默认指定Postgres最大进程内存默认为12GB的15%。相当于1.8GB可满足230个会话即max_mot_local内存需求。实际设置可以用绝对值或Postgres max_process_memory的百分比来定义。具体的值通常在部署期间进行微调。 异常大事务 某些事务非常大因为它们将更改应用于大量行。这可能导致单个会话的本地内存增加到允许的最大限制即1GB。例如 delete from SOME_VERY_LARGE_TABLE;在配置max_mot_local_memory设置和应用程序开发时请考虑此场景。 说明 有关配置的更多信息请参阅**内存MOT)**部分。
83.2 存储IO
MOT是一个内存优化的持久化数据库存储引擎。需要磁盘驱动器来存储WAL重做日志和定期检查点。
推荐采用低延迟的存储设备如配置RAID-1的SSD、NVMe或者任何企业级存储系统。当使用适当的硬件时数据库事务处理和竞争将成为瓶颈而非IO。
由于持久性存储比RAM内存慢得多因此IO操作日志和检查点可能成为内存中数据库和内存优化数据库的瓶颈。但是MOT具有针对现代硬件如SSD、NVMe进行优化的高效持久性设计和实现。此外MOT最小化和优化了写入点例如使用并行日志记录、每个事务的单日志记录和NUMA-aware事务组写入并且最小化了写入磁盘的数据例如只把更改记录的增量或更新列记录到日志并且只记录提交阶段的事务。
83.3 容量需求
所需容量取决于检查点和记录的要求如下所述 检查点 检查点将所有数据的快照保存到磁盘。 需要给检查点分配两倍数据大小的容量。不需要为检查点索引分配空间。 检查点 2 x MOT数据大小仅表示行索引非持久。 检查点之所以需要两倍大小是因为快照会保存数据的全部大小到磁盘上此外还应该为正在进行的检查点分配同样数量的空间。当检查点进程结束时以前的检查点文件将被删除。 说明 在下一个openGauss版本中MOT将有一个增量检查点特性这将大大降低存储容量需求。 日志记录 MOT日志记录与基于磁盘的表的其它记录写入同一个数据库事务日志。 日志的大小取决于事务吞吐量、数据更改的大小和检查点之间的时间每次检查点重做日志被截断并重新开始扩展。 与基于磁盘的表相比MOT使用较少的日志带宽和较低的IO争用。这由多种机制实现。 例如MOT不会在事务完成之前记录每个操作。它只在提交阶段记录并且只记录更新的增量记录不像基于磁盘的表那样的完整记录。 为了确保日志IO设备不会成为瓶颈日志文件必须放在具有低延迟的驱动器上。 说明 有关配置的更多信息请参阅存储MOT)。 点赞你的认可是我创作的动力 ⭐️ 收藏你的青睐是我努力的方向 ✏️ 评论你的意见是我进步的财富
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910167.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!