1、编译一个基本的程序使用
gcc -I /usr/pgsql-9.6/include/ -L /usr/pgsql-9.6/lib/ -lpq xxxx.c
2、pg_ctl使用
/usr/pgsql-9.6/bin/pg_ctl reload -D /opt/nsfocus/data/hadoop/vdb/pg_log
su postgres -c "/usr/pgsql-9.6/bin/pg_ctl reload -D /opt/nsfocus/data/hadoop/vdb/pg_log"
su postgres -c "/usr/pgsql-9.6/bin/pg_ctl stop -D /opt/nsfocus/data/hadoop/vdb/pg_log"
su postgres -c "/usr/pgsql-9.6/bin/pg_ctl start -D /opt/nsfocus/data/hadoop/vdb/pg_log"
3、vacuum
没有数据但是占据磁盘空间,说明需要手动vacuum,释放掉已删除数据的空间.
vacuum table名字;
vacuum;
vacuum 只是将删除状态的空间释放掉,转换到能够重新使用的状态,但是它不进行空间合并。
vacuum full 将会使空间释放的信息表现在系统级别,其实质是将当前删除记录后面的数据进行移动,使得整体的记录连贯
起来,降低了“高水位标记”。因此它需要lock table。
vacuum analyze 更新统计信息,使得优化器能够选择更好的方案执行sql。
autovacuum 数据库定时自动进行vacuum
1、对于有大量update 的表,vacuum full是没有必要的,因为它的空间还会再次增长,所以vacuum就足够了。
2、oracle中同样也有analyze,作用也相同,目前更多的使用的是dbms_stats包。统计信息收集和更新对于系统性能来说非常重要。
oracle在进行imp后自动的对相应数据对象进行统计信息的收集和更新,而postgresql的恢复过程还没有集成到里面,需要手动去执行。
3、适当调大参数maintenance_work_mem,可加快vacuum的执行速度
4、copy命令
COPY user TO '/tmp/data/test.csv' WITH csv;
COPY user_1 FROM '/tmp/data/test.csv' WITH csv;