pgsql比mysql好在哪

pgsql比mysql好在哪,第1张

Pgsql和Mysql的对比

工作中用过这两个数据库,但都不是太深入,仅限于用而已,但给我留下的印象就是Pgsql更好些,因为这两个库我都遇到过数据丢失的问题,前者我通过网上方法加自己的判断有惊无险地恢复了,而后者搜索各种资料加问身边的专家都没办法。

刚网上搜了一下两者的区别,总体的感觉也是前者是最好的开源关系数据库,而后者是互联网行业应用最广泛的数据库, 可能应用等多发现的坑也多,网上相关资料也多。如果让我个人选没特殊要求情况下会选前者。

关于两个的区别可以看知乎上相关问题,回答很精彩,

其中一个如下。

一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。

二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(55版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。

三、PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。

四、PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的 *** 作,这个和PGSQL的MVCC实现有关系。

五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。

六、PG有极其强悍的 SQL 编程能力(9x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL(听李元佳说过,但是没有验证过)。

七、PG 得多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便, *** 作非常简单。

八、一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。

九,对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。

全部替换、散列化处理。

在pg数据库中,将需要脱敏的数据全部替换成固定的字符或字符串,例如将手机号码中的中间几位替换成""号。或者使用散列函数对需要脱敏的数据进行加密处理,将加密后的结果存储到数据库中,例如使用MD5加密算法对用户密码进行散列化处理。

pg是一种特性非常齐全的自由软件的对象-关系型数据库管理系统,是以加州大学计算机系开发的POSTGRES,42版本为基础的对象关系型数据库管理系统。

1先找到psql路径

[root@localhost vge]# which -a psql

/usr/bin/psql

/bin/psql

说明:ln命令用来为文件创建连接。连接类型分为硬连接和符号连接两种,默认的连接是硬连接,如果创建符号连接必须使用“-s”选项。

注意:符号链接文件不是一个独立的文件,它是许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

2使用新版本连接到默认路径

[root@localhost vge]# mv /usr/bin/psql /usr/bin/psql-bk

[root@localhost vge]# ln -s /usr/local/pgsql/bin/psql /usr/bin/psql

由于是使用 yum 安装的 PostgreSQL

安装位置在 /usr/postgresql-12

所以 psql位置在 /usr/postgresql-12/bin/psql

最后一个命令需要改为

[root@localhost vge]# ln -s /usr/postgresql-12/bin/psql /usr/bin/psql

在 PostgreSQL 数据库中,对于 UTF-8 编码的汉字、字母和数字的长度判断,可以使用 `length` 函数。

`length` 函数用于计算字符串中的字符数量(不包括尾部的空格)。对于 UTF-8 编码的字符串来说,一个汉字、字母或数字都是占用一个字符的。因此,可以使用 `length` 函数来统一判断字符串中汉字、字母和数字的长度。

例如,可以使用以下语句来查询一个字符串的长度:

```sql

SELECT length('hello, 世界!'); -- 返回 11

```

这个例子中,字符串 `'hello, 世界!'` 包含了 5 个字母、2 个汉字和 4 个标点符号,但是 `length` 函数计算的结果是 11,因为它把每个字符都当成一个长度来计算。

需要注意的是,对于非 UTF-8 编码的字符串,可能需要使用其他的函数来计算长度。在 PostgreSQL 中,可以使用 `char_length` 函数来计算多字节字符的长度。

postgresql中可以使用pg_dump来备份数据库。pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。

用法:

pg_dump [选项] [数据库名字]

一般选项:

-f, --file=FILENAME output file or directory name

-F, --format=c|d|t|p output file format (custom, directory, tar, plain text)

-v, --verbose 详细模式

-Z, --compress=0-9 被压缩格式的压缩级别

--lock-wait-timeout=TIMEOUT 在等待表锁超时后 *** 作失败

--help 显示此帮助信息, 然后退出

--versoin 输出版本信息, 然后退出

示例:

备份数据库,指令如下:

pg_dump -h 1648223354 -U postgres databasename > C:databasenamebak

开始-运行-cmd d出dos控制台;然后 在控制台里,进入PostgreSQL安装目录bin下:

cd C:Program FilesPostgreSQL90bin

最后执行备份指令:

pg_dump -h 1648223354 -U postgres databasename > C:databasenamebak

指令解释:

pg_dump 是备份数据库指令,1648223354是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;

postgres 是数据库的用户名;databasename 是数据库名。

> 意思是导出到C:databasenamebak文件里,如果没有写路径,单单写databasenamebak文件名,那么备份文件会保存在C: Program FilesPostgreSQL90bin 文件夹里。

推荐学习《Python教程》。

以上就是关于pgsql比mysql好在哪全部的内容,包括:pgsql比mysql好在哪、pg中文怎么脱敏、centos8下postgreSQL入门1.2之psql与server版本不一致问题解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10204793.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存