- 浏览: 1468457 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
getelephantbyid:
make 无法通过.....
php-5.3,php-5.4的thttpd2.25b补丁,及编译方法 -
getelephantbyid:
patch -p1 ../php-5.4.7_thttpd-2 ...
php-5.3,php-5.4的thttpd2.25b补丁,及编译方法 -
zander:
zander 写道c 语言是静态类型语言还是动态类型语言阅读理 ...
什么是动态语言和静态语言? -
zander:
c 语言是静态类型语言还是动态类型语言
什么是动态语言和静态语言? -
lunajiayou:
很有道理,赞一个
跟着苍蝇会找到厕所,跟着蜜蜂会找到花朵
转:http://blog.chinaunix.net/u2/84422/showart_2208498.html
PostgreSQL由于是类似Oracle
的多进程框架,所以能支持高并发的应用场景,这点与Oracle数据库很像,所以把Oracle DBA
转到PostgreSQL数据库上是比较容易的,毕竟PostgreSQL数据库与Oracle数据库很相似。
同时,PostgreSQL数据库的源代码要比MySQL数据库的源代码更容易读懂,如果团队的C语言能力比较强的知,就能在PostgreSQL数据库上做开发
,比方说实现类似greenplum的系统
,这样也能与现在的分布式趋势接轨。
为了说明PostgreSQL的功能,我下面简要对比一下PostgreSQL数据库与MySQL数据库之间的差异:
我们先借助Jametong翻译的"从Oracle迁移到Mysql之前必须知道的50件事",看一看如何把Oracle转到MySQL中的困难:
50 things to know before migrating Oracle to MySQL
by Baron Schwartz,Translated by Jametong
1. 对子查询的优化表现不佳.
2. 对复杂查询的处理较弱
3. 查询优化器不够成熟
4. 性能优化工具与度量信息不足
5. 审计功能相对较弱
6. 安全功能不成熟,甚至可以说很粗糙.没有用户组与角色的概念,没有回收权限的功能(仅仅可以授予权限).当一个用户从不同的主机/网络以同样地用户名/密码登录之后,可能被当作完全不同的用户来处理.没有类似于Oracle的内置的加密功能.
7. 身份验证功能是完全内置的.不支持LDAP,Active Directory以及其它类似的外部身份验证功能.
8. Mysql Cluster可能与你的想象有较大差异.
9. 存储
过程与触发器的功能有限.
10. 垂直扩展性较弱.
11. 不支持MPP(大规模并行处理).
12. 支持SMP(对称多处理器),但是如果每个处理器超过4或8个核(core)时,Mysql的扩展性表现较差.
13. 对于时间
、日期、间隔等时间类型没有秒以下级别的存储类型.
14. 可用来编写存储过程、触发器、计划事件以及存储函数的语言功能较弱.
15. 没有基于回滚(roll-back)的恢复功能,只有前滚(roll-forward)的恢复功能.
16. 不支持快照功能.
17. 不支持数据库链(database link).有一种叫做Federated的存储引擎可以作为一个中转将查询语句传递到远程服务器
的一个表上,不过,它功能很粗糙并且漏洞很多.
18. 数据完整性检查非常薄弱,即使是基本的完整性约束,也往往不能执行。
19. 优化查询语句执行计划的优化器提示非常少.
20. 只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join).
21. 大部分查询只能使用表上的单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还要慢.
22. 不支持位图索引(bitmap index).每种存储引擎都支持不同类型的索引.大部分存储引擎都支持B-Tree索引.
23. 管理
工具较少,功能也不够成熟.
24. 没有成熟能够令人满意的IDE工具与调试程序.可能不得不在文本编辑器中编写存储过程,并且通过往表(调试日志表)中插入记录的方式来做调试.
25. 每个表都可以使用一种不同的存储引擎.
26. 每个存储引擎在行为表现、特性以及功能上都可能有很大差异.
27. 大部分存储引擎都不支持外键.
28. 默认的存储引擎(MyISAM)不支持事务,并且很容易损坏.
29. 最先进最流行的存储引擎InnoDB由Oracle拥有.
30. 有些执行计划只支持特定的存储引擎.特定类型的Count查询,在这种存储引擎中执行很快,在另外一种存储引擎中可能会很慢.
31. 执行计划并不是全局共享的,,仅仅在连接内部是共享的.
32. 全文搜索功能有限, 只适用于非事务性存储引擎. Ditto用于地理信息系统/空间类型和查询.
33. 没有资源控制.一个完全未经授权的用户可以毫不费力地耗尽服务器的所有内存
并使其崩溃,或者可以耗尽所有CPU
资源.
34. 没有集成商业智能(business intelligence), OLAP **数据集等软件
包.
35. 没有与Grid Control类似的工具(http://solutions.mysql
.com/go.php
?id=1296&t=s
)
36. 没有类似于RAC的功能.如果你问”如何使用Mysql来构造RAC”,只能说你问错了问题.
37. 不支持用户自定义类型或域(domain).
38. 每个查询支持的连接的数量最大为61.
39. MySQL支持的SQL语法(ANSI SQL标准)的很小一部分.不支持递归查询、通用表表达式(Oracle的with 语句)或者窗口函数(分析函数).支持部分类似于Merge或者类似特性的SQL语法扩展,不过相对于Oracle来讲功能非常简单.
40. 不支持功能列(基于计算或者表达式的列,Oracle11g 开始支持计算列,以及早期版本就支持虚列(rownum,rowid)).
41. 不支持函数索引,只能在创建基于具体列的索引.
42. 不支持物化视图.
43. 不同的存储引擎之间,统计信息差别很大,并且所有的存储引擎支持的统计信息都只支持简单的基数(cardinality)与一定范围内的记录数(rows-in-a-range). 换句话说,数据分布统计信息是有限的.更新统计信息的机制也不多.
44. 没有内置的负载均衡与故障切换机制.
45. 复制(Replication)功能是异步的,并且有很大的局限性.例如,它是单线程的(single-threaded),因此一个处理能力更强的Slave的恢复速度也很难跟上处理能力相对较慢的Master.
46. Cluster并不如想象的那么完美.或许我已经提过这一点,但是这一点值得再说一遍.
47. 数据字典(INFORMATION_SCHEMA)功能很有限,并且访问速度很慢(在繁忙的系统上还很容易发生崩溃).
48. 不支持在线
的Alter Table操作.
49. 不支持Sequence.
50. 类似于ALTER TABLE或CREATE TABLE一类的操作都是非事务性的.它们会提交未提交的事务,并且不能回滚也不能做灾难恢复.Schame被保存在文件
系统上,这一点与它使用的存储引擎无关.
PostgreSQL数据库可以解决以上问题中的:
1. 对子查询的优化表现不佳
2. 对复杂查询的处理较弱
3. 查询优化器不够成熟
PostgreSQL完全支持SQL-92标准,对SQL的支持也很全面,可以支持复杂的SQL查询。
4. 性能优化工具与度量信息不足
PostgreSQL提供了执行计划和详细的cost值,可以方便看到SQL的执行效率。
9. 存储过程与触发器的功能有限.
PostgreSQL提供了完善的存储过程和触发器支持。
11. 不支持MPP(大规模并行处理)
而PostgreSQL是类似Oracle数据库的架构,是多进程的架构,而不像MySQL是多线程的架构,所以能支持MPP。
18. 数据完整性检查非常薄弱,即使是基本的完整性约束,也往往不能执行。
PostgreSQL提供完善的数据完整性检查机制,支持外键。
20. 只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join).
而PostgreSQL则支持这些表连接类型
21. 大部分查询只能使用表上的单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还要慢.
PostgreSQL
数据不存在这个问题,假设表T的两个字段col1的col2上有两个索引,idx_1和idx_2,那么select * from t where
col1=:a and col2=:b;查询时,PostgreSQL数据库有可能把这个查询转化为select * from t where
col1=:a intersect select * from t where col2=:b,这样两个索引都可以使用上。
25. 每个表都可以使用一种不同的存储引擎.
26. 每个存储引擎在行为表现、特性以及功能上都可能有很大差异.
27. 大部分存储引擎都不支持外键.
28. 默认的存储引擎(MyISAM)不支持事务,并且很容易损坏.
29. 最先进最流行的存储引擎InnoDB由Oracle拥有.
30. 有些执行计划只支持特定的存储引擎.特定类型的Count查询,在这种存储引擎中执行很快,在另外一种存储引擎中可能会很慢.
PostgreSQL只有一种存储引擎,所以不存在上面的情况。而PostgreSQL支持完善的事务。
32. 全文搜索功能有限, 只适用于非事务性存储引擎. Ditto用于地理信息系统/空间类型和查询.
PostgreSQL数据库支持全文搜索,支持更多类型的索引,如B-tree,R-tree, Hash, GiST, GIN,R-tree,GIST,GIN索引可用于空间类型和查询。
37. 不支持用户自定义类型或域(domain).
PostgreSQL支持丰富的类型,同时也支持自定义类型。
39. MySQL支持的SQL语法(ANSI SQL标准)的很小一部分.不支持递归查询、通用表表达式(Oracle的with 语句)或者窗口函数(分析函数).支持部分类似于Merge或者类似特性的SQL语法扩展,不过相对于Oracle来讲功能非常简单.
这些PostgreSQL数据库都支持,如窗口函数。
41. 不支持函数索引,只能在创建基于具体列的索引.
PostgreSQL支持函数索引
49. 不支持Sequence.
PostgreSQL支持sequence
50. 类似于ALTER TABLE或CREATE TABLE一类的操作都是非事务性的.它们会提交未提交的事务,并且不能回滚也不能做灾难恢复.Schame被保存在文
件系统上,这一点与它使用的存储引擎无关.
PostgreSQL不存在这个问题。
评论
msyql性能并不错,就是优化器是个垃圾,本身就有问题,不能分析出最好的执行规划
pgsql基因算法都用了
发表评论
-
mysql报Could not open file '/var/log/mysql/error.log' for error logging: Permissi
2018-12-04 12:35 10300报错的原因是我用转链接把/var/log/目录链接到了其它地方 ... -
postgresql advisory lock实现秒杀
2018-10-21 20:28 1050https://yq.aliyun.com/articles/ ... -
postgresql触发器old的使用
2018-08-30 20:07 2453在insert语句中old的值是null,如果访问null ... -
redis安装
2018-04-30 18:19 394下载最新的msi安装文件 https://github. ... -
monodb安装
2018-04-30 17:57 1275下载https://www.mongodb.com/down ... -
yii2 advanced安装
2017-12-23 01:37 672安装composer https://getcompos ... -
索引与优化like查询
2012-09-17 19:57 10841. like %keyword 索引失效,使用全表扫描 ... -
PostgreSQL中hash索引可能损坏
2010-12-30 22:05 1307http://postgresql.1045698.n5.na ... -
深入理解数据库日志系统原理
2010-12-30 21:29 1563深入理解数据库日志系统原理 一:事务系统 ... -
PostgreSQL配置优化
2010-12-30 14:45 3455PG的配置文件是数据库 目录下的postgresq ... -
存储程序的稳定性以及对索引的影响
2010-12-17 12:51 1006每个函数都有一个易失 ... -
php读取数据库二进制字段
2010-12-03 22:57 1609create table btest(id serial pr ... -
PgSQL数据库分区
2010-11-18 19:49 4643PgSQL数据库分区 :分区的意思就是把逻辑上的一个大表分割 ... -
PostgreSQL帖子汇总
2010-11-12 22:34 1135http://bbs.chinaunix.net/viewth ... -
PostgreSQL与MySQL比较
2010-11-12 22:25 1974转:http://bbs.chinaunix.net/thre ... -
PostgreSQL 8.3.1 全文检索(Full Text Search)
2010-11-12 18:58 1825转自:http://www.blogjava.net/agun ... -
使用postgreSQL+bamboo搭建比lucene方便N倍的全文搜索
2010-11-12 18:50 3558所有用到到包有: cmake-2.6.4.tar.gz (编 ... -
PostgreSql的Bamboo全文索引扩展
2010-11-12 18:49 1176http://code.google.com/p/nlpbam ... -
PostgreSql查看索引
2010-11-11 17:59 9220select * from pg_indexes where ... -
PostgreSql日志记录执行计划
2010-11-11 00:35 1715postgresql.conf配置中加入如下行 sha ...
相关推荐
数据库备份是保障业务连续性和数据安全的关键步骤,尤其对于依赖MySQL和PostgreSQL等关系型数据库存储关键信息的企业而言。这两种数据库管理系统(DBMS)都提供了内置的工具来方便地进行数据备份,使得用户可以在...
总的来说,Nacos 2.1.0版本提供了一个灵活且强大的平台,不仅能够帮助开发者实现服务的管理和配置,还允许他们根据自己的数据库选择进行定制化部署,无论是PostgreSQL还是MySQL,都可以轻松集成。这使得Nacos成为了...
MySQL、PostgreSQL、Oracle比较; 数据库基础知识.ppt
本篇将深入探讨“C#插件用于MySQL and PostgreSQL数据库驱动”这一主题。 首先,让我们了解C#中的数据库连接。C#提供了ADO.NET(ActiveX Data Objects .NET)框架,它是一组用于访问数据的类库,允许开发者与多种...
pgadmin 是一个图形化的数据库管理工具,可以用来管理和维护 PostgreSql 数据库。使用 pgadmin 可以: 1. 管理数据库用户和权限 2. 查看和修改数据库结构 3. 执行 SQL 语句 4. 查看和分析查询结果 使用 pgadmin ...
PostgreSQL 10数据库生成文档工具是一款高效实用的软件,专为PostgreSQL 10数据库设计,旨在简化数据库管理和文档编制工作。通过该工具,用户能够轻松地从数据库中提取信息,生成详细的文档,以便更好地理解和维护...
PostgreSQL MySQL Oracle 数据库设计优化完美攻略 本文将从数据库设计阶段的角度出发,讨论数据库设计优化的重要性和注意事项。数据库设计是整个软件生命周期中非常重要的一部分,它直接影响着系统的性能和可靠性。...
PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析...
nacos的docker镜像,可支持mysql和postgresql版本两种数据库,基于2.1.0版,亲测可用。
国外大牛写的一个mysql数据库转换postgresql的脚本。亲试可以无错误运行。
A5M2是一款功能强大的数据库客户端工具,专为管理和操作多种主流数据库系统设计,包括PostgreSQL、MySQL和Oracle等。这款软件提供了用户友好的界面,使得数据库管理变得更加便捷。其核心特性体现在以下几个方面: 1...
Postgresql数据库运维笔记 数据库运维.pdf
对于PostgreSQL和MySQL这两种广泛使用的开源关系型数据库管理系统,存在许多优秀的GUI客户端,其中TablePlus是颇受欢迎的一款。 **PostgreSQL与MySQL简介** PostgreSQL是一种强大的开源对象关系数据库系统,以其...
python操作链接Oracle、PostgreSQL,MySql数据库增删改查代码,通过PooledDB实现池链接,实际运维中积累
一个PostgreSQL实例可以管理多个数据库,而MySQL实例可以管理一个或多个数据库。 性能 PostgreSQL和MySQL都支持事务处理和锁机制来确保数据的一致性和可靠性。然而,PostgreSQL支持更多的 isolation level,包括...
在数据库结构方面,MySQL与PostgreSQL均将数据库视为命名对象的集合,且每个数据库独立于其他数据库存在。不同之处在于,MySQL的所有数据库共享相同的系统编目,而PostgreSQL中每个数据库都有自己的系统编目,尽管...
标题“dbconvert_mysql_postgresql.zip”表明这是一款用于数据库转换的工具,主要功能是从PostgreSQL数据库转换到MySQL数据库。在IT行业中,数据迁移是常见的需求,尤其是在不同的数据库系统之间。PostgreSQL是一种...
它原生支持使用PostgreSQL作为其数据库系统,但用户可以根据需求将其修改为使用MySQL。在本文中,我们将深入探讨如何将Thingsboard的默认数据库从PostgreSQL更换为MySQL,以便更好地适应你的IT环境。 首先,你需要...
当需要恢复PostgreSQL数据库时,psql命令行工具可以被用来重新导入备份文件到数据库中。该工具不仅可以执行SQL语句,也可以用来恢复数据库备份。恢复操作的命令如下: ``` psql -h <host> -U <username> -d ...