siv*_*udh 13 mysql postgresql performance postgis
我们有一个使用MySql运行的applicationg.我们发现的MySql是不适合我们的应用程序后,我们发现,它没有支持一些GIS功能,PostGIS的有(注:MySQL只支持最小边界矩形GIS搜索).
所以我们将数据库更改为PostgreSQL.然后我们发现在Windows上运行的Postgresql 8.2与Mysql 5.1相比要慢得多.慢一点,我的意思是慢了大约4-5倍.
为什么是这样?我们需要更改配置中的某些内容吗?
我发现从其他网站如一些评论此:
更新:我们发现缓慢的原因是由于我们插入数据库的BLOB.我们需要能够以10-15 MB/s的持续速率插入BLOB.我们正在为我们插入/读取的每个BLOB使用libpq的lo_read和lo_write.这是最好的方式吗?以前有没有人用Pgsql以高速率插入大型BLOB?
编辑:我听说PgSql刚刚被移植到Windows.这可能是其中一个原因吗?
Mag*_*der 21
有些情况下,由于我们移植它时所做的权衡,Windows上的PostgreSQL与其他解决方案相比会产生额外的开销.
例如,PostgreSQL每个连接使用一个进程,MySQL使用一个线程.在Unix上,这通常不是明显的性能差异,但在Windows上创建新进程非常昂贵(由于缺少fork()系统调用).出于这个原因,使用永久连接或连接池进程是多使用PostgreSQL时,更重要的Windows上.
我看到的另一个问题是Windows上的早期PostgreSQL默认情况下会确保它的写入通过写入缓存 - 即使它是电池备份的.AFAIK,MySQL不会这样做,它会极大地影响写入性能.现在,如果你有一个不安全的硬件,比如便宜的硬盘,这实际上是必需的.但是,如果您有电池支持的写缓存,则需要将其更改为常规fsync.现代版本的PostgreSQL(肯定是8.3)将默认为open_datasync,这应该消除这种差异.
您还没有提及如何调整数据库的配置.默认情况下,PostgreSQL附带的配置文件非常保守.如果你没有改变任何东西,你肯定需要看看它.PostgreSQL wiki上提供了一些调优建议.
要提供更多详细信息,您必须提供有关运行缓慢的详细信息以及如何调整数据库的更多详细信息.我建议给pgsql-general邮件列表发一封电子邮件.