
# 日志统计法
日志统计法是一种被动式的、较为精准的统计方法。使用这种手段进行FASTPATH_PART调优的基本流程如下：
1. 用户反馈在性能测试环境或生产环境中的某个时间段出现了一批慢SQL；
2. 运维人员通过[GS_ASP](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0903.html#ZH-CN_TOPIC_0000002527826410)或[STATEMENT_HISTORY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0984.html#ZH-CN_TOPIC_0000002527826452)等系统表或系统视图，观察到在该时间段内出现大量LockMgrLock等待事件；
3. 使用unique_sql_id或其他手段，将慢SQL分为几类unique_query。大部分unique_query的主要等待事件均包含LockMgrLock；
4. 运维人员与用户共同确认慢SQL所在事务中可能涉及大量低级别的表锁、索引锁、分区锁的申请；
5. 观察慢SQL在[STATEMENT_HISTORY](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0984.html#ZH-CN_TOPIC_0000002527826452)中的记录的lock_max_fastpath_count字段值是否显著低于当前FASTPATH_PART配置值（小于当前值的50%或趋近于0），同时观察lock_max_global_count字段值是否远超当前FASTPATH_PART配置（达到数倍或更高）；
6. 对gs_log日志"During this transaction, it is recommended to adjust FASTPATH_PART to %u."中的数值进行汇总统计，剔除其中异常值（明显超出正常范围且出现频率极低的数据点）。该统计值的数据来源为：数据库会统计每一个事务对fastpath资源的需求量，如果其需求量大于目前fastpath资源配置的两倍，则会在事务提交时将该需求值记录至gs_log；
7. 若内存资源充足，建议取上一步统计结果的最大值作为新的FASTPATH_PART配置值；若内存资源受限，需根据业务需求权衡：若需降低此类性能问题发生概率，则取上一步统计结果中的较大值；若需预留更多动态内存资源，则取上一步统计结果中的较小值作为新的FASTPATH_PART配置值。调大FASTPATH_PART时，增量内存计算公式为：fastpath增量内存=((fastpath增加量/20)\*8 + fastpath增加量\*12) \* 线程池大小，单位是字节。
#### 优势与劣势
采用该方法进行FASTPATH_PART参数调优的优劣势如下：
- 优势：基于数据库资源需求量统计的调优方法具有较高准确性，若通过以上步骤完成参数调整且业务场景无重大变更，可有效避免因FASTPATH_PART配置不合理引发的LockMgrLock阻塞问题。
- 劣势：该方案属于被动式调优策略，需在测试环境或生产环境完成对应统计数据采集后方可实施优化。
 
