性能优化中的数据过滤优化

系统中通常会有一些统计和分析的功能,以前我们主要针对结构化数据(关系型数据库存储)进行分析,利用SQL语句来处理。我们会利用过滤条件来过滤数据,这些过滤条件最好能利用上索引,或者利用上内存临时表来做运算,这些都是优化性能的手段。

现在大数据是热点,对于从事大数据分析的从业者来说,好的算法能够提高运算效率。但是算法也不是万能的,数据多到一定的量级,总会遇到瓶颈。此时,我们不仅要在算法上下功夫,还要在业务上下功夫。

当你在享受快乐假期时,可能会收到周围商圈的推荐信息,有没有想过为什么会选中您呢?是巧合嘛?您是被大数据分析过的用户,那么问题来了,这和性能优化有什么关系呢?和数据过滤有什么关系?对于您个体来说,知道您在哪里很简单,但对于服务上来说,商户的潜在客户是您,在商户周边多少千米范围之内的和您一样的游客是商户要推送消息的目标,过亿的移动电话用户,不断移动的位置,商户几分钟之内就能定位到具体的位置。若希望用有限的资源,在有限的时间内来完成数据分析,性能问题就变得辣手了。

我们还是以商户为中心去查询用户在不在周边呢?还是以用户为中心呢去查询周边的商户呢?通常我们会建立一个用户索引(基于经纬度,通常会选择Redis地理位置方案),这个索引周期性的更新,因为人是移动的,然后以商户位置条件去查询用户索引,过滤出目标对象,过滤时的精度(商户与用户的距离)会严重影响性能,所以我们会有精度上的折中,在生成或修改用户索引时就考虑到精度,帮助快速过滤到非目标用户,我们同时可以把用户所在的位置信息按省份分别建立索引,以商户位置为条件检索时范围进一步缩小。

我们换另外一个场景,例如服务商帮我们搜索周边的美食的场景。我们不需要服务商主动推送消息,而是希望手机中的APP根据位置信息定位到我们的坐标(经纬度),然后可以主动用坐标去向服务商查询周边的商家;或者我们给商家的经纬度算出一个值(可以利用Hash算法算出一个值),把我们的位置算出一个值,然后来匹配这两个值的相似性,高度的相似代表距离更近。其实Redis已经有这种地理位置支持,建立地址位置索引,把用户位置(经纬度)作为条件去查询。

有效的数据过滤可以显著减少需要处理的数据量,从而提高查询速度和系统响应时间。

以下是一些关于数据过滤优化的策略和方法

 索引使用

创建索引:为经常用于过滤条件(WHERE子句)的列创建索引可以极大提升查询效率。例如,在数据库查询中,如果某个查询频繁地基于某列进行过滤,那么对该列建立索引能够加快搜索速度。

覆盖索引:设计索引以包含查询所需的所有列,这样可以直接从索引中获取数据而无需访问表,这被称为覆盖索引。

避免全表扫描

当执行过滤操作时,尽量避免全表扫描。确保你的查询语句利用了合适的索引来直接定位到满足条件的数据行,而不是遍历整个表格。

使用分区

对于非常大的表,可以考虑使用分区技术。通过将数据按照某种规则(如日期、地区等)划分为多个部分,可以只对相关的分区进行查询,而不是整个表,从而提高查询效率。

数据预处理

在某些情况下,提前对数据进行预处理可以帮助快速筛选出感兴趣的部分。例如,可以通过ETL(Extract, Transform, Load)过程来清理、转换和加载数据到更适合分析的形式。

合理设计查询

尽量让查询尽可能具体,避免模糊或宽泛的条件。例如,使用精确的日期范围而非“大于某个日期”这样的条件,或者限制返回字段的数量而不是选择所有字段(SELECT *)。

利用缓存机制

如果同样的过滤查询会被多次执行,考虑实现缓存机制来存储最近或最常用的查询结果。这样,当再次请求相同的数据时,可以从缓存中快速读取,而不是重新计算。

数据库层面优化

根据不同的数据库管理系统(DBMS),可能存在特定的优化手段,比如MySQL中的EXPLAIN命令可以帮助理解查询计划,并据此调整索引或查询结构;PostgreSQL则提供了诸如GIN(Generalized Inverted Index)等高级索引类型用于特定场景下的优化。

通过上述措施,可以在很大程度上优化数据过滤的过程,进而提高系统的整体性能。值得注意的是,优化工作应该基于实际的需求和环境来进行,定期监控系统性能并根据反馈调整策略是至关重要的。

阅读后若有收获,不吝关注,分享,在看等操作!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容