惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
月光博客
月光博客
爱范儿
爱范儿
D
Docker
U
Unit 42
P
Proofpoint News Feed
I
InfoQ
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
V
Visual Studio Blog
IT之家
IT之家
Vercel News
Vercel News
G
Google Developers Blog
M
MIT News - Artificial intelligence
美团技术团队
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog

博客园 - OwenWong

翻下旧资料,发现96年考过foxbase二级 这几年专注于流程管理与RPA落地 关于SSD硬盘 权限模型AGDLP 财务分析的30个基本指标[转] 电子取证工具[转] Odoo-10开发环境配置与测试 AX2012 ERP 维度相关表数据关系图 AX2012 ERP Excel报表方案 软件推荐----数据库数据处理Navicat Premium 软件推荐----截图软件Snagit 软件推荐----RDO(Remote Desktop Organizer) 浅谈企业信息化 经典笔试题型----IT经理(IT Manager) 浅谈数据库日志 数据访问安全--数据库遮罩及断词 Data Masking & Tokenization 浅谈安全(数据安全、网络安全) 流程优优项目流程 产品经理--这绝对是一个非常有价值的岗位
AX2012 ERP “系统慢”调优---跟踪SQL执行,优化代码
OwenWong · 2018-03-28 · via 博客园 - OwenWong

对于用户来说,系统是:慢的,难用的。你看xxx,多好用,多快,多人性化。

对于AX ERP系统也不例外,调优是必须的,调优一般分为几种:

  1. 系统性监测针对瓶劲环节提升,如:用户--应用服务器--DB--存储,整条链下来,网络慢就提升网络,存储慢就改用SSD,内存不足就加内存。这类问题通常最好解决,花最少的钱就能得到最快的效果,比蚁力神还管用。
  2. 应用程序监测,数据库监测,需要调整系统配置等,如AX有DynamicsPerf,系统有性能监视器,观察系统资源不足发生的时间以及现象,分析具体原因,找出对策。应用程序增加缓存、分布式服务,数据库分区,索引优化,数据预读等,此项工作难度系数较高。
  3. 应用程序代码层级调优,通常用户反馈说我打开XX订单、XX报表非常慢,采用此办法解决比较高效。代码调优的思路很简单,减少数据库IO,给用户必需的数据而不是全部。优秀的程序员与一般程序员的差别,这时就体现。

对于ERP类以数据库为基础的应用系统,最重要的就是减少SQL 磁盘IO,必要的时候用空间去换时间(例如,临时表、冗余字段)。有过开发二层CS结构MIS系统经验的程序员,对此比较有体会,无经验的建议看看《代码大全》。数据库调优,通常是跟踪长查询与常用数据,长查询进行SQL plan等优化,常用数据放入cache,Oracle横行的年代,数据库调优最高大上。

这里介绍一个案例,优化第3种,也是最常见的小优化,对用户来说也是最需要的:

用户反馈表单打开速度非常慢,几乎无法工作。现场看了下,很简单的一个界面,应该是程序设计时逻辑问题,造成多次SQL读IO。验证方法如下:

  1. 配置AX 数据库跟踪
  2. 打开用户界面模拟用户操作
  3. 分析收集的SQL数据

用Excel导出透视分析下,发现执行2000次的SQL读。根据提示,打开代码查看,

 

在表行中使用了大量的getxxx,查数据库表返回值。此类字段若有10个,1000行数据,那么就需要执行10000次SQL IO。SQL读同样多的数据,一次IO1000条与每次IO读取一条记录1000次,速度是量级的区别。

找到问题,修改代码完成。