聚集网(jujiwang.com) - 收录免费分类目录信息软文发布网址提交
免费加入

PostgreSQL 9.0:开创数据库新时代的全面指南 (POSTGRESQL和mysql区别)

文章编号:11734时间:2024-10-01人气:


引言

PostgreSQL 9.0 是开源关系型数据库管理系统 (RDBMS) 的一个里程碑版本,以其强大的功能、可扩展性和可靠性而闻名。本文将深入探讨 PostgreSQL 9.0 的新特性,并将其与流行的竞争对手 MySQL 进行比较。

PostgreSQL 9.0 的新特性

PostgreSQL 9.0 引入了一些开创性的特性,包括:

热备份

热备份允许在数据库正在运行时进行备份,而无需任何停机时间。这对于避免数据丢失和确保业务连续性至关重要。

复制槽

复制槽使从数据库创建多个只读副本成为可能。这提高了可扩展性,并允许在读取密集型应用程序中负载平衡。

PL/Proxy

PL/Proxy 是一种新的编程语言,用于编写存储过程和函数。它提供了更高的安全性

PostgreSQL与MySQL相比,优势何在?

PostgreSQL类似于Oracle的多进程框架,可以支持高并发的应用场景。

如果把OracleDBA转到PostgreSQL数据库上是比较容易的,毕竟PostgreSQL数据库与Oracle数据库很相似。

PostgreSQL几乎支持所有的SQL标准,支持类型相当丰富。 PostgreSQL数据库的源代码要比MySQL数据库的源代码更容易读懂,如果团队的C语言能力比较强的话,就可以在PostgreSQL数据库上做开发,比方说实现类似greenplum的系统,这样也能与现在的分布式趋势接轨。

为了说明PostgreSQL的功能,下面从“从Oracle迁移到Mysql之前必须知道的50件事”简要对比一下PostgreSQL数据库与MySQL数据库之间的差异。

从Oracle迁移到Mysql会面对的50件难事

1、对子查询的优化表现不佳。(PostgreSQL可解决)

2、对复杂查询的处理较弱。(PostgreSQL可解决)

开创数据库新时代的全面指南

3、查询优化器不够成熟。(PostgreSQL可解决)

PostgreSQL完全支持SQL-92标准,对SQL的支持也很全面,可以支持复杂的SQL查询。

4、性能优化工具与度量信息不足。(PostgreSQL可解决)

PostgreSQL提供了执行计划和详细的cost值,可以方便看到SQL的执行效率。

5、审计功能相对较弱。

6、安全功能不成熟,没有用户组与角色的概念,没有回收权限的功能(仅可以授予权限)。 当一个用户从不同的主机/网络以同样的用户名/密码登录之后,可能被当作完全不同的用户来处理,没有类似于Oracle的内置的加密功能。

7、身份验证功能是完全内置的,不支持LDAP、ActiveDirectory或其它类似的外部身份验证功能。

8、MysqlCluster可能与你想象的有较大差异。

9、存储过程与触发器的功能有限。(PostgreSQL可解决)

PostgreSQL提供了完善的存储过程和触发器支持。

10、垂直扩展性较弱。

11、不支持MPP(大规模并行处理)。(PostgreSQL可解决)

PostgreSQL是类似Oracle数据库的多进程架构,而不像MySQL是多线程的架构,所以能支持MPP。

9.0

12、支持SMP(对称多处理器),但是如果每个处理器超过4或8个核(core)时,Mysql的扩展性表现较差。

14、可用来编写存储过程、触发器、计划事件以及存储函数的语言功能较弱。

15、没有基于回滚(roll-back)的恢复功能,只有前滚(roll-forward)的恢复功能。

16、不支持快照功能。

17、不支持数据库链(databaselink)。 有一种叫做Federated的存储引擎可以作为一个中转将查询语句传递到远程服务器的一个表上,不过,它功能很粗糙并且漏洞很多。

18、数据完整性检查非常薄弱,即使是基本的完整性约束,也往往不能执行。(PostgreSQL可解决)

PostgreSQL提供完善的数据完整性检查机制,支持外键。

19、优化查询语句执行计划的优化器提示非常少。

20、只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-mergejoin)与散列连接(hashjoin)。(PostgreSQL可解决)

PostgreSQL则支持这些表连接类型。

21、大部分查询只能使用表上的单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还要慢。(PostgreSQL可解决)

PostgreSQL数据不存在这个问题,假设表T的两个字段col1的col2上有两个索引,idx_1和idx_2,那么select*fromtwherecol1=:aandcol2=:b;查询时,PostgreSQL数据库有可能把这个查询转化为select*fromtwherecol1=:aintersectselect*fromtwherecol2=:b,这样两个索引都可以使用上。

22、不支持位图索引(bitmapindex)。 每种存储引擎都支持不同类型的索引。 大部分存储引擎都支持B-Tree索引。

23、管理工具较少,功能也不够成熟。

24、没有成熟能够令人满意的IDE工具与调试程序。 可能不得不在文本编辑器中编写存储过程,并且通过往表(调试日志表)中插入记录的方式来做调试。

25、每个表都可以使用一种不同的存储引擎。(PostgreSQL可解决)

26、每个存储引擎在行为表现、特性以及功能上都可能有很大差异。(PostgreSQL可解决)

27、大部分存储引擎都不支持外键。(PostgreSQL可解决)

28、默认的存储引擎(MyISAM)不支持事务,并且很容易损坏。(PostgreSQL可解决)

29、最先进最流行的存储引擎InnoDB由Oracle拥有。(PostgreSQL可解决)

30、有些执行计划只支持特定的存储引擎。 特定类型的Count查询,在这种存储引擎中执行很快,在另外一种存储引擎中可能会很慢。 (PostgreSQL可解决)

PostgreSQL只有一种存储引擎,所以不存在上面的情况。 而PostgreSQL支持完善的事务。

31、执行计划并不是全局共享的,,仅仅在连接内部是共享的。

32、全文搜索功能有限,只适用于非事务性存储引擎。 Ditto用于地理信息系统/空间类型和查询。 (PostgreSQL可解决)

PostgreSQL数据库支持全文搜索,支持更多类型的索引,如B-tree,R-tree,Hash,GiST,GIN,R-tree,GIST,GIN索引可用于空间类型和查询。

33、没有资源控制。 一个完全未经授权的用户可以毫不费力地耗尽服务器的所有内存并使其崩溃,或者可以耗尽所有CPU资源。

34、没有集成商业智能(businessintelligence),OLAP**数据集等软件包。

35、没有与GridControl类似的工具

36、没有类似于RAC的功能。 如果你问”如何使用Mysql来构造RAC”,只能说你问错了问题。

37、不支持用户自定义类型或域(domain)。(PostgreSQL可解决)

PostgreSQL支持丰富的类型,同时也支持自定义类型。

38、每个查询支持的连接的数量最大为61。

39、MySQL支持的SQL语法(ANSISQL标准)的很小一部分。 不支持递归查询、通用表表达式(Oracle的with语句)或者窗口函数(分析函数)。 支持部分类似于Merge或者类似特性的SQL语法扩展,不过相对于Oracle来讲功能非常简单。 (PostgreSQL可解决)

这些PostgreSQL数据库都支持,如窗口函数。

40、不支持功能列(基于计算或者表达式的列,Oracle11g开始支持计算列,以及早期版本就支持虚列(rownum,rowid))。

41、不支持函数索引,只能创建基于具体列的索引。(PostgreSQL可解决)

PostgreSQL支持函数索引。

42、不支持物化视图。

43、不同的存储引擎之间,统计信息差别很大,并且所有的存储引擎支持的统计信息都只支持简单的基数(cardinality)与一定范围内的记录数(rows-in-a-range)。 换句话说,数据分布统计信息是有限的。 更新统计信息的机制也不多。

44、没有内置的负载均衡与故障切换机制。

45、复制(Replication)功能是异步的,并且有很大的局限性。 例如,它是单线程的(single-threaded),因此一个处理能力更强的Slave的恢复速度也很难跟上处理能力相对较慢的Master。

46、Cluster并不如想象的那么完美。 或许我已经提过这一点,但是这一点值得再说一遍。

47、数据字典(INFORMATION_SCHEMA)功能很有限,并且访问速度很慢(在繁忙的系统上还很容易发生崩溃)。

48、不支持在线的AlterTable操作。

49、不支持Sequence。(PostgreSQL可解决)

PostgreSQL支持sequence。

50、类似于ALTERTABLE或CREATETABLE一类的操作都是非事务性的。 它们会提交未提交的事务,并且不能回滚也不能做灾难恢复。 Schame被保存在文件系统上,这一点与它使用的存储引擎无关。 (PostgreSQL可解决)

PostgreSQL不存在这个问题。

每种数据库都有不同的应用场景

PostgreSQL具备了更高的可靠性,对数据一致性、完整性的支持高于MySQL,因此PostgreSQL更加适合严格的企业应用场景,MySQL查询速度较快,更适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。

以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!

MySQL与PostgreSQL比较 哪个数据库更好

特性MySQLPostgreSQL实例通过执行 MySQL 命令(mysqld)启动实例。 一个实例可以管理一个或多个数据库。 一台服务器可以运行多个 mysqld 实例。 一个实例管理器可以监视 mysqld 的各个实例。 通过执行 Postmaster 进程(pg_ctl)启动实例。 一个实例可以管理一个或多个数据库,这些数据库组成一个集群。 集群是磁盘上的一个区域,这个区域在安装时初始化并由一个目录组成,所有数据都存储在这个目录中。 使用 initdb 创建第一个数据库。 一台机器上可以启动多个实例。 数据库数据库是命名的对象集合,是与实例中的其他数据库分离的实体。 一个 MySQL 实例中的所有数据库共享同一个系统编目。 数据库是命名的对象集合,每个数据库是与其他数据库分离的实体。 每个数据库有自己的系统编目,但是所有数据库共享 pg_databases。 数据缓冲区通过 innodb_buffer_pool_size 配置参数设置数据缓冲区。 这个参数是内存缓冲区的字节数,InnoDB 使用这个缓冲区来缓存表的数据和索引。 在专用的数据库服务器上,这个参数最高可以设置为机器物理内存量的 80%。 ShaRed_buffers 缓存。 在默认情况下分配 64 个缓冲区。 默认的块大小是 8K。 可以通过设置 文件中的 shared_buffers 参数来更新缓冲区缓存。 数据库连接客户机使用 CONNECT 或 Use 语句连接数据库,这时要指定数据库名,还可以指定用户 id 和密码。 使用角色管理数据库中的用户和用户组。 客户机使用 connect 语句连接数据库,这时要指定数据库名,还可以指定用户 id 和密码。 使用角色管理数据库中的用户和用户组。 身份验证MySQL 在数据库级管理身份验证。 基本只支持密码认证。 PostgreSQL 支持丰富的认证方法:信任认证、口令认证、Kerberos 认证、基于 Ident 的认证、LDAP 认证、PAM 认证加密可以在表级指定密码来对数据进行加密。 还可以使用 AES_ENCRYPT 和 AES_DECRYPT 函数对列数据进行加密和解密。 可以通过 SSL 连接实现网络加密。 可以使用 pgcrypto 库中的函数对列进行加密/解密。 可以通过 SSL 连接实现网络加密。 审计可以对 querylog 执行 grep。 可以在表上使用 PL/pgSQL 触发器来进行审计。 查询解释使用 EXPLAIN 命令查看查询的解释计划。 使用 EXPLAIN 命令查看查询的解释计划。 备份、恢复和日志InnoDB 使用写前(write-ahead)日志记录。 支持在线和离线完全备份以及崩溃和事务恢复。 需要第三方软件才能支持热备份。 在数据目录的一个子目录中维护写前日志。 支持在线和离线完全备份以及崩溃、时间点和事务恢复。 可以支持热备份。 JDBC 驱动程序可以从 参考资料 下载 JDBC 驱动程序。 可以从 参考资料 下载 JDBC 驱动程序。 表类型取决于存储引擎。 例如,NDB 存储引擎支持分区表,内存引擎支持内存表。 支持临时表、常规表以及范围和列表类型的分区表。 不支持哈希分区表。 由于PostgreSQL的表分区是通过表继承和规则系统完成了,所以可以实现更复杂的分区方式。 索引类型取决于存储引擎。 MyISAM:BTREE,InnoDB:BTREE。 支持 B-树、哈希、R-树和 Gist 索引。 约束支持主键、外键、惟一和非空约束。 对检查约束进行解析,但是不强制实施。 支持主键、外键、惟一、非空和检查约束。 存储过程和用户定义函数支持 CREATE PROCEDURE 和 CREATE FUNCTION 语句。 存储过程可以用 SQL 和 C++ 编写。 用户定义函数可以用 SQL、C 和 C++ 编写。 没有单独的存储过程,都是通过函数实现的。 用户定义函数可以用 PL/pgSQL(专用的过程语言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 编写。 触发器支持行前触发器、行后触发器和语句触发器,触发器语句用过程语言复合语句编写。 支持行前触发器、行后触发器和语句触发器,触发器过程用 C 编写。 系统配置文件数据库配置客户机连接文件_ 支持有限的 XML 支持。 有限的 XML 支持。 数据访问和管理服务器OPTIMIZE TABLE —— 回收未使用的空间并消除数据文件的碎片myisamchk -analyze —— 更新查询优化器所使用的统计数据(MyISAM 存储引擎)mysql —— 命令行工具MySQL Administrator —— 客户机 GUI 工具Vacuum —— 回收未使用的空间Analyze —— 更新查询优化器所使用的统计数据psql —— 命令行工具pgAdmin —— 客户机 GUI 工具并发控制支持表级和行级锁。 InnoDB 存储引擎支持 READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ 和 SERIALIZABLE。 使用 SET TRANSACTION ISOLATION LEVEL 语句在事务级设置隔离级别。 支持表级和行级锁。 支持的 ANSI 隔离级别是 Read Committed(默认 —— 能看到查询启动时数据库的快照)和 Serialization(与 Repeatable Read 相似 —— 只能看到在事务启动之前提交的结果)。 使用 SET TRANSACTION 语句在事务级设置隔离级别。 使用 SET SESSION 在会话级进行设置。 MySQL相对于PostgreSQL的劣势:MySQLPostgreSQL最重要的引擎InnoDB很早就由Oracle公司控制。 目前整个MySQL数据库都由Oracle控制。 BSD协议,没有被大公司垄断。 对复杂查询的处理较弱,查询优化器不够成熟很强大的查询优化器,支持很复杂的查询处理。 只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join)。 都支持性能优化工具与度量信息不足提供了一些性能视图,可以方便的看到发生在一个表和索引上的select、delete、update、insert统计信息,也可以看到cache命中率。 网上有一个开源的pgstatspack工具。 InnoDB的表和索引都是按相同的方式存储。 也就是说表都是索引组织表。 这一般要求主键不能太长而且插入时的主键最好是按顺序递增,否则对性能有很大影响。 不存在这个问题。 大部分查询只能使用表上的单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还要慢。 不存在这个问题表增加列,基本上是重建表和索引,会花很长时间。 表增加列,只是在数据字典中增加表定义,不会重建表存储过程与触发器的功能有限。 可用来编写存储过程、触发器、计划事件以及存储函数的语言功能较弱除支持pl/pgsql写存储过程,还支持perl、python、Tcl类型的存储过程:pl/perl,pl/python,pl/tcl。 也支持用C语言写存储过程。 不支持Sequence。 支持不支持函数索引,只能在创建基于具体列的索引。 不支持物化视图。 支持函数索引,同时还支持部分数据索引,通过规则系统可以实现物化视图的功能。 执行计划并不是全局共享的, 仅仅在连接内部是共享的。 执行计划共享MySQL支持的SQL语法(ANSI SQL标准)的很小一部分。 不支持递归查询、通用表表达式(Oracle的with 语句)或者窗口函数(分析函数)。 都 支持不支持用户自定义类型或域(domain)支持。 对于时间、日期、间隔等时间类型没有秒以下级别的存储类型可以精确到秒以下。 身份验证功能是完全内置的,不支持操作系统认证、PAM认证,不支持LDAP以及其它类似的外部身份验证功能。 支持OS认证、Kerberos 认证 、Ident 的认证、LDAP 认证、PAM 认证不支持database link。 有一种叫做Federated的存储引擎可以作为一个中转将查询语句传递到远程服务器的一个表上,不过,它功能很粗糙并且漏洞很多有dblink,同时还有一个dbi-link的东西,可以连接到oracle和mysql上。 Mysql Cluster可能与你的想象有较大差异。 开源的cluster软件较少。 复制(Replication)功能是异步的,并且有很大的局限性.例如,它是单线程的(single-threaded),因此一个处理能力更强的Slave的恢复速度也很难跟上处理能力相对较慢的Master.有丰富的开源cluster软件支持。 explain看执行计划的结果简单。 explain返回丰富的信息。 类似于ALTER TABLE或CREATE TABLE一类的操作都是非事务性的.它们会提交未提交的事务,并且不能回滚也不能做灾难恢复 DDL也是有事务的。 PostgreSQL主要优势:1. PostgreSQL完全免费,而且是BSD协议,如果你把PostgreSQL改一改,然后再拿去卖钱,也没有人管你,这一点很重要,这表明了PostgreSQL数据库不会被其它公司控制。 oracle数据库不用说了,是商业数据库,不开放。 而MySQL数据库虽然是开源的,但现在随着SUN被oracle公司收购,现在基本上被oracle公司控制,其实在SUN被收购之前,MySQL中最重要的InnoDB引擎也是被oracle公司控制的,而在MySQL中很多重要的数据都是放在InnoDB引擎中的,反正我们公司都是这样的。 所以如果MySQL的市场范围与oracle数据库的市场范围冲突时,oracle公司必定会牺牲MySQL,这是毫无疑问的。 2. 与PostgreSQl配合的开源软件很多,有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这在MySQL下则比较困难。 3. PostgreSQL源代码写的很清晰,易读性比MySQL强太多了,怀疑MySQL的源代码被混淆过。 所以很多公司都是基本PostgreSQL做二次开发的。 4. PostgreSQL在很多方面都比MySQL强,如复杂SQL的执行、存储过程、触发器、索引。 同时PostgreSQL是多进程的,而MySQL是线程的,虽然并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL的总体处理性能不如PostgreSQL,原因是MySQL的线程无法充分利用CPU的能力。 目前只想到这些,以后想到再添加,欢迎大家拍砖。 PostgreSQL与oracle或InnoDB的多版本实现的差别PostgreSQL与oracle或InnoDB的多版本实现最大的区别在于最新版本和历史版本是否分离存储,PostgreSQL不分,而oracle和InnoDB分,而innodb也只是分离了数据,索引本身没有分开。 PostgreSQL的主要优势在于: 1. PostgreSQL没有回滚段,而oracle与innodb有回滚段,oracle与Innodb都有回滚段。 对于oracle与Innodb来说,回滚段是非常重要的,回滚段损坏,会导致数据丢失,甚至数据库无法启动的严重问题。 另由于PostgreSQL没有回滚段,旧数据都是记录在原先的文件中,所以当数据库异常crash后,恢复时,不会象oracle与Innodb数据库那样进行那么复杂的恢复,因为oracle与Innodb恢复时同步需要redo和undo。 所以PostgreSQL数据库在出现异常crash后,数据库起不来的几率要比oracle和mysql小一些。 2. 由于旧的数据是直接记录在数据文件中,而不是回滚段中,所以不会象oracle那样经常报ora-错误。 3. 回滚可以很快完成,因为回滚并不删除数据,而oracle与Innodb,回滚时很复杂,在事务回滚时必须清理该事务所进行的修改,插入的记录要删除,更新的记录要更新回来(见row_undo函数),同时回滚的过程也会再次产生大量的redo日志。 4. WAL日志要比oracle和Innodb简单,对于oracle不仅需要记录数据文件的变化,还要记录回滚段的变化。 PostgreSQL的多版本的主要劣势在于: 1、最新版本和历史版本不分离存储,导致清理老旧版本需要作更多的扫描,代价比较大,但一般的数据库都有高峰期,如果我们合理安排VACUUM,这也不是很大的问题,而且在PostgreSQL9.0中VACUUM进一步被加强了。 2、由于索引中完全没有版本信息,不能实现Coverage index scan,即查询只扫描索引,直接从索引中返回所需的属性,还需要访问表。 而oracle与Innodb则可以;进程模式与线程模式的对比PostgreSQL和oracle是进程模式,MySQL是线程模式。 进程模式对多CPU利用率比较高。 进程模式共享数据需要用到共享内存,而线程模式数据本身就是在进程空间内都是共享的,不同线程访问只需要控制好线程之间的同步。 线程模式对资源消耗比较少。 所以MySQL能支持远比oracle多的更多的连接。 对于PostgreSQL的来说,如果不使用连接池软件,也存在这个问题,但PostgreSQL中有优秀的连接池软件软件,如pgbouncer和pgpool,所以通过连接池也可以支持很多的连接。 堆表与索引组织表的的对比Oracle支持堆表,也支持索引组织表PostgreSQL只支持堆表,不支持索引组织表Innodb只支持索引组织表索引组织表的优势:表内的数据就是按索引的方式组织,数据是有序的,如果数据都是按主键来访问,那么访问数据比较快。 而堆表,按主键访问数据时,是需要先按主键索引找到数据的物理位置。 索引组织表的劣势:索引组织表中上再加其它的索引时,其它的索引记录的数据位置不再是物理位置,而是主键值,所以对于索引组织表来说,主键的值不能太大,否则占用的空间比较大。 对于索引组织表来说,如果每次在中间插入数据,可能会导致索引分裂,索引分裂会大大降低插入的性能。 所以对于使用innodb来说,我们一般最好让主键是一个无意义的序列,这样插入每次都发生在最后,以避免这个问题。 由于索引组织表是按一个索引树,一般它访问数据块必须按数据块之间的关系进行访问,而不是按物理块的访问数据的,所以当做全表扫描时要比堆表慢很多,这可能在OLTP中不明显,但在数据仓库的应用中可能是一个问题。 PostgreSQL9.0中的特色功能: PostgreSQL中的Hot Standby功能也就是standby在应用日志同步时,还可以提供只读服务,这对做读写分离很有用。 这个功能是oracle11g才有的功能。 PostgreSQL异步提交(Asynchronous Commit)的功能:这个功能oracle中也是到oracle11g R2才有的功能。 因为在很多应用场景中,当宕机时是允许丢失少量数据的,这个功能在这样的场景中就特别合适。 在PostgreSQL9.0中把synchronous_commit设置为false就打开了这个功能。 需要注意的是,虽然设置为了异步提交,当主机宕机时,PostgreSQL只会丢失少量数据,异步提交并不会导致数据损坏而数据库起不来的情况。 MySQL中没有听说过有这个功能。 PostgreSQL中索引的特色功能: PostgreSQL中可以有部分索引,也就是只能表中的部分数据做索引,create index 可以带where 条件。 同时PostgreSQL中的索引可以反向扫描,所以在PostgreSQL中可以不必建专门的降序索引了。

三分钟!彻底搞懂PostgreSQL 和 MySQL 区别之分

PostgreSQL 和 MySQL 是将数据组织成表的关系数据库。 这些表可以根据每个表共有的数据链接或关联。 关系数据库使您的企业能够更好地了解可用数据之间的关系,并帮助获得新的见解以做出更好的决策或发现新的机会。 PostgreSQL 和 MySQL 都依赖于 SQL(结构化查询语言),这是与管理系统交互的标准语言。 SQL 允许使用具有简单结构的几行源代码连接表,大多数非技术员工可以快速学习。 使用 SQL,分析师不需要知道订单表在磁盘上的位置、如何执行查找以查找特定订单或如何连接订单表和客户表。 数据库编译查询并计算出正确的数据点。 MySQL 和 PostgreSQL 都支持 JavaScript Object Notation (JSON) 存储和传输数据,尽管 PostgreSQL 也支持 JSONB,这是 JSON 的二进制版本,它消除了键的重复和无关的空格。 除了传统的支持机制外,这两个数据库都提供强大的社区支持。 PostgreSQL,也称为 Postgres,是一种开源关系数据库,因其可靠性、灵活性和对开放技术标准的支持而享有盛誉。 PostgreSQL 支持非关系和关系数据类型。 它被称为当今可用的最兼容、最稳定和最成熟的关系数据库之一,并且可以轻松处理复杂的查询。 PostgreSQL 的特性包括: PostgreSQL 这是一个“一刀切”的解决方案,适用于许多寻求经济高效的方法来改进其数据库管理系统 (DBMS) 的企业。 它具有足够的可扩展性和多功能性,可以通过强大的扩展生态系统快速支持各种专业用例,涵盖时间序列数据类型和地理空间分析等工作。 作为开源数据库解决方案构建的 PostgreSQL 完全不受许可限制、供应商锁定的可能性或过度部署的风险。 PostgreSQL 通过对象关系数据库管理系统 (ORDBMS) 进行管理。 PostgreSQL 负责管理业务活动的在线事务处理 (OLTP)协议的企业数据库管理员提供了理想的解决方案,包括电子商务、客户关系管理系统 (CRM) 和财务分类帐。 它也是管理接收、创建和生成的数据分析的理想选择。 这些是 PostgreSQL 的一些主要优点: MySQL — 一种快速、可靠、可扩展且易于使用的开源关系数据库系统 — 旨在处理关键任务、高负载的生产应用程序。 它是一种常见且易于启动的数据库,内存、磁盘和 CPU 利用率较低,有关系数据库管理系统 (RDMS) 管理。 MySQL Community Edition 是一个由活跃的在线社区支持的免费下载版本。 MySQL 功能包括所有 SQL 标准命令以及事务和 ACID 合规性(代表原子性、一致性、隔离性和持久性)。 两个最常见的关系数据库是什么 MySQL 和 Oracle。 MySQL 不是 SQL Server 的同义词,SQL Server 是 Microsoft 许可产品,与 MAC OS X 缺乏兼容性。 MariaDB 经常与 MySQL 混淆,它是 MySQL 的一个开源分支,速度更快,提供更多存储引擎 (12),但功能有限。 MySQL 和 MariaDB 使用的存储引擎都是 InnoDB。 InnoDB 提供标准的 ACID 兼容特性。 与 MySQL 不同,MariaDB 不支持数据屏蔽或动态列表。 MySQL 通常用作 Web 数据库来存储各种信息类型,从单个信息数据点到为组织提供的产品或服务的完整列表。 它是LAMP(Linux 操作系统、Apache HTTP 服务器、MySQL RDBMS 和 PHP 编程语言)的基础组件,这是一种有助于创建API、Web 应用程序和网站的软件堆栈模型。 MySQL Workbench 是一个单一的、集成的可视化 SQL 平台,用于 MySQL 数据库的创建、开发、设计和管理。 MySQL 为市场提供了许多好处,包括: PostgreSQL 和 MySQL 之间有很多不同之处。 特性、功能和优势方面的一些差异如下: 总之,PostgreSQL 和 MySQL 都有不同的用途,它们之间的选择取决于企业目标和资源。 一般来说,PostgreSQL 是一个更强大、更高级的数据库管理系统,非常适合需要在大型环境中快速执行复杂查询的组织。 但是,对于预算和空间更受限制的公司来说,MySQL 是一个理想的解决方案。

MySQL数据库与PostgreSQL数据库比较 哪个数据库更好些?

如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。 MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。 你主要的问题可能是:哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?

在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的。 你希望一开始就选择正确。 两个流行的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品。 对这两个开源数据库的高层次概览将会有助于你选择最适合自己需要的。

MySQL相对来说比较年轻,首度出现在1994年。 它声称自己是最流行的开源数据库。 MySQL就是LAMP(用于Web开发的软件包,包括 Linux、Apache及Perl/PHP/Python)中的M。 构建在LAMP栈之上的大多数应用都会使用MySQL,包括那些知名的应用,如 WordPress、Drupal、Zend及phpBB等。

一开始,MySQL的设计目标是成为一个快速的Web服务器后端,使用快速的索引序列访问方法(ISAM),不支持ACID。 经过早期快速的发展之 后,MySQL开始支持更多的存储引擎,并通过InnoDB引擎实现了ACID。 MySQL还支持其他存储引擎,提供了临时表的功能(使用MEMORY存 储引擎),通过MyISAM引擎实现了高速读的数据库,此外还有其他的核心存储引擎与第三方引擎。

MySQL的文档非常丰富,有很多质量不错的免费参考手册、图书与在线文档,还有来自于Oracle和第三方厂商的培训与支持。

MySQL近几年经历了所有权的变更和一些颇具戏剧性的事件。 它最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。 Oracle支持MySQL的多个版 本:Standard、Enterprise、Classic、Cluster、Embedded与Community。 其中有一些是免费下载的,另外一 些则是收费的。 其核心代码基于GPL许可,对于那些不想使用GPL许可的开发者与厂商来说还有商业许可可供使用。

现在,基于最初的MySQL代码还有更多的数据库可供选择,因为几个核心的MySQL开发者已经发布了MySQL分支。 最初的MySQL创建者之一 Michael Monty Widenius貌似后悔将MySQL卖给了Sun公司,于是又开发了他自己的MySQL分支MariaDB,它是免费的,基于GPL许可。 知名的 MySQL开发者Brian Aker所创建的分支Drizzle对其进行了大量的改写,特别针对多CPU、云、网络应用与高并发进行了优化。

PostgreSQL

PostgreSQL标榜自己是世界上最先进的开源数据库。 PostgreSQL的一些粉丝说它能与Oracle相媲美,而且没有那么昂贵的价格和傲慢的客服。 它拥有很长的历史,最初是1985年在加利福尼亚大学伯克利分校开发的,作为Ingres数据库的后继。

PostgreSQL是完全由社区驱动的开源项目,由全世界超过1000名贡献者所维护。 它提供了单个完整功能的版本,而不像MySQL那样提供了 多个不同的社区版、商业版与企业版。 PostgreSQL基于自由的BSD/MIT许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声 明即可。

可靠性是PostgreSQL的最高优先级。 它以坚如磐石的品质和良好的工程化而闻名,支持高事务、任务关键型应用。 PostgreSQL的文档非 常精良,提供了大量免费的在线手册,还针对旧版本提供了归档的参考手册。 PostgreSQL的社区支持是非常棒的,还有来自于独立厂商的商业支持。

数据一致性与完整性也是PostgreSQL的高优先级特性。 PostgreSQL是完全支持ACID特性的,它对于数据库访问提供了强大的安全性 保证,充分利用了企业安全工具,如Kerberos与OpenSSL等。 你可以定义自己的检查,根据自己的业务规则确保数据质量。 在众多的管理特性 中,point-in-time recovery(PITR)是非常棒的特性,这是个灵活的高可用特性,提供了诸如针对失败恢复创建热备份以及快照与恢复的能力。 但这并不是 PostgreSQL的全部,项目还提供了几个方法来管理PostgreSQL以实现高可用、负载均衡与复制等,这样你就可以使用适合自己特定需求的功能 了。

平台

MySQL与PostgreSQL都出现在一些高流量的Web站点上:

MySQL:Slashdot、Twitter、Facebook与Wikipedia

PostgreSQL:Yahoo使用了一个修改的PostgreSQL数据库来处理每天数以亿计的事件,还有Reddit和Disqus

MySQL与PostgreSQL都能运行在多个操作系统上,如Linux、Unix、Mac OS X与Windows。 他们都是开源、免费的,因此测试他们时的唯一代价就是你的时间与硬件。 他们都很灵活且具有可伸缩性,可用在小型系统和大型分布式系统 上。 MySQL在一个领域上要比PostgreSQL更进一步,那就是它的触角延伸到了嵌入式领域,这是通过libmysqld实现的。 PostgreSQL不支持嵌入式应用,依然坚守在传统的客户端/服务器架构上。

MySQL通常被认为是针对网站与应用的快速数据库后端,能够进行快速的读取和大量的查询操作,不过在复杂特性与数据完整性检查方面不太尽如人意。 PostgreSQL是针对事务型企业应用的严肃、功能完善的数据库,支持强ACID特性和很多数据完整性检查。 他们二者都在某些任务上具有很快的速 度,MySQL不同存储引擎的行为有较大差别。 MyISAM引擎是最快的,因为它只执行很少的数据完整性检查,适合于后端读操作较多的站点,不过对于包含 敏感数据的读/写数据库来说就是个灾难了,因为MyISAM表最终可能会损坏。 MySQL提供了修复MySQL表的工具,不过对于敏感数据来说,支持 ACID特性的InnoDB则是个更好的选择。

与之相反,PostgreSQL则是个只有单一存储引擎的完全集成的数据库。 你可以通过调整文件的参数来改进性能,也可以调整查询与事务。 PostgreSQL文档对于性能调优提供了非常详尽的介绍。

MySQL与PostgreSQL都是高可配置的,并且可以针对不同的任务进行相应的优化。 他们都支持通过扩展来添加额外的功能。

一个常见的误解就是MySQL要比PostgreSQL更容易学习。 关系数据库系统都是非常复杂的,这两个数据库的学习曲线其实是差不多的。

标准兼容性

PostgreSQL旨在实现SQL兼容性(当前标准是ANSI-SQL:2008)。 MySQL则兼容大部分SQL,不过还有自己的扩展,可以支 持NoSQL特性,这在参考手册中都有介绍。 每种方式都有优缺点。 兼容标准会让数据库管理员、数据库开发者与应用开发者更舒服一些,因为这意味着他们只需 学习一套标准、一套特性和命令即可。 这会节省时间,提升效率,也不会被锁定在特定的厂商上。

支持使用非标准的自定义功能的人们认为这样可以快速采用新的特性,而不必等待标准进程完成。 ANSI/ISO标准在不断演化,因此标准兼容性也是个 变化的目标:知名的关系型数据库Microsoft SQL Server、Oracle与IBM DB2也只是部分兼容于标准。

结论

虽然有不同的历史、引擎与工具,不过并没有明确的参考能够表明这两个数据库哪一个能够适用于所有情况。 很多组织喜欢使用PostgreSQL,因为 它的可靠性好,在保护数据方面很擅长,而且是个社区项目,不会陷入厂商的牢笼之中。 MySQL更加灵活,提供了更多选项来针对不同的任务进行裁剪。 很多时 候,对于一个组织来说,对某个软件使用的熟练程度要比特性上的原因更重要。

三分钟!彻底搞懂PostgreSQL 和 MySQL 区别之分

了解PostgreSQL和MySQL之间的区别对于选择合适的关系数据库至关重要。 这两种数据库系统都是用于组织数据的表关联型数据库,通过SQL查询语言进行操作,使得非技术人员也能便捷地处理数据。 尽管它们都支持SQL和JSON数据格式,但PostgreSQL的特性更为丰富,例如其特有的JSONB格式能优化数据存储。 PostgreSQL作为开源的Postgres,以其可靠性、灵活性和对开放标准的支持而闻名,能够处理复杂查询,适用于需要高效率和多功能性的企业环境。 相比之下,MySQL以快速、易用和成本效益高见长,特别适合Web开发和轻量级应用。 它常见于LAMP架构,易于部署和管理,而MySQL Community Edition提供了免费下载。 InnoDB存储引擎是MySQL和MariaDB的共同点,但MariaDB在功能和扩展性上略逊一筹。 在使用场景上,PostgreSQL适合需要高级查询功能的大型组织,而MySQL更适合预算有限或资源受限的公司。 选择哪个数据库取决于企业的具体需求和资源条件。 无论选择哪个,都需要根据实际场景进行评估。



相关标签: 开创数据库新时代的全面指南POSTGRESQL和mysql区别PostgreSQL9.0

上一篇:PostgreSQL90精通解锁数据库管理和性能优化

下一篇:使用Websocket增强Web应用交互性实时更新和

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/3a4df0978a6364a3abbe.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
随机文章
巧用rm命令:优化文件删除流程 (rm命令怎么用)

巧用rm命令:优化文件删除流程 (rm命令怎么用)

简介rm命令是Linux系统中用于删除文件和目录的命令,它是一个非常强大的命令,提供了许多选项来控制删除操作的行为,熟练掌握rm命令可以帮助我们更有效地管理文件系统,并避免意外删除重要文件,基本语法rm命令的基本语法如下,rm[选项]文件或目录其中,选项可以指定要执行的不同操作,例如,i,在删除文件或目录之前提示确认,f,强制删除,...。

最新资讯 2024-09-27 22:20:09

揭开进度条的艺术:在设计中创造有意义、引人入胜和高效的体验 (揭开进度条的英文翻译)

揭开进度条的艺术:在设计中创造有意义、引人入胜和高效的体验 (揭开进度条的英文翻译)

引言在数字时代,进度条已成为用户界面设计中无处不在的元素,它们向用户传达有关任务的当前状态和预计完成时间的信息,并不是所有的进度条都是平等的,有些进度条虽然有用且高效,但有些却令人沮丧且无效,在本文中,我们将探讨设计有效进度条的艺术,使它们成为用户体验的有价值部分,我们将探讨以下关键方面,意义性,进度条应传达明确且有用的信息,引人入胜...。

最新资讯 2024-09-27 16:29:53

解锁生产力的秘诀:必备的在线工具和资源 (生产力解决什么问题)

解锁生产力的秘诀:必备的在线工具和资源 (生产力解决什么问题)

生产力解决的问题在当今快节奏的数字世界中,提升生产力至关重要,许多人面临着阻碍他们达到最佳工作效率的挑战,这些挑战包括,注意力分散任务管理混乱沟通不畅时间浪费压力和倦怠必备的在线工具和资源幸运的是,有许多在线工具和资源可以帮助我们克服这些挑战,提高生产力,以下是必备的工具和资源,1.任务管理工具任务管理工具可以帮助我们组织任务、设定优...。

技术教程 2024-09-25 22:03:17

免费下载您最喜爱的网站源代码,轻松定制您的在线体验 (免费下载最新版新华字典)

免费下载您最喜爱的网站源代码,轻松定制您的在线体验 (免费下载最新版新华字典)

欢迎来到我们的网站,在这里您可以免费下载最新版新华字典,新华字典是汉语最权威的字典之一,收录了海量的汉字、词语和短语,有了新华字典,您可以轻松查询汉字的读音、释义、组词和用法,我们提供的新华字典是电子版,您可以在电脑、手机或平板电脑上使用,电子版新华字典具有以下优点,体积小巧,方便携带查询方便,支持全文检索可以随时随地使用,不受网络限...。

本站公告 2024-09-16 11:51:38

在 PHP 程序中使用 include_once 的最佳实践和陷阱 (php程序可以在任意环境中执行)

在 PHP 程序中使用 include_once 的最佳实践和陷阱 (php程序可以在任意环境中执行)

include,once是PHP中一个非常有用的函数,它允许您在脚本中包含其他文件,这在需要重复使用代码或从外部文件加载函数和类时非常方便,最佳实践仅包含一次文件,include,once函数的名称很容易理解,includeonce,仅包含一次,在脚本中包含同一文件多次是不行的,它将导致错误或意外的行为,使用绝对路径,include...。

互联网资讯 2024-09-16 02:05:53

揭秘 PHP 抽象编程的常见陷阱:避免错误并构建健壮的应用程序 (php抽奖活动算法)

揭秘 PHP 抽象编程的常见陷阱:避免错误并构建健壮的应用程序 (php抽奖活动算法)

揭秘PHP抽象编程的常见陷阱,避免错误并构建健壮的应用程序简介抽象编程是PHP中一项强大的功能,它允许您创建松散耦合、可扩展且可维护的代码,像任何强大的工具一样,在抽象编程中也存在一些潜在的陷阱,在文章中,我们将探讨使用PHP抽象编程时最常见的陷阱,并提供避免这些陷阱并构建健壮应用程序的建议,抽象类和接口陷阱,未能正确理解抽象类和接口...。

技术教程 2024-09-15 09:58:42

优化您的新闻网站:全面指南 (新闻稿件优化)

优化您的新闻网站:全面指南 (新闻稿件优化)

持续关注技术优化、内容质量、用户体验、SEO和社交媒体整合,您可以建立一个成功的新闻网站,它将成为您目标受众的重要信息和参与来源,...。

技术教程 2024-09-14 16:20:49

图像分类的挑战:理解图像背后的含义 (图像分类的挑战)

图像分类的挑战:理解图像背后的含义 (图像分类的挑战)

引言图像分类是一项基本计算机视觉任务,它涉及将图像分配到预定义类别中,这项任务看似简单,但在现实世界中却面临着许多挑战,因为计算机需要理解图像背后的含义才能正确分类,挑战1.视觉变异图像中的物体可能因视角、照明、遮挡和背景而产生显着差异,这些变异会给分类器造成混淆,使其难以识别图像中对象的真实本质,2.语义差距图像中包含的含义与人类对...。

本站公告 2024-09-10 09:47:47

提升客户满意度:使用在线客服系统源码打造无缝的客户交互 (提升客户满意度的措施和方法)

提升客户满意度:使用在线客服系统源码打造无缝的客户交互 (提升客户满意度的措施和方法)

在竞争激烈的市场中,客户满意度至关重要,通过提供卓越的客户服务,企业可以建立客户忠诚度、提升品牌信誉,并最终增加盈利能力,在线客服系统源码是打造无缝客户交互的关键工具,通过利用这些开源解决方案,企业可以快速轻松地部署功能强大的客服平台,满足客户不断变化的需求,在线客服系统源码的优势低成本,开源解决方案通常免费或低成本,这使企业能够在不...。

最新资讯 2024-09-08 23:11:37

文件共享应用程序(文件共享应用怎么打开)

文件共享应用程序(文件共享应用怎么打开)

什么是文件共享应用程序,文件共享应用程序是一种软件,它允许用户在不同设备和用户之间共享文件,这些应用程序通过在云中存储文件来工作,从而允许用户从任何地方访问它们,文件共享应用程序有多种用途,包括,与同事协作与朋友和家人分享照片和视频备份重要文件在不同的设备之间传输文件如何选择文件共享应用程序有许多不同的文件共享应用程序可供选择,因此选...。

互联网资讯 2024-09-06 12:39:05

安阳惊魂: 40年前撼动中国的真实灵异事件 (安阳灵异事件真相真假)

安阳惊魂: 40年前撼动中国的真实灵异事件 (安阳灵异事件真相真假)

安阳灵异事件是中国近代史上著名的灵异事件之一,1983年,河南省安阳市发生了多起离奇事件,引发了全国轰动,这些事件包括,多地的灵异传言、群众的集体发烧、疑似目击者失踪和死亡等,事件经过1983年4月,安阳市郊区开始流传着一些离奇的传言,人们说,当地有一个叫牛鬼的怪物,在夜间出没,专门袭击落单的行人,传言迅速蔓延,引发了群众的恐慌,与此...。

互联网资讯 2024-09-03 02:08:12

免费的装修设计网站有哪些 (免费的装修设计软件)

免费的装修设计网站有哪些 (免费的装修设计软件)

其实装修设计网站有很多很多,最重要的一点,就是找到比较适合的网站,这样一说,就可以解决掉我们装修设计方面的很多小问题的,那免费的装修设计网站有哪些呢?以及免费的装修设计常见的猫腻是什么呢?针对这两个问题,我们带大家一起了解下吧,请大家往下看,一、免费的装修设计网站有哪些?1.爱福窝爱福窝在线装修设计软件是一款免费的室内设计软件,简单易...。

技术教程 2024-09-02 01:37:03