
我们现在的软件的数据量比较庞大,大概 200-300 万的节奏,用户希望可以将我们的数据以图表的方式,用 select 语句查询到的数据大概有 1w 以上,如果显示在图表上的话,会很慢,影响用户体验。请问如何优化呢? 其实,编程不仅仅是实现功能,内部的优化才是真正体现功力的地方,以前的编程过于注重业务逻辑,而忽视性能优化,这的确是个错误啊!
1 swcat 2018 年 9 月 6 日 via Android 缓存,定时更新 |
2 fangchang 2018 年 9 月 6 日 materialize |
3 lovelybear OP @fangchang C# WPF 的 |
4 lovelybear OP @swcat 嗯,具体如何操作呢?比如写个类定时更新,然后缓存进内存或者是文件? |
5 swcat 2018 年 9 月 6 日 via Android function getData() { if (cache.hasExpired() ) { cache.update() } return cache.data } hasExpired 方法就是你的更新策略, 如果写少读多,可以设置为最后更新时间 不确定就弄成定时更新 |
6 swcat 2018 年 9 月 6 日 via Android 写进文件还是内存看情况啊 |
&nbs; 7 lihongjie0209 2018 年 9 月 6 日 图表是什么数据? 报表: 统计性的 或者是地图: 展示型的 对于统计型 如果数据是只读的, 那么你可以提前计算好, 存哪里无所谓, 然后展示给用户看 如果数据是可写的, 那么就需要你动态计算了, 也就是你提到的会卡 以上两种方法的混合解决方案: 首先定时计算, 但是这个数据可能是不准确的, 因为数据还可写, 在每次更新数据的时候重新计算一遍, 最佳退化到只读的情况, 最差退化到可写的情况. 对于展示型的数据: 展示粒度没必须要那么细, 一万条数据 1000 条展示个大概, 放大的时候再加载嘛 |
8 F281M6Dh8DXpD1g2 2018 年 9 月 6 日 via Android 预先计算,近似估计 |
9 mingyun 2018 年 9 月 6 日 clickhouse 了解下 300 亿数据查询几秒 |
10 lovelybear OP @lihongjie0209 就是 chart 控件 |
11 owenliang 2018 年 9 月 7 日 via Android elasticsearch 间隔取样 |
12 Eoston 2018 年 9 月 7 日 数据采样 |
13 lovelybear OP |
14 Eoston 2018 年 9 月 13 日 @lovelybear 对这一万条数据每隔 10 条取一条,然后综合返回给前端~~数据量特别大的时候,可以用多线程对拿到的数据分组,每组里面隔一定的数据取出来 |
15 lovelybear OP @Eoston 多谢,问题已经解决了,隔 50 取一条 |