是这样(在windows xp sp2下),我现在使用postgreSQL的免安装版本:postgresql-8.2.9-1-binaries-no-installer.zip
(之前我使用的是数据库的安装版本)
我程序(是应用程序跟网络没有关系,都是本地连接)本来连接时间大概1-3秒左右。现在使用免安装花了我好几分钟。甚至直接死掉。
免安装版我使用initdb.exe -D ..\data -E UTF8 --locale=C初始化数据库的。
我使用了一些可能的解决办法但是都不行:
因为是免安装,所以我觉得可能是配置文件设置什么缓存或者什么内存分配方面低了。然后我就去看了文件:postgresql.conf。
然后我找了份安装版的此文件打开对比有这么几处区别:
(发现很多免安装版前面都加个#,是不是说都被注释掉的意思?)
1、(安装)listen_addresses = '*' (免安装)#listen_addresses = 'localhost'
2、(安装)port = 5432(免安装)#port = 5432  
3、(安装)log_destination = 'stderr' (免安装)#log_destination = 'stderr'  
4、(安装)redirect_stderr = on (免安装)#redirect_stderr = off   
5、(安装)log_line_prefix = '%t ' (免安装)#log_line_prefix = ''   
6、(安装)stats_start_collector = on   (免安装)#stats_start_collector = on 
7、(安装)stats_row_level = on (免安装)#stats_row_level = off
8、(安装)autovacuum = on  (免安装)#autovacuum = off  (垃圾自动回收开不开应该区别不是很大吧?)
9、(安装)datestyle = 'iso, ymd' (免安装)datestyle = 'iso, mdy'
(10,11,12,13只是安装的时候选择的语言吧?应该不会影响吧?)
10、(安装)lc_messages = 'Chinese_People''s Republic of China.936'  (免安装)lc_messages = 'C' 
11、(安装)lc_monetary = 'Chinese_People''s Republic of China.936' (免安装)lc_monetary = 'C'
12、(安装)lc_numeric = 'Chinese_People''s Republic of China.936' (免安装)lc_numeric = 'C' 
13、(安装)lc_time = 'Chinese_People''s Republic of China.936' (免安装)lc_time = 'C' 
然后发现有区别后,我想把他们都改成跟安装版一样,但是没成功,因为我不知道在命令提示符下该如何去设置这些配置文件的值。
接下来,我就管它什么区别,就将安装版的文件烤了一份,把免安装版的文件给覆盖了。但是很可惜效果一样。仍然很慢。
我的问题是:
请高手们帮忙解决下,该如何让数据库读取速度快起来,只需要跟安装版效果一样就成。如果可以,最好说明下原理。
还有postgresql.conf文件中的值在命令提示符下该如何修改。

解决方案 »

  1.   

    1 前面允许监听外部连接,后面是缺省值,只能本地连接,带 #的意思都是默认配置
    2 是监听端口
    3 是日志存放位置
    ………………
    你可以去看www.pgsqldb.org上面有中文帮助文档
    对这些参数解释的比较清楚了。
    如果允许监听外部连接,还需要修改hba.conf配置文件 
      

  2.   

    postgresql在WINDOWS下有些事情是很莫名其妙的。你看两者启动的服务程序,服务用户是否一样。我历来都是用免安装版本的,好象没碰到此问题,倒是碰到杀毒程序与之冲突,服务启动成功了,但一连接就出错,(从LOG可以看出)。后来换个杀毒程序就OK了。
      

  3.   

    谢谢二位,但是该如何用命令去设置那些属性值呢?postgres要在批处理文件里就设置好postgresql.conf里面的属性值,该如何处理。因为需要傻瓜式安装。
      

  4.   

    直接用文本编辑器修改postgresql.conf。可用SQL命令SET XXXX=XX重新设置这些参数,但并不是所有的参数都可以设置,而且是临时性的。
      

  5.   

    你可以准备好配置好的文件,倒是拷贝到data去替代不就ok了
    或者你写个界面程序来配置参数也是可以的了^_^
      

  6.   

    我试了拷过去,这个方法倒是可行。只不过需要重新启动下。
    是不是机子不重起,它不会主动去调用文件。我查了下,好象里面有张配置table.
    那我想问下,命令提示符下是否可以让电脑弹出提示重新启动的框啊?我没进行过windows编程。里面内部不是很懂。
    难道还要写个程序。
      

  7.   

    不是机器重启,是服务重启
    pg_ctl可以关闭服务
    然后重新载入配置文件
    pg_ctl reload [-s] [-D datadir]
    reload mode simply sends the postgres process a SIGHUP signal, causing it to reread its configuration files (postgresql.conf, pg_hba.conf, etc.). This allows changing of configuration-file options that do not require a complete restart to take effect. 
    然后再用postgres启动服务
      

  8.   

    postgresql是个绿色软件,除了pg_ctl需要注册服务程序之外。我一般是在本机配置好postgresql.conf和hba.conf, 用initdb生成数据库,并创建好自己所需的数据后,将整个数据库文件夹压缩后,拷贝到目的机子上的,目的机子只要运行pg_ctl注册服务即可。
      

  9.   

    对的。xbt746猜到了.你怎么认为?
    其实我就是想一个安装包。包括的postgre的安装。但是又不能让客户知道安装过程中内部到底是做了什么。
    也就是差不多配置什么的都要一次性全部搞定。
      

  10.   

    写一个安装脚本,不过我对bat或者shell编写都不太在行啊
    好像postgres已经支持nmake
    make完以后完成配置文件的替换,或者打包时候就已经是更换好的配置文件
    然后调用pg_ctl或者postgres来启动数据库服务好了