频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>数据库相关>> 收藏此文 | 收藏本站 | 设为首页

Php+mysql处理大容量数据存储

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2007-7-23 20:33:46 进入讨论组
关 键 词: Php+mysql处理大容量数据存储

在一个PHPRES.COM上看到了这样一个贴子,索引将答案贴到这里让大家看看,希望对大家有帮助

quote:
--------------------------------------------------------------------------------

当数据库很大如10万条,1GB大小时,怎样搜索才高效?
请问版主,我现在在调试一个论坛,向数据库中写入了10万多条信息,此时主要的内容都集中在一个表上,有近1GB大小。
搜索该论坛时很慢,特别是全文搜索时,即使只用
SELECT * FROM `cdb_posts` WHERE message='本破烂陈旧的小册子从怀中取出递给我'

也很慢,在台式机上甚至根本运行不完。但我听说sun公司的论坛(下面有近百个分论坛)进行全文搜索时也不超过20秒,我们能否做到。

我运行搜索程序时,cpu和内存占用率都很低,只有硬盘灯一直在闪,我总认为是程序不够高效,是不是可以把程序写出类似“多线程”,以提高效率。

请版主和各路大侠指教!
谢谢。

--------------------------------------------------------------------------------



有人建议它用ORACLE

我觉得有一点大家要注意,那就是如果你让oracle执行一个 select * from xxxx where xxx = 'xxxxxxxxxxxxxx';

这个表有1G的时候绝对不会比MYSQL快上多少。

现在的这么多流行的数据库系统上执行相同的操作时不可能快上很多倍的。

关键在于你的数据库设计。

我在做一个商业信息的搜索引擎,在做的过程中得到一些经验。如下:

1。 建立摘要表
2。 对于那些数字形式且经常查询的数据一定要建立索引,我不记得在哪里看到一篇贴子说什么:“不要用那垃圾的索引”.郁闷了N久。这种贴子都有。。哎。
建议: 在where中的用到的尺寸不大的condition一般都要索引。尺寸大的单独表中存储且要用like查询的单独表中存储。
3。 对于有很多结果的时候不要select *... ,先select ID.... 然后取得ID后进行分页控制,取出当前页中的ID到数组。。 再执行select * from xxx where ID in(implode(',', $ID数组);
如果得到的数据还要进行join,请在这条select 语句中来进行。因为这样数据库进行join的选择因子会小很多。

4。对于要全文检索的数据和现在的数据分离出来。以数据库设计中第二范式的形式表示.在单独表中存储和数据主键对应的信息.

5。给表加上一个primary , int(smallint、tinyint 看要多少条数据).

6。在做好系统后用explain select .... 对系统中耗时的语句进行分析。看看MYSQL是如何处理这条语句的。

7。如果有可能,把信息分表存储(也可分布在不同的数据库服务器上)

本人禺见,觉得好的顶一看。。觉得差的就当是看个笑话。。。


__________________

本人回答的问题,如无特别注明, 均未测试过....
欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱