我想知道选择二进制dat和使用MaxMind php-api与将GeoLite csv导入mysql数据库和使用数据库是否有巨大的性能差异。
dat格式为20MB,每次都需要从磁盘中读取。它将包含在Magento扩展中,也将在共享主机服务器上托管的网站上运行。
PHP API非常快,我还没有测试过MySQL查找,但我希望它们的速度会慢得多。MySQL的连接速度非常快,但您仍在连接&然后解析&优化查询。
我们做了一些测试,发现Apache扩展、PHP扩展和(令人惊讶的)PHP库非常快。安装它们时没有真正的性能问题。详细信息请参阅我们的博客文章。
我同意@preinheimer的观点,MySQL查找比使用Maxmind mmdb文件慢。
然而,我想指出的是,Maxmind查找是最快的,特别是当您使用C编译的libmaxmindb.so PHP扩展时。事实上,在我的阅读测试中,我比较了MySQL、SQLite和MMDB,与使用扩展的MMDB查找相比,MySQL慢了3.5倍,SQLite慢了2倍。
当使用纯PHP库时,如果没有扩展,它比MySQL快,但比SQLite慢(大约3倍)。
此外,如果空间是一个问题的话,MMDB文件比SQLite或MySQL数据库小得多。我在MySQL服务器上也遇到过高负载,查找速度越来越慢,这对mmdb文件来说不是问题。读取mmdb文件比使用MySQL占用的资源更少。
SQLite在资源使用方面没有MySQL问题,因此作为备份选项,它是一个可靠的选项。然而,数据库文件大小可能是一个问题。