方案紧急求助:具体请见内,分不够再加,谢谢了! 在分页的处理方法中,哪种可以尽可能少的占用CPU?各位高手可以提供下思路吗?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 microfire(丁丁) :内存1G,但数组行不通,虽然CPU占用率不高,但大量数据下,内存使用率直线上升,操作完成也不会释放。ustb(偶然) :我的分页就是上面说的格式,是很普通的做法。 fish21cn(阿飞) :每页显示25条记录;每次查询日期为必选项,并将其控制的10天内,也就是说最多显示10天的数据(最多100万);分页是必要的,但希望分页技术能尽量减少CPU的占用率,也就是说,在必须分页的基础上,只要能降低CPU的占用率(越少越好,当然内存也要考虑),就是好的分页的思路。 数据查询先是count,再用limit n,25就可以了,这时传回的就25条记录而已,不会占用很多资源关键的是数据库查询 这么大的数据量,索引当然是必不可少的了。分页显示时,记录越多每页显示的时间越久,CPU达到100%的时间也就越久 你用的是什么数据库,如果不是Sybase可以只读分页的那一部分 Jatic(要学的太多了) :正像你所说的,我是开始只得到count,将其保存下来(在中间处理页面中完成),然后转到显示页面,从库中提25提记录将其显示出来 你把你的表贴出来吧.然后把你的查询的查询计划也贴出来吧。如果是良好的查询,不会出现你说的那中情况的。一般从几百条记录里取10条记录,只需要0.xms. 请问楼主,你使用的是否mysql数据库?你可以在控制台里查询相同条件的内容看看占用资源和时间如何?我在6w条记录中:SELECT * FROM `test` WHERE country = '云南省' LIMIT 1, 30 只用了0.068s,只一闪就显示出来了!我认为和分页显示没有很大的关系,最主要是数据库查询。还有,你的系统会不会有问题?如果数据量很大,可以考虑换数据库 fish21cn(阿飞) :呵呵,从一亿的记录中取100万,从100万的记录中取25条,可不是从几百条记录中取10条可以比喻的。我现在看到那些数据都头大,痛苦啊~~~ Jatic(要学的太多了) :数据库MYSQL3.23.57,系统没问题。你说的那个测试我也做过,甚至比你的记录还多,但控制台和web的速度可不是可以比的。 weizhihui1213:你的查询中有没有多表连合查询,如果没有应该会快的。照你的说法倒好像是数据库不堪负荷了,我没有操作过1亿记录的数据库。如果你确定系统没有问题,而查询又是如此的慢,那么... 楼主.一定要从1亿的记录中取100万条了.请问你这个取100万条记录的操作是否必要.况且,一般来对于的结果集都是提供一个Handle(或者说是一个指针)来定位记录.根本不会考虑将结果保存下来. 我做了个实验,在百度中搜索“1”,结果是这样的“百度为您找到相关网页约209,000,000篇,用时0.001秒”,害怕吧。而且它也实现了比分页更复杂的内容。 所以,单纯的靠一个数据库,简单用select 来查询,根本无法实现这个功能。我想应该根据某种算法建立索引数据库,然后对索引数据库再建立索引数据库....我不是很懂,只是随便说说. 然后在查询语句上,象前面大家说的,先count,然后limit,应该不会太慢的.我做过一个黄页系统,里面有大概20万的数据,也是飞快的. 只可能有两个原因第一 数据库没有设计好 尤其是索引第二 结合mysql写分页再简单不过了 limit即可 不要从1亿的记录中取100万条,是从1亿的记录中检索出来n多条这其中只有25条从server传到用户浏览器。那些操作都是PHP 与 mysql的关系,这两个都是在服务器上的,当然会稍慢一点,不会有很大的差别。刚才我的测试数据也是从web 上测出来的。用控制台是测试究竟在mysql中取相同数据是否可以,能不能负担的起如此数据查询 mysql数据库和访问sql写得好得话1亿去几百万根本没有问题 fish21cn(阿飞) :不是说一定要从1亿条记录中取100万,而是数据库已经达到了这个数据量,而10天的数据没100万也有70、80万,而要求给用户提供1个可以通过时间段查询数据的接口。虽然系统在测试,但不能不考虑最大数据量的时候,如果那样是在欺骗自己呀。newly(王二) :你的做法的思路是什么?可以说说吗? bluemeteor(挂月||╭∩╮(︶_︶)╭∩╮) :是没问题,完全可以找出来,分页也可以显示出来,时间还不算慢,但服务器作为web服务器的同时,还有一个更重要的用途,10秒中的100%CPU占用率,其他的就不用做了 1.首先建好索引,其次是优化SQL语句,使用好索引,否则等于没建2.如果可能,建立多个数据文件或表空间3.把表拆分成若干小表4.提高硬件设置、网络吞吐量 还是头一次听过这么大的数据量。那怎么还用MYSQL?MYSQL不是比较小型数据库才使用的吗? 不知mysql是否支持存储过程,使用存储过程应该可以搞定。 dcwang(帆洲):好主意!我也有这个想法,就是上面我说的多重分页,正在实行中,是否可行就要看测试结果了。 数据可以编码问题 用超链接传递name值,但是在处理页却无法获取$name变量,求解决 这句话哪错了?? 我的面试题目,大家帮帮忙。 PHP开发的目前最先进的智能后台开发系统完整功能版本开源了 正则分析效率虽然高,但是cpu占用会不会也很高? 大家帮我看看这段代码吧? unlink()是什么意思啊? select max(id)问题? win2000server下,php连接sqlserver,为什么连不上,请教!! 我也送分,大家来抢,先到多得啦 你没有哪位同仁合作开发网站?(我可以帮助啊) mysql中的references 为什么一点用处都没啊?试了一上午了!
ustb(偶然) :我的分页就是上面说的格式,是很普通的做法。
每页显示25条记录;每次查询日期为必选项,并将其控制的10天内,也就是说最多显示10天的数据(最多100万);分页是必要的,但希望分页技术能尽量减少CPU的占用率,也就是说,在必须分页的基础上,只要能降低CPU的占用率(越少越好,当然内存也要考虑),就是好的分页的思路。
正像你所说的,我是开始只得到count,将其保存下来(在中间处理页面中完成),然后转到显示页面,从库中提25提记录将其显示出来
然后把你的查询的查询计划也贴出来吧。
如果是良好的查询,不会出现你说的那中情况的。
一般从几百条记录里取10条记录,只需要0.xms.
SELECT * FROM `test` WHERE country = '云南省' LIMIT 1, 30
只用了0.068s,只一闪就显示出来了!我认为和分页显示没有很大的关系,最主要是数据库查询。
还有,你的系统会不会有问题?如果数据量很大,可以考虑换数据库
我现在看到那些数据都头大,痛苦啊~~~
一定要从1亿的记录中取100万条了.请问你这个取100万条记录的操作是否必要.
况且,一般来对于的结果集都是提供一个Handle(或者说是一个指针)来定位记录.根本不会考虑将结果保存下来.
所以,单纯的靠一个数据库,简单用select 来查询,根本无法实现这个功能。我想应该根据某种算法建立索引数据库,然后对索引数据库再建立索引数据库....我不是很懂,只是随便说说.
然后在查询语句上,象前面大家说的,先count,然后limit,应该不会太慢的.我做过一个黄页系统,里面有大概20万的数据,也是飞快的.
刚才我的测试数据也是从web 上测出来的。用控制台是测试究竟在mysql中取相同数据是否可以,能不能负担的起如此数据查询
newly(王二) :你的做法的思路是什么?可以说说吗?
那怎么还用MYSQL?
MYSQL不是比较小型数据库才使用的吗?
使用存储过程应该可以搞定。