问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

客观公正地评价MySQL和PostgreSQL的优劣

发布网友 发布时间:2023-01-06 14:08

我来回答

1个回答

热心网友 时间:2023-10-06 19:11

   一 前言   前一段时间 我曾经翻译过一篇将你的网站从MySQL改为PostgreSQL 其实当初我更感兴趣的是一个应用程序的后台数据库从MySQL转为PostgreSQL的具体操作 并没有关心MySQL和PostgreSQL的优劣 没想到反应出乎意料的大 因此我也就觉得有写这篇文章的必要了   在这篇文章中 我们选用MySQL alpha与PostgreSQL 进行比较 因为MySQL alpha开始支持事务的概念 因此这样的比较对于MySQL应该较为有利   我们这样的比较不想仅仅成为一份性能测试报告 因为至少从我个人来看 对于一个数据库 稳定性和速度并不能代表一切 对于一个成熟的数据库 稳定性肯定会日益提供 而随着硬件性能的飞速提高 速度也不再是什么太大的问题      二 两者的共同优势   这两个产品都属于开放源码的一员 性能和功能都在高速地提高和增强 MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好 所以对于任何商业数据库使用其中的任何一个都不能算是错误的选择      三 两者不同的背景   MySQL的背后是一个成熟的商业公司 而PostgreSQL的背后是一个庞大的志愿开发组 这使得MySQL的开发过程更为慎重 而PostgreSQL的反应更为迅速   这样的两种背景直接导致了各自固有的优点和缺点      四 MySQL的主要优点    首先是速度 MySQL通常要比PostgreSQL快得多 MySQL自已也宣称速度是他们追求的主要目标之一 基于这个原因 MySQL在以前的文档中也曾经说过并不准备支持事务和触发器 但是在最新的文档中 我们看到MySQL alpha已经开始支持事务 而且在MySQL的TODO中 对触发器 约束这样的注定会降低速度的功能也列入了日程 但是 我们仍然有理由相信 MySQL将有可能一直保持速度的优势    MySQL比PostgreSQL更流行 流行对于一个商业软件来说 也是一个很重要的指标 流行意味着更多的用户 意味着经受了更多的考验 意味着更好的商业支持 意味着更多 更完善的文档资料    与PostgreSQL相比 MySQL更适宜在Windows环境下运行 MySQL作为一个本地的Windows应用程序运行(在NT/Win /WinXP下 是一个服务) 而PostgreSQL是运行在Cygwin模拟环境下 PostgreSQL在Windows下运行没有MySQL稳定 应该是可以想象的    MySQL使用了线程 而PostgreSQL使用的是进程 在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多    MySQL可以适应 / 运行 在绝大多数情况下 你不需要为MySQL运行任何清除程序 PostgreSQL目前仍不完全适应 / 运行 这是因为你必须每隔一段时间运行一次VACUUM    MySQL在权限系统上比PostgreSQL某些方面更为完善 PostgreSQL只支持对于每一个用户在一个数据库上或一个数据表上的INSERT SELECT和UPDATE/DELETE的授权 而MySQL允许你定义一整套的不同的数据级 表级和列级的权限 对于列级的权限 PostgreSQL可以通过建立视图 并确定视图的权限来弥补 MySQL还允许你指定基于主机的权限 这对于目前的PostgreSQL是无法实现的 但是在很多时候 这是有用的    由于MySQL alpha开始支持事务的概念 因此事务对于MySQL不再仅仅成为劣势 相反 因为MySQL保留无事务的表类型 这就为用户提供了更多的选择    MySQL的MERGE表提供了一个独特管理多个表的方法    MySQL的myisampack可以对只读表进行压缩 此后仍然可以直接访问该表中的行      五 PostgreSQL的主要优点    对事务的支持与MySQL相比 经历了更为彻底的测试 对于一个严肃的商业应用来说 事务的支持是不可或缺的    MySQL对于无事务的MyISAM表 采用表锁定 一个长时间运行的查询很可能会长时间地阻碍对表的更新 而PostgreSQL不存在这样的问题    PostgreSQL支持存储过程 而目前MySQL不支持 对于一个严肃的商业应用来说 作为数据库本身 有众多的商业逻辑的存在 此时使用存储过程可以在较少地增加数据库服务器的负担的前提下 对这样的商业逻辑进行封装 并可以利用数据库服务器本身的内在机制对存储过程的执行进行优化 此外存储过程的存在也避免了在网络上大量的原始的SQL语句的传输 这样的优势是显而易见的    对视图的支持 视图的存在同样可以最大限度地利用数据库服务器内在的优化机制 而且对于视图权限的合理使用 事实上可以提供行级别的权限 这是MySQL的权限系统所无法实现的    对触发器的支持 触发器的存在不可避免的会影响数据库运行的效率 但是与此同时 触发器的存在也有利于对商业逻辑的封装 可以减少应用程序中对同一商业逻辑的重复控制 合理地使用触发器也有利于保证数据的完整性    对约束的支持 约束的作用更多地表现在对数据完整性的保证上 合理地使用约束 也可以减少编程的工作量    对子查询的支持 虽然在很多情况下在SQL语句中使用子查询效率低下 而且绝大多数情况下可以使用带条件的多表连接来替代子查询 但是子查询的存在在很多时候仍然不可避免 而且使用子查询的SQL语句与使用带条件的多表连接相比具有更高的程序可读性    支持R trees这样可扩展的索引类型 可以更方便地处理一些特殊数据    PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展      六 那么我究竟应该使用MySQL还是PostgreSQL   这个问题很难说得清 而且事实上除了MySQL和PostgreSQL外 使用Oracle Sybase Informix等也是明智的选择 如何你确定只在MySQL和PostgreSQL中进行选择 以下规则总是有效的    如果你的操作系统是Windows 你应该使用MySQL    如果你对数据库并不了十分了解 甚至不知道事务 存储过程等究竟是什么 你应该使用MySQL    如果你的应用对数据的完整性和严肃性要求不高 但是追求处理的高速度 例如是一个论坛和社区 你应该使用MySQL    你的应用是一个严肃的商业应用 对数据完整性要求很高 而且你希望对一些商业数据逻辑进行很好的封装 例如是一个网上银行 你应该使用PostgreSQL    你的应用处理的是地理数据 由于R TREES的存在 你应该使用PostgreSQL    你是一个数据库内核的狂热爱好者 你甚至希望拥有你自己版本的数据库 毫无疑问 你必须使用PostgreSQL 没准下一个PostgreSQL版本中某一个模块的作者就是你      七 结语   以上只是希望从我的理解客观公正地评价MySQL和PostgreSQL的优劣 其中的带有倾向性的意见只代表个人观点 由于本人水平的* 有不当之处还请批评指正 lishixin/Article/program/MySQL/201311/29459
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桥本氏甲亢化验单说明什么 桥本氏甲亢??检验报告严重么 华为Y325-T00手机不小心设置英文版怎么办? 腾讯手游助手怎么双开 腾讯手游助手能双开吗 腾讯手游助手怎么双开-腾讯手游助手双开教程 审计定义的理解是什么 全国各地还有谁叫刘超啊 ? 滑冰滑冰场 彭水火车站到重庆北火车站有的少公里一 彭水到重庆坐火车要几个小时 个人所得税完税凭证怎么查 我想了解康宝电热水器,就是怎么卖热水器啊 沙洲优质黄酒如何饮用 我想问一下什么叫半干型黄酒 请问一下半干型黄酒怎么喝 梦见我生病住院 梦见梦自己生病住院了 梦见自己生病住院了 heic图片有什么电脑查看工具,苹果照片怎么存成jpg格式 怎么用亚马逊发邮件?我在亚马逊买的东西有问题 客服联系我以后给了我一个亚马逊的邮箱号 想问西瓜隔夜放冰箱能吃吗 洗好的衣服穿后出汗就有汉酸味怎样才能洗掉衣服上的汗酸味 “山重水复疑无路,柳暗花明又一村”这句话怎么理解? 诺科壁挂炉温控器对不上信号怎么办 德国吉士温控器701和接收器对码方法 壁挂炉温控器设置的对码功能是什么? 爱氏晨曦和蒙牛的关系,爱氏晨曦牛奶是蒙牛集团的产品 洛阳住房公积金贷款政策 《红颜劫:冒名皇后》txt下载在线阅读全文,求百度网盘云资源 求魔序章什么意思 养鱼的水混浊了怎么处理 养鱼的水变浑浊怎么办 我们的队歌是什么 你知道我们的队歌是什么吗? 队歌是什么?怎么唱? 夕阳下的美 描写夕阳下的美的美文 夕阳下的唯美句子? 网络学习的特点有哪些? 梦见喜欢的女明星还很亲密 梦见与女明星亲密相处 梦见和喜欢的明星交往 4.6的视力好还是4.5的好 常用的抗疟药不包括 半生心安小说结局是什么 斩神中温祁墨后来怎么了 折折扣注销了多久还能用同手机号再注册 如何让红豆泡在水中脱壳 国联期货客户保证金规模是多少 烟雨江湖50级副本多少战力可过