158
在做筛选功能时,总会遇到响应慢的问题:为什么点击筛选之后,要loading几秒?这类问题又不是功能设计的问题,作为产品的你不会代码,摸不透背后的原理,无疑会抓狂,甚至会想着自己去学开发。 那么下文会带你认识筛选背后的逻辑,理解程序是怎么从数据里筛选出来用户想要的内容,以及提高筛选速度背后的原理,助你更好地和开发做朋友。 本文阅读对象:产品经理(程序猿兄弟慎入) 1. 关于筛选功能 筛选功能是SAAS产品设计中常见的一种功能,从而提高查询效率和准确性。筛选功能的实现通常依赖于SQL查询语句和数据库索引。 2. 影响筛选速度的因素 影响筛选速度的主要因素包括 (1)数据量的大小 (2)索引的使用 (3)查询语句的复杂度 (4)数据库的硬件配置 数据量越大,筛选所需的时间通常越长。索引的使用可以显著提高筛选速度,尤其是对于大表的查询。查询语句的复杂度也会影响筛选速度,复杂的查询语句可能需要更多的计算资源。 3. 为什么要做索引 索引的工作原理类似于书籍的目录,它提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。当执行查询时,数据库系统首先查询索引,然后通过索引找到相关的数据,从而避免了扫描整个表,大大提高了查询效率。 简单理解,索引相当于提前对数据做了归类(目录),从而提高筛选查询速度。而且不同于书籍的只有1个目录,索引可以建多个。同时索引要建立正确才能有效提高筛选速度。 比如下方数据 前提条件:已经分别对区域和户型建立索引(目录) 目标:筛选“天河区3居室”的房子,并且按照房子录入时间倒序排序分页返回结果。 索引可以组合多个字段进行创建,形成多列索引,上述例子可根据字段“区域”和“户型”创建1个索引,那么程序查询流程就变为如下,速度更快 上面只是对索引的简单理解,数据库可能会根据查询条件选择最优的查询路径,不只是“取交集”这种方式,如果想要了解这个内容,可请教研发人员 4. 索引对排序的影响 索引本身就是一种有序的数据结构,类似于书籍的目录。当查询需要排序时,如果排序字段已经建立了索引,数据库可以直接利用索引的有序性来返回排序后的结果,而不需要再进行额外的排序操作。这种方式可以显著减少排序的时间和资源消耗。但这里前提是用户想要的排序规则和索引的排序规则是相同的。 5. 多大数据量要加索引,以及能带来多大速度提升 根据文章《【实验】MySQL多少数据需要建立索引》,当数据量达到几十万条以后,索引的效果显著,能明显提升查询速度。数据量越大,索引越发重要。当数据量达到千万级别时,有无索引可导致性能相差千倍!因此,当数据量达到几十万条以上时,就应该考虑添加索引。 6. 索引怎么建立,是否需要全部字段都加索引 索引的建立需要根据具体的业务场景和查询需求来决定,并非所有字段都需要加索引。应选择区分度高、查询频率高的字段建立索引。 同时,索引的数量应适度,过多的索引会增加维护成本,影响数据更新操作的效率。相当于一本书籍,如果更新的书本内容,每次更新,目录也需要同步更新。那么如果索引(目录)有多个,那么每次更新数据,多个索引都需要同步更新。索引越多,维护成本越高。 7. 单表查询vs多表查询 如果从数据库里面一张数据表就能找到要的数据,那这种情况是最完美。但是1个复杂的系统,不可能用1张表存数据。比如1个电商系统,会存在如下多个表存储信息 如果需要查询某个用户的订单记录,结果需要返回:用户昵称、购买商品名称、商品图片、购买时间信息。那这种情况就需要联合用户表、订单表、商品表查询,才能获取想要的结果。 表关联过多确实会影响数据库查询速度。在进行多表关联查询时,尤其是涉及大量数据的表,可能会导致查询变慢。这是因为MySQL需要处理更多的表顺序和复杂的查询逻辑,从而增加了查询的时间成本。 此外,当使用多个大表进行关联查询时,如果其中一张表的数据量非常大,那么查询效率会进一步降低。在这种情况下,可以通过优化索引设计来提高查询效率。 8. 数据库服务器cpu满了?是什么意思? CPU 是计算机的大脑,负责执行和处理各种任务和程序运行所需的所有指令和计算。CPU 使用率是指计算机的中央处理单元 (CPU) 消耗的处理时间量。 当你在计算机上运行程序或执行任务时,CPU 会处理并执行指令。CPU 使用率表明在任何给定时间有多少 CPU 容量被利用。它以百分比来衡量,100% 代表 CPU 处理能力的完全利用率。 当数据库服务器的CPU满载时,可能会导致系统响应变慢或完全停止响应。在运维过程中,经常会遇到MySQL数据库占用CPU过高的情况,导致系统性能下降,甚至引发系统崩溃。 导致CPU满载的原因可能有如下两种: 1、自身服务导致 如果代码出错或业务发展访问量增加所导致的,如果是代码出错的话,那么就需要开发人员细心检查优化代码,紧急处理的话就是重启服务或者是服务器。如果是本身业务发展迅速导致的话,就建议及时升级配置,这种情况重启服务基本上没有什么用,因为CPU会马上跑满。 2、中毒导致 如果是中毒导致的CPU爆满,要立刻关闭进程,并使用杀毒工具进行病毒查杀。 本文来源@口述产品 。未经作者许可,禁止转载 文章来源:“口述产品”,未经允许不得转载。 文章代表作者观点,版权归原作者所有,热传平台仅提供信息存储空间服务。 |
2024-09-29
2024-09-26
2024-09-26
2024-09-24
2024-09-24
2024-09-24
2024-09-24
2024-09-22