当jfinal mysq 遇到数据较多或大数据时,怎么办

发布于 2021-11-30 06:06:15 字数 299 浏览 790 评论 14

@jfinal mysql中的数据记录已有500w+时,用model中提供的Page<M> paginate 方法效果不是很好,我看了源码,里面记录总数时用了select count(*),对于数据量到了一定级别后,性能会大大降低。

请@jfinal帮忙想想,或者已经使用的童鞋,聊一聊jfinal碰到大数据时如何处理的思路。非常感谢!

祝jfinal越来越好!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

野心澎湃 2021-11-30 17:58:02

这不属于jfinal可以管控的范畴了吧。

大数据做数据索引,数据预处理等,以及设计缓存架构,mongo,redis等的使用。

韬韬不绝 2021-11-30 17:57:37

页码太多,不提供最后一页,体验不好

终止放荡 2021-11-30 17:57:26

回复
如果没有查询条件可以缓存count

冷清清 2021-11-30 17:47:52

换一种分页模式,不显示总条目,总页数就好了

只提供下一页上一页的按钮

辞别 2021-11-30 17:47:01

500w,对于mysql开始可以处理的,相应速度也是可以优化的,只是如何能与jfinal结合起来

眼泪淡了忧伤 2021-11-30 17:42:44

500W算不上多大的数据,如果对响应时间要求高需要上lucene。

空城仅有旧梦在 2021-11-30 17:36:11

引用来自“铂金蛋蛋”的评论

记录条目数,我一般使用 select count(1)

拥有 2021-11-30 16:24:22

是的,不清楚@jfinal为何不使用 select count(1) ,而使用了select count(*) 是不是出于其他考虑?

一人独醉 2021-11-30 15:46:27

这种效率应该是一样的吧

回眸一笑 2021-11-30 14:59:49

回复
select count(*) 与 select count(1)哪个更快一直存在争议,经多方查证两者性能一样,但 select count(*) 更常用,所以 jfinal 采用了前者

千纸鹤带着心事 2021-11-30 13:52:25

回复
数据量大了之后,自带的分页方法很慢,有什么好的方法?

倚栏听风 2021-11-30 12:04:33

记录条目数,我一般使用 select count(1)

归途 2021-11-30 10:53:07

学习了

无边思念无边月 2021-11-30 09:47:36

    jfinal 是 web + orm 框架,数据库性能问题取决于开发者,jfinal 提供的分页方式是比较通行的方法。对于数据库性能来说,第一阶段先要对数据库性能进行优化:

   现仅介绍几种常见的数据库优化方法:

1:使用 explain sql语句,查看 sql 是否使用了索引,如果没有使用索引,需要创建索引或者对现有索引进行调整,务必使查询比较逻辑完全在索引之上。特别注意mysql的多条件查询未能用到预期的联合索引的问题。

2:使用 explain sql语句,查看 sql 是否进行了全表扫描,对于数据量大的表进行全表扫描是非常耗时的,必须解除这些全表扫描。这本质上仍然是索引是否被正确应用的问题。

3:使用 show processlist; 查看是否有死锁的 sql,以及查询慢的 sql,也可以使用jfinal提供的DruidPlugin 查看 sql 执行统计。

4:优化代码,尽量消除不必要的带  select * 的 sql,而用 select a,b,c 这样的具体字段来取代,减少io及网络传输数据量,可以通过 iotop 查看数据库的 IO 是否太高。

5:对于较长进行写入操作的表,不要使用 myisam 引擎,此引擎在写入表时会引起锁表。

6:对于频繁写表而实时性要求不高的数据进行必要的优化,例如,article 表的 click_count 字段,是用来记录点击量的,不要实时进行写入,而是先写缓存,再延迟定期写入累加后的值。

7:优化数据库配置文件,例如增大各类缓存大小

   如果优化做到极限后再次碰到性能瓶颈,就要引入其它技术手段来解决,例如使用集群,引入 cache、luncene。甚至需要实现特定于业务的架构来提升性能。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文