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

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

时间:2023-04-06 10:14:26浏览次数:52  
标签:活字 性能 外键 数据库 访问 主键 页面

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

大家都知道,活字格作为企业级低代码开发平台,拥有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接口

 

标签:活字,性能,外键,数据库,访问,主键,页面
From: https://www.cnblogs.com/powertoolsteam/p/17291757.html

相关文章

  • 第二十四篇 最佳实践 - 性能
    bycaixin深圳前端性能优化最佳实践客户端性能、服务器端、网络性能1、页面内容减少HTTP请求数减少DNS查询避免重定向缓存Ajax请求延迟加载预先加载减少DOM元素数量划分内容到不同域名尽量减少iframe使用避免404错误2、服务器使用CDN添加Expi......
  • mysql 两百万数据 深分页性能优化
    --ddlCREATETABLE`student`( `id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键', `user_no`varchar(50)DEFAULT''COMMENT'学号', `user_name`varchar(50)DEFAULT''COMMENT'姓名', `score`decimal(10,2)DEFAU......
  • Redis核心知识之—— 时延问题分析及应对、性能问题和解决方法【★★★★★】...
     参考网址:Redis常见的性能问题和解决方法:http://www.searchdatabase.com.cn/showcontent_63439.htmRedis主从配置详细过程:http://sofar.blog.51cto.com/353572/861276 读后感:1、在架构设计中,有“分流”一招,说的是将处理快的请求和处理慢的请求分离来开,否则,慢的影响到了快的,让快的......
  • Android性能优化总结
    这是来自一位粉丝「MeloDev」的投稿,讲真,我这里投稿的不少,但是只有我自己觉得很不错的才会通过,这篇文章我觉得对大家有用,而且性能优化也算是我面试必问的一个话题了,所以这里推荐给大家。微信不支持链接,可点击「阅读原文」查看原文。写在前面公司给了我一周的时间去学习Android性能的......
  • 使用benchmark比较循环嵌套与strassen求解矩阵乘法的性能
    #include<benchmark/benchmark.h>#include<iostream>#include<random>#include<vector>usingnamespacestd;staticconstintn=200;staticconstint_lrange=0;staticconstint_rrange=10;staticconstint_iter=1;us......
  • 【Linux】性能调优命令
    进程性能pidstatcat/proc/5598(PID)/statusfreepstoppstreepgrepvmstat#使用top命令,查找pid$top#通过TOP-H-p进程ID,找到具体的线程占用情况$top-H-p21564#通过命令pstack进程ID显示线程堆栈\$pstack24714Java相关参考文档:https://qinxuew......
  • MYSQL大批量数据插入的性能问题
    批处理rewriteBatchedStatements=true项目原来使用的大批量数据插入方法是Mybatis的foreach拼接SQL的方法。我发现不管改成MybatisBatch提交或者原生JDBCBatch的方法都不起作用,实际上在插入的时候仍然是一条条记录的插,速度远不如原来Mybatis的foreach拼接SQL的方法。这对于常......
  • 一个Web报表项目的性能分析和优化实践(六):设置MySQL的最大连接数(max_connections)
    在上一篇文章中"一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例"提到,项目中新增几个数据库后,数据库最大连接数达到了默认的最大值100。此时,如果再创建连接,就会报错(TooManyConnections)。因此,需要手动设置MySQL的最......
  • 一个Web报表项目的性能分析和优化实践(四):MySQL建立索引,唯一索引和组合索引
    先大致介绍下项目的数据库信息。数据库A:主要存放的通用的表,如User、Project、Report等。数据库B、C、D:一个项目对应一个数据库,而且这几个项目的表是完全一样的。数据库表的特点A中的表:数据量几乎都比较小,比如User表中用户数,顶多也就几百上千。B中的表:X/Y/Z3张表几乎是确定的,Data表......
  • 6·2HTTPS协议概述|6·32HTTPS使用成本|6·42HTTPS对性能的影响|6·52HTTPS常见问题
    HTTPS可以认为是HTTPS+TLSTLS是传输层加密协议,它的前身是SSL协议HTTPS功能介绍 内容加密 非对称密钥交换 对称内容加密 身份认证 数字证书 数据完整性 HTTPS使用成本 证书费用以及更新维护 HT......