查看原文
其他

【建模】ERP日志分表,提升海量日志存取性能

天小际 明源云天际PaaS平台 2022-09-10



背景简介

现有业务系统在经过长时间运行后,普遍会存在日志表数据量过大,导致sql语句执行效率降低,数据清理时间长,磁盘IO高,allwayson同步严重延时等情况。

虽然业务系统中有数据清理功能来清理已归档日志,但DELETE语句删除数据的同时也会产生大量的数据库事务日志。不仅占用了大量磁盘空间,严重时会耗尽磁盘空间导致日志数据库无法访问影响正常的功能。



解决方案

日志类型分表:实体变更日志、异常日志、OA单点登录日志、性能日志、开放API调用日志、用户行为日志。

1、日志存储:按日期分表,使用 日志类型_yyyyMMdd 格式多表存储,例如:LogException_20201001。

2、日志查询:通过日期范围,读取日志分表,使用Union All拼接子查询当前归档范围内的日志表,并且使用和原表名相同的两个视图兼容分表前的日志数据、归档数据的查询操作。

3、日志清理:已归档表数据使用drop语句删除整张表,减少事务日志的产生。



如何切换至日志分表存储模式

决条件需同时满足调度服务v2.2.8.1、ERPv2.2.8.1 及以上的版本,才支持日志分表存储。功能开关是否开启“分表存储”取决于Log库中是否存在LogException、LogOALogin、LogPerformance、LogPublicService、LogUserBehavior、LogEntityChanged、LogEntityChangedDetail中的任意一张表。空Log库会被识别为“新客户”默认开启“分表存储”,功能开关存储在Log库的LogDbSetting表中标识名称为"EnableSplitTableStorage"。历史客户启用新版日志分表存储方式可参考最新的日志管理文档指引 (具体可以咨询天际技术顾问)。

提示:ERP、调度服务运行中时不可修改开关,即使系统停止时也不建议手工修改数据关闭“分表存储”。

最终效果:

▼往期精彩回顾▼【建模】公共脚本与静态资源的配置及使用【建模】真没想到,明源云ERP导航还能这么玩【建模】关于表单字段提示说明,你知道多少?




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存