弃用mysql:用Postgres SQL取而代之 !真香!
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
01.数据库简介 互联网上都称MySQL是当前业内最流行的开源数据库,它属于最流行的RDBMS (Relational Database Management System,关系数据库管理系统)应用数据库软件之一。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL. MySQL最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle收购导致MySQL的出现两个版本:商业版和社区版。对于后者,由于Oracle控制了MySQL的开发,受到了广大使用者的批评。 PostgreSQL PostgreSQL标榜自己是世界上最先进的开源数据库,属于关系型数据库管理系统(ORDBMS), 是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统, 最初是1985年在加利福尼亚大学伯克利分校开发的,作为Ingres数据库的后继。PostgreSQL是完全由社区驱动的开源项目。它提供了单个完整功能的版本,而不像MySQL那样提供了多个不同的社区版、商业版与企业版。PostgreSQL基于自由的BSD/MIT许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。 Note: MySQL的层级关系是:实例 -> 数据库 -> 表 Postgres 的层级关系:实例 -> 数据库 -> Schema -> 表 schema 可以理解为命名空间,具体不影响使用 02.性能对比 本次压测的数据, SELECT 均为SELECT 按照主键查询, UPDATE按照主键进行UPDATE, INSERT则为一次INSERT一行数据。从压测数据上来看,我们可以得出以下几个结论: 吞吐量:Postgres SQL 在SELECT性能上优于MySQL一倍, 在INSERT上优于4-5倍, UPDATE 则优5-6倍 平均耗时:Postgres SQL优于MySQL不止数倍 热点行更新:,MySQL性能仅为Postgres SQL的, 1/8左右,耗时也增加了7倍。 03.场景及选择 MYSQL相对于Postgres更简单, 所以它可能有着更高的流行度和知名度, 并且在技术资料,以及一些技术组件支持上,支持的也更完善很多, 但这并不是说它不能替代的, 对于作者而言, MYSQL更比较像用于中小企业以及个人的一款数据库工具, 因为会的人多, 文档资料就相对于而言比较的完善,所以学习的难度低。但这些并不意味着MYSQL就是最好的。 从图片上来看Postgres SQL的发展势头着实是非常迅猛的,且目前已经隐隐有追上MySQL的趋势, 而对于MySQL而言,在使用情况及受欢迎成都来看是一直呈现下降趋势。 MySQL比较适用于一些简单的应用场景,比如电子商务、博客、网站等等,以及大中小型系统均可以使用MySQL作为数据存储使用, 它最高支持千万级别到数亿级别的数据量, 但是在高性能要求的情况下, 需要比较较快的响应和较高的吞吐量的时候, MYSQL的性能稍微捉襟见肘, 另外,在查询条件比较复杂、业务吞吐量要求不高,响应时长无要求,的时候,可以选择MYSQL, 所以,相对于MYSQL来说, Postgre SQL更适合复杂的数据结构、高级应用和大规模数据集, 当然如果数据规模比较小, 也可以选择Postgres SQL, 不管是基于什么场景,如果你想用Postgres SQL, 就总可以找到其对应的解决方法, 有且仅有在查询条件比较复杂的时候不太适用, 因为根据我们实际线上的业务表现是 Postgre SQL可能会选错索引。 04.最后 Postgre SQL性能上远远好于MYSQL, 通过上面的压测数据即可体现,无论是在耗时,还是在整体吞吐量上,有显著优势 Postgre SQL在单行更新上有明显优势,尤其是启用了HOT UPDATE后, 性能比MYSQL高了一个数量级 在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨,比较学院化; Postgre SQL主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。 Postgre SQL的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。 MySQL 的事务隔离级别 repeatable read 并不能阻止常见的并发更新, 得加锁才可以, 但悲观锁会影响性能, 手动实现乐观锁又复杂. 而 Postgre SQL 的列里有隐藏的乐观锁 version 字段, 默认的 repeatable read 级别就能保证并发更新的正确性, 并且又有乐观锁的性能. Postgre SQL系统表设计相对复杂, 在进行一些系统表的统计、操作等方面比较复杂 Postgre SQL 的索引选择方面,选错的概率稍高一些(实测), 而且不能跟mysql 一样方便的使用force_index Postgre SQL 存在vacuum, 需要结合具体使用场景,来调整vacuum的参数 该文章在 2024/2/19 14:41:56 编辑过 |
关键字查询
相关文章
正在查询... |