热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PostgreSQL数据库使用技巧

1.log日志配置PostgreSQL的系统日志和报错日志等,默认是直接输出了,没有写入到文件,如果你希望能查看这些日志,需要修改postgresql.conf,如下:log_destination’stderr’logging_collectoronlog_directory‘pg_log’log_min_durat

1.log日志配置
PostgreSQL的系统日志和报错日志等,默认是直接输出了,没有写入到文件,如果你希望能查看这些日志,需要修改postgresql.conf,如下:

log_destination = ’stderr’
logging_collector = on
log_directory = ‘pg_log’
log_min_duration_statement = 5000

上面这些参数的意思就是,把pgsql的日志到输出到pgsql数据目录的pg_log目录下,同时超过5000毫秒的操作将记录。

 
2.用户认证和监听

PostgreSQL的用户认证是通过pg_hba.conf来设置,默认都是trust,即本地帐户能直接登录。显然不安全,你可修改如下:

# “local” is for Unix domain socket connections only
local   all         all                                 md5
# IPv4 local connections:
host    all         all         127.0.0.1/32            md5
host    all         all         192.168.1.0/24          md5

上面这些参数的意思是,本地连接pgsql需要密码md5认证,192.168.1.xx 网段允许连接,密码也需要通过md5认证。
如果需要从其他客户端连接,还需要修改postgresql.conf的liston_addresses参数,这个参数和oracle的监听的作用类似。
listen_addresses = ‘*’

3.密码文件

通过2设置成md5验证后,虽然在安全方面有了提高,但是同时会造成一些麻烦,比如你的shell脚本需要使用psql能直接连接,这种情况你可以使用密码文件。通过在用户的根目录下,创建一个.pgpass文件。并将权限设置为0600。

文件的格式如下:
hostname:port:database:username:password

4.psql常用容易混淆的命令

通过psql登录到PostgreSQL,有些命令可能和其他数据库有些区别,这里和mysql对比下,介绍几个你很可能搞混的命令:
pgsql             mysql
/c                use
/q                quit
/d                desc

5.系统参数配置

PostgreSQL在安装的时候,并没有要求修改系统默认配置,那是因为其默认的内存等参数很小,不会超过系统的默认配置。例如你加大shared_buffers等参数的值时,基本都会超过默认系统参数。这时你需要修改这些配置
编辑 /etc/sysctl.conf,加入以下内容:
kernel.shmall = 3145728
kernel.shmmax = 12884901888
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
存盘退出后运行这个指令检查是否设置正确:
#sysctl -p

6.过程语言
PostgreSQL的存储过程和函数统一就叫function,当然传统意思上存储过程和函数的区别也就是,一个必须返回值,一个不需要。
目前在标准的 PostgreSQL 发布里有四种过程语言可用:
PL/pgSQL,
PL/Tcl,
PL/Perl,
PL/Python。
默认是没有安装的,例如你需要安装
CREATE [TRUSTED] [PROCEDURAL] LANGUAGE ‘language-name’
    HANDLER handler_function_name
    [VALIDATOR validator_function_name] ;

7.autovacuum

vacuum命令类似于Mysql里的optimize等命令,当对大表进行这样的操作,需要注意对业务的影响,应该是在业务比较空闲的时候进行。
从 PostgreSQL 8.1 开始,系统带有一个额外可选的 autovacuum 守护进程,用于自动执行 VACUUM 和 ANALYZE 命令。可以在postgresql.conf里进行配置。

8.获得对象创建语句

Oracle:
select dbms_metadata.get_ddl(’OBJECT_TYPE’,'OBJECT_NAME’,'OWNER’) from dual;

Mysql:
show create OBJECT OBJECT_NAME;

PostgreSQL获得对象创建语句比较折腾,需要分别处理。
8.1 表
貌似只能用 pg_dump 导出来,例如导出test数据库的t1表的结构
pg_dump -s -U test -t t1

8.2 过程和函数
pg_get_functiondef(oid)

8.3 触发器
pg_get_triggerdef(oid)

8.4 索引
pg_get_indexdef(oid)

8.5 视图
pg_get_viewdef(oid)

oid可以通过相应的系统表查出来,例如function可在pg_proc查到,注意oid是个隐藏列。

9.database、schema、objects

在PostgreSQL里的database和Mysql里的database不一样,它有点和Oracle的实例类似,每个database之间是独立的,在database和object之间

还有个schema。每个database可以创建多个schema,每个shcema又可以创建多个object。下列简单列出之间的关系:

PostgreSQL: database?shcma?object
Mysql     : database?object
Oracle    : instance?schema?object 

10.pg_dump和pg_dumpall

这2个工具的区别在于一个是备份单个database,一个备份所有的database。用惯了mysqldump,pg_dumpall很容易被忽略,为何不把这2个工具集成到一个呢?

总的来说,个人觉得PostgreSQL很多方面和Oracle是比较相似的,特别多进程的方式,相比Mysql来说要健壮的多。不过国内的PostgreSQL应用貌似很少,相关中文的资料也不多。一般来说java对应oracle,php对应mysql,python对应postgresql,是否能说python在国内的普及还是很不够呢?


推荐阅读
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
author-avatar
博文_Andrew-属_394
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有