系统数据量大,页面访问缓慢,求解决方案···················

xiaoya317 2008-07-28 11:15:53
加精
首先谢谢各位进入该帖····
哈哈·········
然后说下偶的问题哈···········


第一、web端是php写的,数据库是mysql5.1以上····
第二、根据用户数的不同,数据量非常的大,数据库已经采用了按天分区,即每天一个分区,这样查询的时候能快一些,后台插入数据库的优化工作基本就那样了,现在主要是web端查询显示问题····
第三、查询的显示形式如下:


第四、对web的技术不是很了解,采用Ajax与php结合,能不能改变我现有系统的状况呢?如果能,该怎么弄呢?
第五、如果Ajax不行的话,那就要采取其他方式,比如自己写控件,让其数据在控件中显示,达到数据缓存的效果,那么写控件的话是才用java 的applet呢?还是用c++的atl呢? 写控件的话能达到web性能优化的效果吗?

第六、55555555555,疑问比较多,求高人一起讨论和解答············
...全文
7243 129 打赏 收藏 转发到动态 举报
写回复
用AI写文章
129 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaxf 2012-02-17
  • 打赏
  • 举报
回复
mark
steely_chen 2012-02-10
  • 打赏
  • 举报
回复
查询数据的地方做优化

1. 使用缓存技术,这个缓存可以存入服务器或客户端,根据系统功能自己决定,不过看你的系统应该是内部系统。缓存设置过时时间,也就是每多久要更新一下缓存。在更新缓存的方法要使用同步声明,不要让N个同一时间的请求都去访问数据库。
2. 对展示的数据进行分组,比如先根据ip分组,点击ip后展示的页面根据访问的路径分组。展示草图大至如下
2.1 根据ip分组展示
IP 访问数量
192.168.1.1 10
192.168.1.2 15
2.3 点击ip或访问总量再展示如楼主截图中的数据,不过我还是比较建议使用分组,比如
目标地址 访问总量
http://xxx.xxx.xxx/001/001.jsp 5
http://xxx.xxx.xxx/001/002.jsp 3

根据楼主的截图,拿数据库中的全部数据后一五一十的展示出来没有太大的意义。至于缓存的使用方法我也在此简单说一下,但要根据自己的实际项目自己编写适合的代码

static Map<String,long> cacheTimeOut = new HashMap<String,long>(); //存放缓存过期时间
static Map<String,long> cacheValue = new HashMap<String,long>(); //存放缓存值

cacheTimeOut.put(yourKey,youCacheTime); //这里的key最好是sql的查询条件。
cacheValue.put(sameKey,yourValue);

在此也发个广告:本人正在找一份工作,最好是跟云计算相关的,目标地点深圳。联系qq:402279001 ,邮件:javajavajava@yeah.net




neverJava 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 liukang520236 的回复:]

AJAX貌似可以解决你的问题,但是你得告诉你的客户,他们必须容忍第一次打开画面是的慢。
我上个项目就是这样解决的,百万级的数据量,初次检索会很慢。
[/Quote]


+1
gyro 2011-08-30
  • 打赏
  • 举报
回复
没具体业务需求,怎么分析优化。
如果对方的要求只是能查询每天每类的日志,这个优化怎么做?直接分表完事,一天一个表,一个月一个库。
如果对方的要求是能查询每天所有类的日志呢?那就是现在这样按天分表,但是一个表里面数据量庞大的情况下,可以考虑限制客户访问全表的次数,也就是依然引导用户去访问分类表。
也可以写入日志文件,然后对日志文件分析,整理出一个报表。
如果客户要求能查询日志文件,并且可以忍受等待时间(这个和成本成反比)。那么可以考虑使用队列方式运行一个作业来查询,并且生成查询日志,避开php的执行时间限制,也可以提供给用户一个搜索进度。

看到需求,才能优化。不完整的需求,就是漫天乱飞的优化。
秋意行风 2011-08-23
  • 打赏
  • 举报
回复
学习一下!
lixiaolin77 2011-08-11
  • 打赏
  • 举报
回复
考虑业务需求上的优化,数据量那么大,用户是否真的需要看那么多数据,把每必要的数据全部做日清,放到备份区里面,需要用的才放到正式表里面。这样可以提高查询速度和现实。
haha151221 2010-11-01
  • 打赏
  • 举报
回复
学习下
shuiguozheng 2010-09-26
  • 打赏
  • 举报
回复
大家该说的都说了,
1。 我觉得还可以建一张临时表,定时将最新的数据都扫描进入其中,获取数据时,就直接从临时表中拿了!
2。 memcached 集群,将数据放入缓存中,给缓存设置一个有效期,一旦过期,就再去从数据库中拿,放入缓存。

「已注销」 2010-09-01
  • 打赏
  • 举报
回复
看到很多比较2的答案。呵呵
1、换数据库的
2、连接池的
3、查询缓存的
答这些答案的都可以歇菜回家看书了。hoho

翻了整个回复,没有找到楼主说明以下几个问题:
1、每天数据多少
2、影响性能的查询条件是什么,或者说最坏情况是什么
3、包含哪些主要数据字段(仅表现出来的就可)
4、数据按天分表,那么每天几张表?1张?所有类型都在一起?
5、都需要什么样的排序
6、分析你的应用中的sql,注意group by, order by。explain 分析中 注意Using temporary; Using filesort
7、你的主查询表Row是否定长?最大的索引文件有多大?
... ... 剩下的什么cnf配置优化还是后面的事情。

楼主有个理解是错误的,那就是默认cnf其实是最通用的,只有当你的需求不是通用的,是比较特殊的,在使用中发现问题,最后才去改它的。人家默认的是经过千锤百炼的(当然,在一定条件下的)。

椅子还是很上心的,从应用上给了很多好的建议,不过这句话很搞:)【椅子:不许平均散分,我可是花了大力气的】
shuiguozheng 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 sp1234 的回复:]

我要说的两点上面有人给你建议过。

“取前边1000条记录就够,办正事的用户大多没心思翻页到几百页之后去”,我比较赞同。你看google或者百度的查询结果,只能翻页到1000条记录左右,就不能往后翻了。因此你没必要查询出几十万条记录再执行分页功能,而应该为查询增加“条件”功能,例如有一个“开始审计时间”条件,用户可以给出条件来缩小查询范围。

另外,如果你的数据库没有索引,但是查询时又用……
[/Quote]
恩,我也同意这种观点
fanxu007 2010-08-05
  • 打赏
  • 举报
回复
MARK
华芸智森 2010-07-21
  • 打赏
  • 举报
回复
我本人并不很看好网页静态化.我的思路其实很简单很简单.....
我就做两件事.
1.充分利用内存.
2.充分优化数据库.
华芸智森 2010-07-21
  • 打赏
  • 举报
回复
说来说去就是缓存,网页优化,数据库优化.觉得再不行,就将你的图片保存在别人的服务器上.你的服务器只输出ASCII码.
Feng_Accp_2008 2010-04-07
  • 打赏
  • 举报
回复
是系统数据量大,使页面访问缓慢
还是访问量大,使页面访问缓慢

前者纯粹是因为数据库设计问题、sql语句编写问题造成的,建议使用数据库索引、带where的sql语句解决
后者就要具体问题具体分析了
wuboyhood 2008-10-05
  • 打赏
  • 举报
回复
学习了...
Defonds 2008-08-22
  • 打赏
  • 举报
回复
正在做某系统二次开发,遇到了同样的问题
mark下,以备参考
ten789 2008-08-22
  • 打赏
  • 举报
回复
这个问题的症结在于用了MYSQL从根本上就错了再怎么优化也没有太好效果
MSSQL也是错的 用任何数据库都是错的 呵呵

文本日志最适合LZ的需求
按分类 日期分别建立目录和文件 内容用等长的行记录

查询就更简单了 数据本身就是按分类和日期记录的 唯一要处理的就只有分页了
内容都是的等长的 用偏移量就能解决 而且可以用过文件大小分析出总记录数

PHP AJAX都只是解决问题的方法 方法有很多结果都是一样的

文本日志的性能 根本不需要考虑 N多高负载软件的日志都是文本的 就是没有基于数据库的
如果遇到磁盘瓶颈完全可以用写缓存优化 每秒万条的记录不是问题
还有需要说明的是数据数量对文本日志的性能影响不大 单个文件过G也无所谓

在这个版里翻了半天帖子 N多回复动辄就集群 这严重有违环保精神
很多时候应该再回头看看入门手册 俺记得第一本关于数据库的书上说 数据库的作用是方便查询
xfjds1987 2008-08-21
  • 打赏
  • 举报
回复
不懂PHP啊。哈哈。
不过对于这个问题我一般是ajax+threading。速度上还是取决于sql语句,存储过程maybe~
nettman 2008-08-21
  • 打赏
  • 举报
回复
Mark!
ilovewalk 2008-08-21
  • 打赏
  • 举报
回复
mark.
加载更多回复(108)

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧