免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4880 | 回复: 6
打印 上一主题 下一主题

大表性能问题和机器配置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-25 13:09 |只看该作者 |倒序浏览
请教高手....
Q: 目前我们数据库有一大表,600万条记录,整个表的size大约4G左右,目前服务器内存2G,我开了1.5G给
pg的shared_buffer。现在的问题是,这个表外部要不停的 count(*), 和很多条件的交替查询来进行数据统计
和分析,目前 count(*) 几乎无法使用,要50秒才能完成,请问如何解决?如果是加内存,要加到多到?
环境:debian etch, pg-8.1(apt-get安装)
A:。。。。

另:请大家介绍一下自己使用的数据库服务器的情况,
机器配置,数据库大小,最大表记录数及其大小,OS, pg version....
看看比较一下pg的性能。

[ 本帖最后由 xyhe 于 2007-12-25 13:14 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-12-27 18:06 |只看该作者

回复 #1 xyhe 的帖子

没人会,自己定,看来用pg的人都不来这里啊。。。。

论坛徽章:
0
3 [报告]
发表于 2007-12-30 12:43 |只看该作者
之前看到过,目前版本count(*)的性能很差,好像用的是表扫描.

其他就帮不了你了, 我不用这个数据库的. 你顺着这个线索google一下吧

论坛徽章:
0
4 [报告]
发表于 2007-12-31 21:28 |只看该作者

回复 #3 wind_lq 的帖子

google了很多了。
现在最大的问题是,由于需要全表扫描,则需要足够的内存来支持正个表的载入,那么,难道
表增涨到多少,就需要内存加到多少吗?如果我的单表大小到20G,那估计内存开20G也需要
大量的IO读取时间了,岂非无解?
高手怎么都不出来点解一下啊。。。。。。

[ 本帖最后由 xyhe 于 2007-12-31 21:29 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-01-17 23:25 |只看该作者
听说当前count(*)是做全表扫描的,大表当然就很慢,如果要不停做count(*),可以自己变通一下,做该表的Insert和Delete触发器,在另外一个地方记录Add和Del了多少,到时别Count()而直接Select这个结果就是了。

论坛徽章:
0
6 [报告]
发表于 2008-01-18 11:19 |只看该作者
如果COUNT(*)一天执行一次的话,可以将COUNT(*)安排在数据库空闲时执行,然后将结果存入一个新表。其它应用只查这个新表。

论坛徽章:
0
7 [报告]
发表于 2008-02-04 10:22 |只看该作者
原帖由 perlpg 于 2008-1-17 23:25 发表
听说当前count(*)是做全表扫描的,大表当然就很慢,如果要不停做count(*),可以自己变通一下,做该表的Insert和Delete触发器,在另外一个地方记录Add和Del了多少,到时别Count()而直接Select这个结果就是了。



这个想法不错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP