找回密码
 立即注册

QQ登录

只需一步,快速开始

Jack.Cheng
超级版主   /  发表于:2022-8-26 13:41  /   查看:2578  /  回复:0
本帖最后由 Eric.Liang 于 2022-8-30 14:27 编辑

这篇帖子主要给大家介绍下活字格8.0 update1为提升大家debug体验而推出的新功能:将所有数据库操作的SQL列到日志中
有个客户反馈自己做的活字格应用,移动端页面打开特别慢让我看看咱回事
image.png40212401.png
好家伙,我当时分析了好一段时间,各种猜测,发现他那个主表背后数据量较大,而且没有开启初始化不加载绑定数据。在查询时候图文列表要绘制上百个模板页面出来,一个个放到图文列表里面。
给了他思路后,问题迎刃而解,移动端体验飞速提升。我也松了口气

而在8.1里面,我们解决这个场景的性能问题有了更好的方案,F5运行起来后我们打开Chrome开发者工具并切换到Network选项卡
image.png787637023.png
接下来就是见证奇迹的时刻
image.png429740905.png
有了这个,你就能够知道请求背后的SQL语句是什么样的,时间也能看到。要是耗时过长,咱一眼就看出来了。
image.png274026183.png
对于请求中和数据库存在多次交互的情况,我们会以一个列表展示,点开后你可以看到每个SQL的信息和耗时
image.png778905639.png
如果SQL是动态生成的,也就是存在参数传递与置换,那么我们会用OriginalSql表示替换参数前的SQL语句
  1. select a.[图号] as C0,a.[合同号] as C1,a.[项目号] as C2,a.[订单号] as C3,a.[子图号] as C4,a.[工序序列] as C5,a.[原料规格] as C6,a.[工件数量] as C7,a.[原料材质] as C8,a.[已经入库数量] as C9,a.[图片] as C10,a.[FGC_Rowversion] as C11,a.[ID] as C12 from [main].[合同表] as a Where a.[图号] LIKE @p0 OR a.[子图号] LIKE @p0 ORDER BY a.[ID] ASC
复制代码
用Sql表示替换后实际执行的SQL
  1. select a.[图号] as C0,a.[合同号] as C1,a.[项目号] as C2,a.[订单号] as C3,a.[子图号] as C4,a.[工序序列] as C5,a.[原料规格] as C6,a.[工件数量] as C7,a.[原料材质] as C8,a.[已经入库数量] as C9,a.[图片] as C10,a.[FGC_Rowversion] as C11,a.[ID] as C12 from [main].[合同表] as a Where a.[图号] LIKE "%1%" OR a.[子图号] LIKE "%1%" ORDER BY a.[ID] ASC
复制代码
image.png924468994.png
用这个表示参数替换的过程,Name表示参数名,Value表示参数的值。

嘻嘻嘻,这个功能是不是很棒鸭~这里还有个隐藏技巧
image.png393727721.png
选中你希望复制的参数,右键可以把值复制出来。拿到SQL后,如果你对SQL分析技术有所了解,就可以进行EXLPLAIN分析,看看你的索引是否命中,从而进行深度优化。

通过这个debug新功能,你可以对很多数据库设计问题进行分析:
  • 过多的分组
  • 数据库索引设置不当
  • 复杂的数据权限设置
  • ......

后面发现性能问题时候,可以试试咱们这个debug新特性哦
哦哦,还有两个小的提升,一个是我们在设计器预览报表和工作流设计时候背后依赖的无头浏览器PhantomJs,我们在8.0 update1里面替换了一个新的库。另一个是当组合框从存储了大量数据的数据表获取数据时候,我们优化为一次获取500个,当你继续下滑到末尾,会再获取500个,如此继续下去。让组合框在极端情况下表现更加优异
大家平时用感受不到这两个改变,所以就不细说了

评分

参与人数 3满意度 +15 收起 理由
app转转风 + 5
amtath + 5
qtcxc + 5

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部