建表后,表文件大小为0,向里面插入数据后,文件大小变为8K,
数据记录是从文件的最后开始往上写的,为什么采用这种方式?而且插入记录的时候,不是马上写入文件的,得等5分钟左右(此时查询都是正常的)。
我估计是记录量过少,先缓在内存,到一定时间或到一定量再写入文件,以减少磁盘I/O。如果表文件只能是一下扩大8K,这个批量I/O程度对大数据量的时候还是比较慢的。
我在linux下测试的写文件,8M-16M的批量写入效率差不多最高。问:1、这个8K在哪里可以配置?  oracle建表的时候可以指定 storage(initial 80K 。。)等等
2、数据记录是从文件的最后开始往上写的,为什么采用这种方式?

解决方案 »

  1.   

    postgresql是先写到wal日志里,后台再写到实际物理文件中,这之间有时间间隔叫checkpoint_timeout默认为5分钟。
    1。页的单位是8k, 不能配置,编译的时候已经设定,除非重新编译服务器。
    2。不知。
      

  2.   

    最好看看postgresql的文档
    里面都有说明
      

  3.   

    原来是写到log里面了啊,感觉这样耗I/O