首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    openGaussPostgreSQL vacuum full源码解析

    pg和opengauss通过vacuum过程来清理无效的元组,普通的vacuum只清理死元组,释放的页面空闲空间新元组可以使用,但不会反映到磁盘上,而vacuum full会进行重组,保留页面最小大小,...在源码中普通vacuum和vacuum full并不是放在一起的,vacuum full是和cluster过程放在一起的。...This is now also used for VACUUM FULL....我整理了一下vacuum full的大体函数结构和调用关系,这里只列出对于一个普通表的vacuum full操作的主要步骤,当然对于分区表和toast表有一些额外的处理,不再列出。 ?...,做完之后竟然惊奇的发现这个索引(索引名没变,索引oid变了)变成了可用的索引,查询也能正常走到索引,看了源码后现在就明白了,vacuum full中途会进行索引的重建。

    1.3K20

    频繁Full GC如何优化?

    前言 我们在面试时,经常会被面试官问到:线上服务频繁Full GC该如何优化? 今天这篇文章跟大家一起聊聊这个话题,希望对你会有所帮助。 1. 什么是Full GC?...当老年代空间不足时,JVM会触发Stop-The-World的全局回收(Full GC),暂停所有应用线程。...2.1 实时监控:GC健康度速诊 jstat -gcutil 1000 # 每秒输出GC数据 关键指标解读: OU:老年代使用率 > 90% = 危险区 FGCT:Full GC总耗时...GC次数 15次/天 0次/天 最大暂停 2.8秒 1.2毫秒 方案6:堆外内存治理 现象:堆内存正常,但Full GC频繁 根源:DirectByteBuffer的清理依赖Full GC 防御方案...buffer.release(); 4.实战案例 背景:某支付系统日均交易10亿 症状: 每分钟5次Full GC,暂停4.2秒 99线响应时间从50ms飙升至3秒 排查过程: jstat显示老年代

    38920

    三十万次Full GC

    意外发现 本来应该早就该发现的 再去看日志,发现业务日志基本停止了,但是gc日志一直在刷新,而且都是Full GC,频率很快,差不多2秒一次(一次时间约1.5秒)。...仔细分析日志可以看出,Full GC后回收的内存特别少 jstat -gcutil PID: 发现Full GC高达三十多万次 这个时候我们基本确定是因为系统内存占用量太大,导致一直Full GC,又因为回收的内存很少...,所以马上又需要再次Full GC,JVM根本没有时间去响应业务请求 而且我们也在其他几台服务器上也发现了同样的问题,只是那些服务器的内存还没有这么满,JVM还有部分时间可以用来响应用户请求 内存泄漏?...至此,问题已经完全定位,元凶也已经找到 原因 内存占用太大,导致内存不足,Full GC过于频繁,JVM无法影响请求 办法 减小模型大小,不同算法实例共享模型 结果 内存占用降下来了,Full GC也恢复到正常的个位数...如果一开始就使用了jstat -gcutil PID查看的话,就可以很快的地发现Full GC的问题 知道是Full GC导致响应时长很慢,就明白了为什么相邻的两行日志的时间会差那么多了(因为JVM Stop

    88020
    领券