PostgreSQL vs MySQL简单的查询性能

时间:2015-05-02 22:51:18

标签: mysql performance postgresql

我正在使用新的网络应用程序。我使用MySQL进行Web应用程序。但现在我正在研究PostgreSQL选项。 我做了一个简单的性能测试,我注意到PostgreSQL比MySQL慢。

制作网站/网络应用程序时,您需要处理每个请求的大量初始化查询。 我的测试:

PgSQL
30000 pgsql execs - 73.53459s
30000 pgsql execs - 88.41614s
30000 pgsql execs - 75.76565s
-----------------------------
Average             79.23879s
378 queries per second or ~2.6 ms per query

MySQL
30000 mysql execs - 22.19208s
30000 mysql execs - 17.81079s
30000 mysql execs - 23.30936s
-----------------------------
Average             21,10407s 
~1421 query per second or ~0.7 ms per query

MySQL运行速度比PostgreSQL快4倍。 这是正常的吗?我不能将PostgreSQL用于具有大量连接的Web应用程序(SAAS)吗?

*我对并发访问所做的另一项测试让我非常担心。

测试代码 (两者相等且teste表只有2条记录和一个id_teste索引):

<?php
  $db = new PDO('pgsql:host=127.0.0.1 dbname=teste user=postgres password=123456');

  $t = 30000;
  $ini = microtime(true);
  for ($i=0;$i<$t;$i++)
  {
    $ex = $db->prepare('select * from teste where id_teste = 1');
    $ex->execute();
  }
  $end = microtime(true);
  echo '<b>'. $t .'</b> pgsql execs - <b>'. number_format($end-$ini,5,'.','') .'</b>s';
?>

更新: MySQL表引擎是Innodb。两个测试都在同一设备中。 我用mysqli_query和pg_query做了一个新测试,结果更好:

30000 pgsql execs - 28.18265s
30000 pgsql execs - 23.54120s
30000 pgsql execs - 23.43689s
Average             25,05358s
~1197 queries per second or ~0,8 ms per query


30000 mysql execs - 23.89033s
30000 mysql execs - 19.40293s
30000 mysql execs - 27.75116s
Average             23,68147s
~1266 queries per second or ~0,79 ms per query

也许PDO pgsql驱动程序是注释的问题,或者mysqli很慢。

关于简单查询的其他选项,比如缓存,是的,它是一个选项,但它在大表中有许多简单的查询,这些数据需要存储在RDBMS中。示例:城市,人,用户,页面。所有这些都在id = X的地方使用。尽管有更多的工作我们可以处理这个。

0 个答案:

没有答案