怎样实现对几个数据库并行查询

heraldboy 2012-01-25 08:41:46
实际工作中有这样一个项目:
1、有100多个数据表,每个大小不一,大的1000多万,小的几十万记录,根据需要做了索引,不经常更新,单表查询很快。以后可能逐步增加表的数量。
2、每次都要查询这100个表中有没有要找的数据,有的话显示出来,一般情况下会有十几张表中有数据,每个表有几条。
3、现在是使用php查询一个接一个的查询,查询时间就等于100个表每个表查询时间的总和,这样速度就感觉很慢了。

想实现:
100多个表并行查询,最后一个查完后,统一把结果返回给用户,这样查询时间只是最慢那个表的时间。

请有相关经验的说说,需要什么技术实现。
...全文
384 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
一起混吧 2012-02-06
  • 打赏
  • 举报
回复
考虑内存表 。
calky 2012-02-06
  • 打赏
  • 举报
回复
我感觉分表联合查询更慢,同时查所有表,服务器承受不了那么大压力。

等楼下答案一块学习
heraldboy 2012-02-06
  • 打赏
  • 举报
回复
loginnewman:能不能详细的解释一下你的方法。
Liv2005 2012-02-06
  • 打赏
  • 举报
回复
=。= 这个的确是个常见场景嘛...日志信息的查询

比如: log_20120101 log_20120202 …… log_20121221

这种已经不是php能做到的了,因为就算php同时查询所有表,DB本身也会撑不住的....

一般这种情况,如果是大型系统,可能设置多个SlaveDB,然后每个SlaveDB查询不同的表,最后再汇总结果

比如:
SlaveDB1 负责 log_20120101 …… log_20120601
SlaveDB2 负责 log_20120602 …… log_20121221

然后再由PHP汇总结果,得到结果所消耗的时间就是原来的一半,依次类推……
前端如果再加上memcached或者redis之类的,缓存热数据,可以很明显的提升效率。


同Mark,同求高端解决方案
putiwumu22 2012-02-06
  • 打赏
  • 举报
回复
我也想知道怎么查
loginnewman 2012-01-26
  • 打赏
  • 举报
回复
简单,分多个索引程序控制若干个库,再对索引进行索引。电脑自己会并行处理。
heraldboy 2012-01-26
  • 打赏
  • 举报
回复
这个是有点意思的,还没时间测试,但总感觉不是很放心。
PHP使用curl_multi_add_handle并行处理
http://www.byywee.com/page/M0/S210/210538.html
http://blog.csdn.net/21aspnet/article/details/7076003
heraldboy 2012-01-26
  • 打赏
  • 举报
回复
平均每个表有100万数据,不是所有,试过redis,和mongodb等,应为数据太大,不是合适的方案。
黄袍披身 2012-01-25
  • 打赏
  • 举报
回复
mysql 不就有联合查询了吗?另外再用memcache 分布一下就行了.100多万的数据不多 ...
amber_room 2012-01-25
  • 打赏
  • 举报
回复
同求!我也想知道答案

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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