
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版本不一致问题解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)