admin 管理员组文章数量: 1086019
2024年4月14日发(作者:java用switch语句判断成绩)
第7卷第2期
2 0 1 1年4月
沈阳工程学院学报(自然科学版)
Journal of Shenyang Institute of Engineering(Natural Science)
V01.7 NO.2
Apt.2011
MySQL和PostgreSQL的对比选择
刘 鑫
(沈阳工程学院计算机基础教学部,沈阳110136)
摘要:在Linux系统下,通过对MySQL 4.0.2-alpha与PostgreSQL 7.2多方面的对比,从而分析两者的优缺点.其结果
显示:MySQL适合Windows操作系统,处理数据速度快;PostgreSQL对数据完整性和严肃性要求高,对商业数据逻辑封
装性好,尤其是地理数据、密集运算、重型负载应用等优势特别明显,如果数据量很大且无法预测,推荐使用PostgreSQL.
关键词:MySQL;PostgreSQL;封装
中图分类号:TP31l 文献标识码:B 文章编号:1673—1603(2011)02—0171—04
1 MySQL和PostgreSQL简介
MySQL是一个小型关系型数据库管理系统,开发
者是瑞典MySQL AB公司,该公司在2008年被Sun
公司收购,2009年Sun公司又被Oracle公司收购.目
前MySQL广泛地应用在Intemet上的中小型网站中.
的商业公司,而PostgreSQL的身后是一个庞大的志愿
者开发组织.这使得MySQL的开发过程更为慎重,而
PostgreSQL的反应更为迅速.这样2种背景直接导致
了各自特有的优点和缺点.
2 MySQL和PostgreSQL优点对比
2.1 MySQL的主要优点
因为其体积小,速度快,成本低,尤其是开放源码这一
特点,许多中小型网站为了降低网站总体拥有成本而
选择MySQL作为网站数据库.
PostgreSQL是一种特性非常齐全的自由软件的
对象.关系型数据库管理系统(ORDBMS),是以加州
1)维护者是MySQL AB(现为Oracle公司),首次
发布于1996年l1月.
2)操作系统支持WINDOWS、Linux、UNIX、MAC
OS X、BSD.
大学计算机系开发的POSTGRES,4.2版本为基础的
对象关系型数据库管理系统.POSTGRES的许多领先
概念只是在比较迟的时候才出现在商业网站数据库
中.PostgreSQL支持大部分的SQL标准并且提供了很
多其他现代特性,如复杂查询、外键、触发器、视图、事
务完整性、多版本并发控制等.同样,PostgreSQL也可
以用许多方法扩展,例如通过增加新的数据类型、函
数、操作符、聚集函数、索引方法、过程语言等.另外,因
为许可证的灵活,任何人都可以以任何目的免费使用、
修改和分发PostgreSQL.
3)基本功能上来看,MySQL支持ACID、关联完
整性、数据库事务、Unicode多国语言.
4)表和视图方面,支持临时表,而物化视图,可以
使用存储过程和触发器进行模拟.
5)索引方面,MySQL的MylSAM表类型支持
R一/R+tree索引,而哈希索引只能用在MEMORY
(即Heap)、Cluster(NDB)、InnoDB表类型.
6)其他对象上,MySQL不支持数据域,支持存储
过程、触发器、函数、外部调用、游标.
7)数据表分区方面,从5.1版本开始支持4种分
区,即范围、哈希、混合、列表.
8)从速度上来看,MySQL通常要比PostgreSQL
快得多.
9)流行度方面,MySQL比Postg reSQL更流行.
1)两者的共同优势.两者都属于开放源码的一
员,性能和功能都在快速地提高和增强.MySQL和
PostgreSQL的开发者们都在力求把各自的数据库改
得越来越好,所以对于商业数据库来说,选用两者中的
任何一个都不能算是错误的选择.
2)两者不同的背景.MySQL的身后是一个成熟
收稿日期:2010—12—03
1O)适宜运行环境方面,MySQL作为一个本地的
Windows应用程序运行,PostgreSQL是运行在Cygwin
作者简介:刘鑫(1979一),男,沈阳人,讲师,硕士
・
172・ 沈阳工程学院学报(自然科学版) 第7卷
模拟环境下.那么在Windows下PostgreSQL运行没有
MySQL稳定.
11)采用技术上看,MySQL使用了线程技术,而
PostgreSQL使用的是进程技术,MySQL在不同线程之
间的环境转换和访问公共的存储区域明显要比在不同
的进程之间要快得多.
12)运行时间上看,MySQL可以适应24/7运行,
在绝大多数情况下,不需要为MySQL运行任何清除
程序.PostgreSQL目前仍不完全适应24/7运行,每隔
一
段时问必须运行1次VACUUM.
2.2 PostgreSQL的主要优点
1)维护者是PostgreSQL Global Development
Group,首次发布于1989年6月.
2)操作系统支持WINDOWS、Linux、UNIX、MAC
OS X、BSD.
3)从基本功能上来看,支持ACID、关联完整性、
数据库事务、Unicode多国语言.
4)表和视图方面,PostgreSQL支持临时表,而物
化视图,可以使用PL/pgSQL、PL/Perl、PL/Python或
其他过程语言的存储过程和触发器模拟.
5)索引方面,全面支持R一/R+tree索引、哈希索
引、反向索引、部分索引、Expression索引、GiST、GIN(用
来加速全文检索),从8.3版本开始支持位图索引.
6)其他对象上,支持数据域,支持存储过程、触发
器、函数、外部调用、游标.
7)数据表分区方面,支持4种分区,即范围、哈
希、混合、列表.
8)从事务的支持度上看,对事务的支持与MySQL
相比,经历了更为彻底的测试.
9)MylSAM表处理方式方面,MySQL对于无事
务的MylSAM表,采用表锁定,1个长时间运行的查询
很可能会阻碍对表的更新.而PostgreSQL不存在这样
的问题.
1O)从存储过程上看,PostgreSQL支持存储过程,
而目前MySQL不支持.因为存储过程的存在也避免
了在网络上大量原始的SQL语句的传输,这样的优势
是显而易见的.
1 1)子查询支持方面,MySQL不支持子查询.
12)用户定义函数的扩展方面,PostgreSQL可以
更方便地使用UDF(用户定义函数)进行扩展.
3 MySQL和PostgreSQL性能测试数据
Test 1:1000 INSERTs
CREATE TABLE tl(a INTEGER,b INTEGER,C
VARCHAR(100));INSERT INTO tl VALuES(1,
13153,thirteen thousand one hundred fifty three3;
INSERT INTO tl VALUES(2,75560,geventy five
thousand five hundred sixty);
・・・
995 lines omitted
INSERT INTO tl VALUES(998,66289,"sixty six
thousand two hundred eighty nine);
INSERT INTO tl VALUES(999,24322, twenty
four thousand three hundred twenty two);
INSERT INTO tl VALUES(1000,94142, ninety
four thousand one hundred forty two);
Test 1吝result:PostgreSQL:4.373
MySQL:0.114
Test 2:25000 INSERTS in a transaction
BEGIN:
CI ATE TABLE t2(a INTEGER,b INTEGER,C
VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,"iffty nine
thousnad six hundred seventy two);
・・・
24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,"eighty
nine thousand five hundred sixty nine');
INSERT INT0 t2 VALUES(25000,94666,"ninety
four thousand six hundred sixty six');
C0MMIT:
Test 2 result:PostgreSQL:4.900
MySQL:2.184
Test 3:25000 INSERTs into an indexed table
BEGIN:
CREATE TABLE t3(a INTEGER,b INTEGER,C
VARCHAR(100));
CREATE INDEX i3 ON t3(C);
…
24998 lines omitted
INSERT INTO t3 VALUES(24999,88509,"eighty
eight thousand five hundred nine3;
INSERT INTO t3 VALUES(25000,8479 1,"eighty
four thousand seven hundred ninety one);
COMMIT:
Test 3,S result:PostgreSQL:8.175
MySQL:3.197
Test 4:100 SELECTs wihtout an index
BEGIN:
第2期 刘 鑫:MySQL和PostgreSQL的对比选择
SELECT count(%),avg(b)
FROM t2 WHERE
2)与PostgreSQ1配合的开源软件很多,有许多分
b>:0 AND b<1000:
布式集群软件,如pgpool、pgcluster、slony、plploxy等
SELECT count( ),avg(b)
F】ROM t2 WHERE
等,很容易做读写分离、负载均衡、数据水平拆分等方
b>=100 AND b<1100:
案,而这些在MySQL中则比较困难.
…
96 lines omitted
3)PostgreSQL源代码写的很清晰,易读性比
SELECT count(¥),avg(b)
FROM t2 WH E
MySQL强很多,所以很多公司都是基于PostgreSQL
b>=9800 AND b<10800:
做二次开发的.
SELECT count(%),avg(b)
F】ROM t2 WHERE
4)PostgreSQL没有回滚段,而Oracle与Innodb
b>=9900 AND b<10900:
都有回滚段.对于Oracle与Innodb来说,回滚段非常
C0MMIT:
重要,回滚段损坏,会导致数据丢失,甚至数据库无法
Test 4 result:PostgreSQL:3.629 MySQL:2.760
启动.由于PostgreSQL没有回滚段,旧数据都是记录
Test 5:100 SELECTs on a string comparison
在原文件中,所以当数据库异常crash后,恢复时不会
BEGIN;
像oracle与Innodb数据库那样复杂.因为Oracle与
SELECT count( ),avg(b)FROM t2 WHERE C
Innodb恢复时同步需要redo和undo.所以PostgreSQL
LIKE%one%
数据库在出现异常crash后,数据库无法启动的几率
SELECT count( ),avg(b)FROM t2 WHERE C
要比Oracle和MySQL小一些.由于旧的数据是直接
LIKE%two%,.
记录在数据文件中,而不是在回滚段中,所以不会经常
・・・
96 lines omited
报ora-01555错误.
SELECT count( ),avg(b)FROM t2 WHERE C
5)PostgreSQL在许多方面要强于MySQL,如复
LIKE ninety nine%j
杂SQL的执行、存储过程、触发器、索引等.同时Post—
SELECT count(¥),avg(b)FROM t2 WHERE C
greSQL是多进程的,而MySQL是线程的,虽然并发
LIKE彩one hundred%i
不高时,MySQL处理速度快,但当并发高时,在目前流
COMMIT;
行的多核单台计算机上,MySQL的总体处理性能不如
Test 5 result:PostgreSQL:13.409 MySQL:4.640 PostgreSQL.
Test 6:Creating an index
4.2 PostgreSQL的主要劣势
CREATE IDNEX i2a ON t2(a);
1)最新版本和历史版本不分离存储,导致清理老
CREATE INDEX i2b ON t2(b);
旧版本时需要做更多的扫描,代价比较大.但一般的数
通过上面的数据可以看出MySQL的运算速度比
据库都有高峰期,如果合理安排VACUUM,这也不是
PostgreSQL要快很多,但数据库软件的优劣有时不能
很大的问题,而且在,PostgreSQL9.0中VACUUM进
单从速度方面考虑..
一
步被加强了.
4 PostgreSQL在应用中的优势和劣势
2)在PostgreSQL中,由于索引完全没有版本信
息,不能实现Coverage index scan,即查询只扫描索引,
4.1 PostgreSQL的主要优势
不能直接从索引中返回所需的屙陆,还需要访问表,而
1)PostgreSQL完全免费,而且是BSD协议,Post—
Oracle与Innodb则可以.
greSQL数据库不会被其他公司控制.Oracle数据库是
商业数据库,不开放.而MySQL数据库虽然是开源
5 总 结
的,但随着Sun公司被Oracle公司收购,现在基本上
经过上面的比较分析,在选择数据库管理系统时,
被Oracle公司控制.其实在Sun公司被收购之前, 如果能确定只在MySQL和PostgreSQL中进行选择,
MySQL中最重要的InnoDB引擎已经被Oracle公司 可以根据以下规则:
控制,而MySQL中很多重要的数据都是放在InnoDB 1)如果操作系统是Windows,应该选择MySQL.
引擎中的.所以,如果MySQL的市场范围与Oracle数
2)如果对数据库并不十分了解,甚至不知道事
据库的市场范围冲突时,Oracle公司必定会牺牲
务、存储过程等究竟是什么,应该选择MySQL.
MySQL,这是毫无疑问的. (下转第177页)
第2期 沈冰,等:石英陶瓷坩埚生产线专用数控机床设计 ・177・
[3]刘菊兰.关于提高数控切割机数控切割质量的探讨[J]. 同煤科技,2003(3)
CNC Machine Tool Design Dedicated Quartz
Ceramic Crucible Manufacturing Line
SHEN Bing,XIAO Nan
(Machinery Engineering,Shenyang Institute of Engineering,Shenyang 1 10136,China)
Abstract:Introduced the production line of quartz ceramic crucible special design and application of CNC machine
tools,Provide the main design parameters of machine tools,Describes the working principle and special machine tool
structure,And the lubrication system design And maintenance of equipment carried on the concrete analysis.
Key words:Fused silica crucible;Production Line;Special CNC machine tools
(责任编辑刘珂)
(上接第173页) 此应该选择PostgreSQL.
3)如果应用程序对数据的完整性和严肃性要求
5)如果处理的是地理数据,由于R.TREES的存
不高,但是要追求处理的高速度,应该选择MySQL.
在,应该选择PostgreSQL.而MySQL不适合大量数
4)严肃的商业应用程序对数据的完整性要求很
据、密集运算、重型负载应用.
高,而且希望对一些商业数据逻辑进行很好的封装,因
Contrast selection between MySQL and PostgreSQL
LIU Xin
(Department of Computer Preparatory Course,Shenyang Institute of Engineering,Shenyang 1 10036,China)
Abstract:In hte Linux system,hte advantages and shortcomings are analyzed by comparing MySQL 4.0.2-lapha with
PostgreSQL 7.2.The results show that MySQL is fit for Windows operation system for its fast data handling;Post—
greSQL requires good data integrity,suitable ofr commercila data and it shows obvious advantages ofr geography data,
intensive computing,heavy load application etc.,it’S advised to be used in large amount of unpredicted data.
Key words:MySQL;PostgreSQL;package
(责任编辑刘珂)
版权声明:本文标题:MySQL和PostgreSQL的对比选择 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713077825a618769.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论