PostgreSQL 12 已经发布,该版本在各方面都得到了加强,包括显著地提升查询性能,特别是对大数据集,总的空间利用率方面。这个版本为应用程序开发人员提供了更多的功能,比如对 SQL/JSON 路径表达式的支持,优化公共表达式(WITH查询)的执行,以及对生成列的支持等。

PostgreSQL 除了持续对 PostgreSQL 系统的可扩展性、稳健性进行开发外,还更多地在本地化、授权控制以及更加容易的管理进行增强。这个版本也引入了 可插拨的表存取接口,来允许开发者在表的创建和使用时使用不同的存取方式。具体如下:
全面的性能提升
PostgreSQL 12版本在性能和易维护性方面有了显著的增强,尤其是对索引和分区子系统。
PostgreSQL 12 对标准索引类型B树索引进行了优化,以使其可以可以更好地处理索引更新频率较高类型的负载的的总体性能,使用最常使用的TPC-C 性能测试,PostgreSQL 12 平均可以提升约 40% 的空间利用率和查询性能。
对分区表的查询也得到了较大改进,特别是对那些有数千个分区的表,而结果只需从几个有限的分区提取数据的查询。PostgreSQL 12 对通过 INSERT 和COPY指令将数据加入分区表的 *** 作,也有加强,包括现在可以在不阻塞查询的情况下增加新的分区。
另外,PostgreSQL 12 对索引的优化也提升了总体的性能,包括生成 GiST、GIN 或 SP-GiST 索引的 WAL 日志的负载显著减少,在 GiST 类型索引上创 建INCLUDE选项的包含索引,SP-GiST 索引现在支持<->距离 *** 作的 K-NN(即相邻最近)查询,以及CREATE STATISTICS指令现在支持最常用值 MCV 的统计来帮助那些字段值非均匀分布的查询生成更优化的查询计划。
通过使用 LLVM,从 PostgreSQL 11 版引入的 JIT 即时编译,在 PostgreSQL 12 中缺省已是启用状态,JIT 即时编译对带有 WHERE 条件、对象列表、 聚合以及一些内部 *** 作都会提供性能上的帮助。当然,用户在安装或是编译时需要包含 LLVM 模块。
对 SQL 标准一致性和功能的增强
PostgreSQL 一直以来以其对 SQL 标准符合性而著称,这也是其名称由 POSTGRES 改为 PostgreSQL 的一个小原因。PostgreSQL 12 又增加了几个新特性 来持续实现对 SQL 标准的符合性的强化。
PostgreSQL 12 加入了对 JSON 文档进行查询时使用 JSON 路径表达式的功能,这也是 SQL/JSON 中定义的规范。对使用 JSONB 格式保存的文档,这些查 询可以利用已有的索引机制来高效地提取数据。
公共表达式,也称之为 WITH 查询,在 PostgreSQL 12 中可以实现非物化 *** 作处理,这对很多现在已有的查询有很大帮助。目前在这个版本中,WITH 查询的前提条件是非递归查询并且仅可被外层查询引用一次。
PostgreSQL 12 也引入了“生成列”功能,这也是 SQL 标准中的要求,这些字段值是通过同一表中其它列计算而来的。在这一版本中,PostgreSQL 支持“保存生成列值”的功能,即将这些计算出来的数据存储在磁盘上。
本地化
PostgreSQL 12 扩充了对 ICU 排序规则的支持,允许用户自行定义非标准的排序方式,比如允许大小写不敏感或是按口音不敏感的比较规则。
授权控制
PostgreSQL 通过再次扩展了一些的安全方面的功能来强化了它本来就很稳健的权限控制。这个版本中通过 GSSAPI 接口支持客户端和服务端的双向加密, 如果在编译时加入 OpenLDAP 模块,PostgreSQL 也支持搜索 LDAP 服务器的功能。
另外,PostgreSQL 12 现在支持多约束的授权方式。如在使用scram-sha-256的授权方式,PostgreSQL 服务器现在可以强制一个客户端在提供用户名、使用clientcert=verify-full选项,再必须提供有效的 SSL 证书的方式来强化安全授权。
系统管理
PostgreSQL 12 的REINDEX CONCURRENTLY指令可以在不影响新的索引写入的前提下让用户执行重那建索引 *** 作,这有助于用户实现不停机对 较大索引的重建。
还有,PostgreSQL 12 通过使用pg_checksums指令对停机的 PostgreSQL 来开启或关闭页校验功能,该功能有助于检查已写入磁盘的数据一致性, 而以前版本中该 *** 作仅允许在 initdb的阶段来执行。
企业里常用的数据库软件有Mysql、PostgreSQL、MicrosoftSQLServer、Oracle数据库、MongoDB。
1、Mysql。
MySQL原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQLAB公司,该公司于2008年被升阳微系统(SunMicrosystems)收购。2009年,甲骨文公司(Oracle)收购升阳微系统公司,MySQL成为Oracle旗下产品。
MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用。
2、PostgreSQL。
PostgreSQL可以说是目前功能最强大、特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备。这个起源于加州大学伯克利分校的数据库,现已成为一项国际开发项目,并且拥有广泛的用户群,尤其是在海外,目前国内使用者也越来越多。
PostgreSQL基本上算是见证了整个数据库理论和技术的发展历程,由UCB计算机教授MichaelStonebraker于1986年创建。在此之前,Stonebraker教授主导了关系数据库Ingres研究项目,88年,提出了Postgres的第一个原型设计。
MySQL号称是使用最广泛的开源数据库,而PG则被称为功能最强大的开源数据库。
3、MicrosoftSQLServer。
SQLServer是Microsoft开发的一个关系数据库管理系统(RDBMS),现在是世界上最为常用的数据库。SQLServer 现在是包括内置的商务智能工具,以及一系列的分析和报告工具,可以创建数据库、备份、复制、安全性更好以及更多。
SQLServer是一个高度可扩展的产品,可以从一个单一的笔记本电脑上运行的任何东西或以高倍云服务器网络,或在两者之间任何东西。虽然说是“任何东西”,但是仍然要满足相关的软件和硬件的要求。
4、Oracle数据库。
Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(Client/Server,C/S)或浏览器/服务器(Browser/Server,B/S)体系结构的数据库之一。
Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
5、MongoDB
mongoDB是一个介于关系数据库和非关系数据库之间的开源产品,是最接近于关系型数据库的NoSQL数据库。它在轻量级JSON交换基础之上进行了扩展,即称为BSON的方式来描述其无结构化的数据类型。尽管如此它同样可以存储较为复杂的数据类型。
参考资料来源:百度百科——Mysql
参考资料来源:百度百科——PostgreSQL
参考资料来源:百度百科——MicrosoftSQLServer
参考资料来源:百度百科——Oracle数据库
参考资料来源:百度百科——MongoDB
工具/原料
centos64 linux系统
linux基本命令的熟练使用
方法/步骤
首先查看自己的系统是否安装了postgresql数据库命令如下: rpm -qa | grep postgresql如果没有显示查询结果说明就未安装postgresql数据库
接下来就按照一下postgresql数据库
yum -y install postgresql
使用yum安装可以解决一些软件直接的依赖关系,而且兼容性稳定性都很高
安装成功后会默认生成一个postgres的超级管理用户,为了练习使用,为数据库添加一个测试用户方便我们练习使用
从以前使用mysql的经验,我们也应该初始化数据库然后进行后面的相关 *** 作,初始化数据库,启动数据库,并检查启动是否成功
然后为我们刚才添加的用户设置一个密码并创建一个数据库,练习使用,但是登陆的时候提示我认知失败,所以要修改一下配置文件的认证方式,具体那几种认知有什么不同还得进一步学习,修改完配置文件记得重启服务
再次登陆并创建一个person表
然后随便插入两条数据看看究竟
看看psql的帮助参数看看究竟哪个参数是竖着显示的参数,看了一下貌似\x就是我要找的那个参数
步骤阅读
9
不过这里不想mysql的语法,mysql是自己在语句后面加\g而pgsql有点不同
要先执行\x然后再键入查询语句
在pg数据库中,占位符$1可以重复使用。占位符在SQL语句中用于表示需要动态传入的参数值,$1表示第一个参数,$2表示第二个参数,以此类推。
在一个SQL语句中,如果有多个地方需要使用相同的参数值,那么就可以多次使用占位符$1,并在执行SQL语句时将对应的实际参数值传入。
例如,下面是一个使用了两个占位符$1的SQL语句示例:
```
INSERT INTO users (name, age, gender) VALUES ($1, $2, $1)
```
在上述示例中,第三个字段gender的值使用了第一个占位符$1,表示它的值和第一个参数name相同。
在执行这个SQL语句时,需要按照顺序传入对应的参数值,如:
```
EXECUTE('INSERT INTO users (name, age, gender) VALUES ($1, $2, $1)', 'Tom', 25)
```
其中,第一个参数'Tom'会替换掉第一个占位符$1,同时也会作为gender字段的值;第二个参数25会替换掉第二个占位符$2,作为age字段的值。
以上就是关于pgsql的主键存储方式全部的内容,包括:pgsql的主键存储方式、pg数据库集群一般几台、pg12数据库有没有pgAgent等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)