活字格性能优化技巧(1)——如何利用数据库主键提升访问性能

活字,性能,优化,技巧,如何,利用,数据库,主键,提升,访问 · 浏览次数 : 297

小编点评

** chết了!活字格低代码应用页面访问速度特别慢,到底有什么错?** 在葡萄城官网分享的一个例子,一位格友发现利用活字格开发的应用页面访问速度特别慢,打开页面时间足足花费了2分钟。经过分析,工程师发现格友开发的应用确实使用活字格开发,在访问策略上也确实使用了分页的方式,那怎么还是这么慢呢? 为了快速定位问题,葡萄城的工程师特意远程连接到应用现场,看看如何解决客户的困扰。工程师发现格友开发的应用确实是使用活字格开发,在访问策略上也确实使用了分页,那怎么还是这么慢呢?为了更深入的了解问题,特意对数据库进行调查。通过使用数据库访问语句:SELECT COUNT(column_name) FROM table_name 发现在800万+数据量的数据库中知行上述语句花费的时间大约为2分钟。 **作者的宝藏提示:** 1. 数据库主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。 2. 索引的作用相当于图书的目录,可以根据目录中的页面快速找到所需的内容。 3. 在实际使用过程中,要主要:数据库的每张表只能有一个主键,不可能有多个主键。

正文

本文由葡萄城技术团队于博客园原创并首发
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

大家都知道,活字格作为企业级低代码开发平台,拥有6大引擎,3大能力,能够高效落地企业级应用。在每年的应用大赛中也能看到很多格友利用活字格做了很多复杂的应用,例如2021年企业级低代码应用大赛中宁波聚轩利用活字格做的“轴管通”,集成了ERP、MES、WMS和设备机联网系统,为轴承行业开发出一套专业化、可视化、数字化、物联化、精细化的轴承管理平台,既大气,又实用。但最近有格友反馈,为什么利用活字格开发出来的应用,页面访问的速度特别慢,是不是低代码开发平台开发出来的应用性能就这么“低效”呢?

先来跟大家分享一个例子,看看你是不是也有类似的困扰。

有一位格友利用活字格开发了一套应用系统,在系统中使用的数据库是sqlserver。数据库内主要保存了司机的位置,数据量约有800多万行。由于业务访问需要,希望把这个表中的一些数据展示在使用活字格的开发的页面中。考虑到数据量比较大,在页面端采用分页的方式会提升用户访问的效能,优化访问体验。看起来这个方案非常的完美,可是实际上的效果却不尽人意。当打开使用活字格做出来的页面时,打开的时间足足花费了2分钟。真是不可思议,为什么会这样呢?

为了快速定位问题,葡萄城的工程师特意远程连接到应用现场,看看如何解决客户的困扰。工程师发现格友开发的应用确实是使用活字格开发,在访问策略上也确实使用了分页,那怎么还是这么慢呢?为了更深入的了解问题,特意对数据库进行调查。

通过使用数据库访问语句:

SELECT COUNT(column_name) FROM table_name

 

发现在800万+数据量的数据库中知行上述语句花费的时间大约为2分钟。

备注:在执行数据库指令时并没有使用活字格,而是直接在数据库中执行。

到底是因为什么原因导致应用访问效率这么低?在解开谜底之前,先给大家说明几个简单的概念。数据库的主键、外键和数据库索引。

数据库主键:指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可以强制表的实体完整性。主键主要是用与其他表的外键关联,以及本记录的修改与删除。除了能够保证实体的完整性,主键还能加速数据库的操作速度。

数据库外键:外键是用于建立和加强两个表数据之间链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。

数据库索引:在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值得集合和相应的指向表中物理标识这些值得数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页面快速找到所需的内容。索引可以有效提高查询排序的速度。

再来举个通俗的例如方便大家理解:我们可以把数据库比做一个小区,每个人就是具体的“数据”,每个家就是一张表。为了方便找到人,通常会为每个家一个唯一的门牌号。我们可以认为这就是主键。那什么是外键呢?当你想和其他房间的人建立关联关系时,会找一个双方都认可的人,作为联系人,这个人就是外键。而索引就是别人为了开始找到你,会先去问下小区的保安,他那边会有一个全小区的住户和房子的联系表,这样你就不用一家家的去敲门了。(以上例子参考“程序员阿常”的分享)

看了上面的分享,大家可能已经猜到问题的解法了。没错,葡萄城的工程师尝试给这个表设置主键,如下图所示:

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

 

 

数据库执行了10分钟,设置主键完毕。采用刚才的方法又重新测试了一下,使用相同的查询语句,执行结果为“秒开”。重新在活字格中连接该数据库,打开页面的时间只需要1秒钟。
看到这里大家已经掌握了提升访问性能的一个非常重要的方法:主键。在实际使用的过程中大家要主要:数据库的每张表只能有一个主键,不可能有多个主键;主键的主要作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

我们来一起看看如何在活字格中使用主键。如果您使用的是活字格内置的数据库,那这个问题不用担心。活字格内置的数据库自带主键,就是图中画了一个小钥匙的这一列。

(活字格内置数据库)

 

如果您使用外部数据库的话,在设计数据库的时候一定要记得设置主键。遇到连接进来没有小钥匙的情况一定要多加注意。

(没有设置主键的情况)
将他改成

(设置主键的情况)

最后再跟大家分享一个案例来说明设置主键的重要性:在一位格友开发的应用中,系统访问了一个规模在3500万行的数据库。用户在访问页面时,每次需要显示200条数据,采用分页显示的模式。在活字格中采用动态加载的方式,实际页面加载的速度约为1秒钟。

到这里我们就为大家讲完了利用数据库主键提升访问性能的第一部分,在第二部分中我们会继续为大家介绍如何在大规模数据量的场景下提升数据访问效率。

 

拓展阅读

远离勒索病毒,如何在Linux上安装活字格低代码服务管理器?

万物皆可集成系列:低代码对接微信小程序

万物皆可集成系列:低代码对接Web Service接口

 

与活字格性能优化技巧(1)——如何利用数据库主键提升访问性能相似的内容:

活字格性能优化技巧(1)——如何利用数据库主键提升访问性能

本文由葡萄城技术团队于博客园原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 大家都知道,活字格作为企业级低代码开发平台,拥有6大引擎,3大能力,能够高效落地企业级应用。在每年的应用大赛中也能看到很多格友利用活字格做了很多复杂的应用,例如2021年

活字格性能优化技巧(2)-如何在大规模数据量的场景下提升数据访问效率

本文由葡萄城技术团队于博客园原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 在上节内容中我们介绍了如何利用数据库主键提升访问性能,本节内容我们继续为大家介绍如何在大规模数据量的场景下提升数据访问效率。 在开始之前先做个小小的实验: 1. 准备一张

活字格性能优化技巧(3):如何巧用CDN提升含页面的访问速度

本文由葡萄城技术团队于博客园原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 上两篇中我们分享了如何利用数据库主键和表格设置默认不加载数据来提升应用系统访问的性能。在本篇中一起来看看如何在活字格中利用CDN技术来提升页面的访问速度。在此之前,先看看

不只是负载均衡,活字格智能集群的架构与搭建方案

还在单机服务器,时刻面临宕机风险吗? 优化程度不够,响应速度缓慢,系统工作响应像老汉拉车吗? 为了帮助大家具备企业级应用的部署能力,轻松应对核心业务系统的部署要求,我们准备了《活字格智能集群的架构与搭建方案》高级教程。 作为一款优秀的企业级低代码开发平台,活字格除了本身开发集成的强大功能之外,负载均

万物皆可集成系列:低代码对接Web Service接口

我们知道活字格支持不写代码实现双向API绑定,那么没那么主流的Web Service接口(SOAP协议+XML交互格式)呢?其实对接的思路没有那么复杂,得用C#编码来对接的。 作为一款企业级低代码开发平台,活字格可以和许多第三方软硬件进行集成,灵活、高效使它不可忽视的优势。在之前的内容中我们已经介绍

远离勒索病毒,如何在Linux上安装活字格低代码服务管理器?

本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 活字格低代码开发平台由可视化设计器和服务管理器构成,开发者使用设计器构建Web应用,测试无误后即可将应用进行打包,并发布到服务管理器上。服务管理器会加载设计器发布的应用

ChatGPT赋能低代码开发:打造智能应用的双重引擎

摘要:本文摘自葡萄城低代码产品活字格的资深用户(格友超哥)所撰写的文章:《惊叹表现!活字格+ChatGPT:低代码开发智能应用的巨大潜力》。 ChatGPT的functions函数使用方 自从OPENAI发布了最新的GPT引擎gpt-3.5-turbo-0613之后,我就对它的functions参数

万物皆可集成系列:低代码对接阿里物流API实现快递跟踪

随着各大电商网购平台的发展,快递业已形成一个规模庞大的产业,据统计,全球快递企业已超过千家,而快递查询对于电商平台而言是最基础的功能之一,通过输入快递单号,不用区分具体是哪家快递公司,即可查询到快递的实时状态。目前的主流方法都是调用第三方快递查询接口,下面就介绍一下在活字格中如何调用API接口来进行

集群部署看过来,低代码@AWS智能集群的架构与搭建方案

为了帮助充分利用AWS的托管服务快速构建起一套集群环境,彻底去掉“单一故障点”,实现最高的可用性,我们准备了**《低代码智能集群@AWS的架构与搭建方案》**看完本文,带你掌握“基于nginx配置服务器集群”。 应用场景 如果你需要解决如下的问题,可以考虑搭建一套活字格@AWS智能集群: 保障系统高

[转帖]3.3.6. 活跃会话历史报告SYS_KSH

https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys-ksh sys_stat_activity 里记录的等待事件是瞬时信息,没有对等待事件的时间进行累计