对比Mysql

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

2.任何系统都有他的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍然可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而MySQL明细出现一个波峰后下滑。

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

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

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

6.PG有极其强悍的SQL编程能力,有丰富的统计函数和统计语法支持,比如分析函数(Oracle的叫法,PG里面叫Window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MySQL就差的很远,很多分析功能那个都没有,腾讯内部数据存储主要是Mysql,但是主要的数据分析就是Hadoop+PGsql。

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

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

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

10.Pgsql对于numa架构的支持要比mysql强一些,比mysql对于读的性能要好些,pgsql提交可以完全异步,而mysql的内存表不够实用(表锁原因)

可扩展性
1.存储的功能和程序
2.程序语言:PL/PGSQL, Perl, Python (more)
3.外部数据包装器:使用标准SQL接口连接到其他数据库或流
4.许多提供附加功能的扩展,包括PostGIS

并发性,性能
1.索引
2.高级索引
3.复杂的查询计划期/优化器
4.交互
5.多版本并发控制(MVCC)
6.读取查询的并行化和构建B树索引
7.表分区
8.Sql标准中定义的所有事物隔离级别,包括Serializable
9.即时表达式汇编(JIT)

检索优势
*全文检索

=======================================================================

检索数据(常用)

检索单个列:
SELECT pname FROM product检索多个列:
SELECT pname,market_price,is_hot FROM product检索所有列:
SELECT * FROM product过滤检索结果中的重复数据:
SELECT DISTINCT market_price FROM product
DISTINCT关键字:
1、返回不同的值,使用时放在列名的前面
2、多查询一个及以上列时,除非你查询的所有列的数据都不同,否则所有行都将被检索出来限制检索结果:
SELECT pname FROM product LIMIT 5,5
limit5,5指示mysql返回从行5开始的5行记录

排序检索数据:(常用)

排序数据
SELECT pname FROM product ORDER BY pname按多个列排序数据
SELECT pid,market_price,pname FROM product ORDER BY market_price,pname
按多个列排序时,排序列之间用,隔开,并且按列的顺序来排序数据,先排价格,后排名称指定排序方向
降序排序(按照价格降序排序)
SELECT pid,market_price,pname FROM product ORDER BY market_price DESC升序排序(mysql查询时默认就是升序排序)
SELECT pid,market_price,pname FROM product ORDER BY market_price ASC找出价格最贵的商品(使用order BY 和limit关键字)
SELECT market_price FROM product ORDER BY market_price DESC LIMIT 1

过滤数据:(常用)

使用WHERE子句价格等于19800的商品
SELECT pname,market_price FROM product WHERE market_price=19800价格小于于19800的商品
SELECT pname,market_price FROM product WHERE market_price<19800价格大于800的商品
SELECT pname,market_price FROM product WHERE market_price>800价格在800到10000之间
SELECT pname,market_price FROM product WHERE market_price BETWEEN 800 AND 10000where中的操作符有以下几个
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于> 大于
>= 大于等于
BETWEEN 在指定的两个值之间

数据过滤:(常用)

组合where语句and操作符(同时符合where后面的条件)
SELECT pname,market_price FROM product WHERE market_price>1000 AND is_hot=0or操作符(只需要符合where后面的一个条件的结果都会显示出来)
SELECT pname,market_price FROM product WHERE market_price>1000 OR is_hot=0IN操作符(用来指定条件范围)
SELECT pname,market_price FROM product WHERE market_price IN(238,19800,1120) ORDER BY pnameNOT操作符(否定它之后所跟的条件)
SELECT pname,market_price FROM product WHERE market_price NOT IN(238,19800,1120) ORDER BY pname

用通配符进行过滤(常用)

like操作符(通配符 模糊搜索)%通配符(找出product表中所有商品名以韩版开头的商品)
SELECT pname FROM product WHERE pname LIKE '韩版%'找出product表中商品名称含有“女”的商品,不管开头结尾是什么内容
SELECT pname FROM product WHERE pname LIKE '%女%'下划线_通配符(用途和%一样,不过_只匹配单个字符)SELECT pname,market_price FROM product WHERE market_price LIKE '_99'

正则表达式搜索(常用)

基本字符串匹配SELECT pname FROM product WHERE pname REGEXP '韩版' ORDER BY pname
使用正则表达式需要用REGEXP关键字,并在REGEXP后面跟上正则表达式内容SELECT pname FROM product WHERE pname REGEXP '.版' ORDER BY pname
.是正则表达式语言中一个特殊的字符。它表示匹配任意一个字符Mysql中的正则表达式不区分大小写,如果要区分大小写可以使用BINARY
SELECT pname FROM product WHERE pname REGEXP BINARY 'Abc' ORDER BY pnameOR匹配
SELECT pname FROM product WHERE pname REGEXP 'a|b'几种常见的正则表达式
[0-9] 匹配0-9之间的数字
[123] Ton 匹配1 Ton或者2 Ton或者3 Ton
\\. 匹配特殊字符.
[:alnum:] 任意字母和数字(同[a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
[:blank:] 空格和制表(同[\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与[:print:]相同,但不包括空格
[:LOWER:] 任意小写字母(同[a-z])
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:SPACE:] 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])
[:UPPER:] 任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])匹配多个实例
* 0个或多个匹配
+ 1个或多个匹配(等于{1,})
? 0个或1个匹配(等于{0,1})
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围(m不超过255)定位符
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾

创建计算字段

连接字段(将商品名称和商品价格连接起来)
SELECT CONCAT(pname,'(',market_price,')') FROM product ORDER BY pname
CONCAT()需要一个或多个指定的串,各个串之间用逗号分隔。AS 给字段赋予别名
SELECT CONCAT(pname,'(',market_price,')') AS nameAndPrice FROM product ORDER BY pname执行算术运算
SELECT pname,market_price,shop_price,market_price+shop_price AS sumprice FROM product

使用数据处理函数 (部分常用)

文本处理函数
LEFT() 返回串左边的字符 (常用)
LENGTH() 返回串的长度(常用)
LOCATE() 找出串的一个子串
LOWER() 将串转换为小写
LTRIM() 去掉串左边的空格
RIGHT() 返回串右边的字符
RTRIM() 去掉串右边的空格
SOUNDEX() 返回串的SOUNDEX值
SUBSTRING() 返回子串的字符
UPPER() 将串转换为大写(常用)日期和时间处理函数
ADDDATE() 增加一个日期(天、周等)
ADDTIME() 增加一个时间(时、分等)
CURDATE() 返回当前日期(常用)
CURTIME() 返回当前时间(常用)
DATE() 返回日期时间的日期部分
DATEDIFF() 计算两个日期之差(常用)
DATE_ADD() 高度灵活的日期运算函数
DATE_FORMAT() 返回一个格式化的日期或时间串
DAY() 返回一个日期的天数部分
DAYOFWEEK() 对于一个日期,返回对应的星期几
HOUR() 返回一个时间的小时部分
MINUTE() 返回一个时间的分钟部分(常用)
MONTH() 返回一个日期的月份部分(常用)
NOW() 返回当前日期和时间(常用)
SECOND() 返回一个时间的秒部分
TIME() 返回一个日期时间的时间部分
YEAR() 返回一个日期的年份部分(常用)数值处理函数
ABS() 返回一个数的绝对值
COS() 返回一个角度的余弦
EXP() 返回一个数的指数值
MOD() 返回除操作的余数
PI() 返回圆周率
RAND() 返回一个随机数
SIN() 返回一个角度的正弦
SQRT() 返回一个数的平方根
TAN() 返回一个角度的正切

汇总数据

聚集函数
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和SELECT AVG(market_price) FROM productSELECT MAX(market_price) FROM productSELECT SUM(market_price) FROM product

分组数据

分组函数(常用)
GROUP BY 按照名称分组,查询出表中相同名称的商品各有多少件
SELECT pname,COUNT(*) FROM product GROUP BY pnameHAVING 过滤分组
SELECT pname,COUNT(*) FROM product GROUP BY pname HAVING COUNT(*)>2HAVING和WHERE的差别 这里有另一种理解方法,WHERE在数据
分组前进行过滤,HAVING在数据分组后进行过滤。这是一个重
要的区别,WHERE排除的行不包括在分组中。这可能会改变计
算值,从而影响HAVING子句中基于这些值过滤掉的分组。SELECT语句的执行顺序SELECT 要返回的列或表达式 是
FROM 从中检索数据的表 仅在从表选择数据时使用
WHERE 行级过滤 否
GROUP BY 分组说明 仅在按组计算聚集时使用
HAVING 组级过滤 否
ORDER BY 输出排序顺序 否

postgresql 优势相关推荐

  1. PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的...

    PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报  分类: MYSQL数据库(5)  PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...

  2. PostgreSql优势是什么?

    PostgreSQL是一个开源对象关系型数据库管理系统,并侧重于可扩展性和标准的符合性,被业界誉为"最先进的开源数据库".云数据库PostgreSQL面向企业复杂SQL处理的OLT ...

  3. PostgreSQL数据库安装教程

    关于PostgresSQL PostgresSQL数据库(简称Postgres或)正逐渐成为全球最流行的数据库之一,在DB-Engines官网发布的最新的全球最流行数据库排行榜中,PostgresSQ ...

  4. 湖北移动湛颖:撇开浮夸,正视差距

    2017年10月21-22日,PostgreSQL 2017中国技术大会于深圳科兴科学园国际会议中心圆满收官.拥抱开源,聆听不同,广纳业界同好,与众PGer共话PostgreSQL的前世今生,来年他日 ...

  5. postgre与mysql区别

    SQL兼容性 PostgreSQL 9.5兼容 SQL:2011 子集http://www.postgresql.org/docs/9.5/static/features-sql-standard.h ...

  6. PostgreSQL主要优势

    2019独角兽企业重金招聘Python工程师标准>>> PostgreSQL主要优势: 1. PostgreSQL完全免费,而且是BSD协议,如果你把PostgreSQL改一改,然后 ...

  7. 云数据库 RDS for PostgreSQL的优势和应用

    今天介绍的是:云数据库 RDS for PostgreSQL.华为云数据库 RDS for PostgreSQL.是一种典型的开源关系型数据库,在保证数据可靠性和完整性方面表现出色,支持互联网电商.地 ...

  8. PostgreSQL数据库服务的优势有哪些

    在数据库使用过程中,不难发现一些知名品牌的虚拟主机会提供PostgreSQL数据库服务.那么该服务的优势到底有哪些呢? 该数据库是关系型开源数据库中最专业的,曾多次获得"年度数据库系统&qu ...

  9. POSTGRESQL TOAST 数据扩展存储技术原理与优势

    POSTGRESQL 的TOAST 功能是POSTGRESQL 本身提供对于可变长大字段的管理的方式. 讲此方面的的文章也是比较多的. 这里想提及的是,从TOAST 功能中对数据库系统设计的一种新的认 ...

  10. PostgreSQL与MySQL优势比较

    原文:http://bbs.chinaunix.net/thread-1688208-1-1.html 特性 MySQL PostgreSQL 实例 通过执行 MySQL 命令(mysqld)启动实例 ...

最新文章

  1. fasta和fastq格式文件的shell小练习 http://www.bio-info-trainee.com/3575.html
  2. MySQL Replication 主从复制全方位解决方案
  3. Elasticsearch SkyWalking 分布式链路追踪
  4. 业务 T+1 T+2
  5. arduino char*转string_面试官:String长度有限制吗?是多少?还好我看过
  6. c语言禁止优化某段代码,C语言优化小技巧
  7. Iptables Nat转发
  8. 简易发号SQL,可用于生成指定前缀自增序列,如订单号,生成优惠券码等
  9. 洛谷 P1420 最长连号【最长合法子序列/断则归一】
  10. 微信支付开发(1) JS API支付V3版(转)
  11. Shell脚本学习指南(一)——基本概念
  12. eclipse护眼颜色
  13. 阿里巴巴的安全技术团队是怎么样的?
  14. DSPE二硬脂酰基磷脂酰乙醇胺;磷脂用作药用辅料具有乳化、药物增溶的作用;CAS:1069-79-0
  15. 教您如何查看Win7详细系统版本号
  16. 新生儿婴幼儿宝宝护理知识学习
  17. OpenPortal Wifi认证、Portal协议认证、WEB认证解决方案
  18. 导入的java文件不显示文字_java 引入自定义字体font后出现的硬盘吃光的问题
  19. IE浏览器图片不显示,报DOM7009: 无法解码 URL 处的图像问题的解决方法
  20. Python123.io---星号下三角形

热门文章

  1. 三星a5009Android6.0,三星A5009 6.0 root教程及获取6.0的root权限
  2. A/N GPU架构解析
  3. python生成Androd deviceid
  4. vue禁用浏览器后退
  5. 论我是如何被自己搭建的聊天机器人气死的(自己的搞笑经历)
  6. linux perl环境搭建,Perl 环境安装
  7. 操作系统笔试面试基本内容
  8. MATLAB学习(一)——————format 命令
  9. 计算机系统中设置保护系统还原,win7系统电脑设置系统还原点的操作方法
  10. 多线程编程实例(使用CompletableFuture)