Php Zend中的慢速Postgres查询
最近我问是否有某种方法可以让我的查询执行得更快(主题:)。我摆脱了“描述”查询,结果提高了20-30%。但我的查询还是太慢了Php Zend中的慢速Postgres查询,php,performance,zend-framework,postgresql,Php,Performance,Zend Framework,Postgresql,最近我问是否有某种方法可以让我的查询执行得更快(主题:)。我摆脱了“描述”查询,结果提高了20-30%。但我的查询还是太慢了 class Application_Model_DbTable_Images extends Zend_Db_Table_Abstract { protected $_name = 'images'; public function getImage($id) { $row = $this->fetchRow("id = $
class Application_Model_DbTable_Images extends Zend_Db_Table_Abstract
{
protected $_name = 'images';
public function getImage($id)
{
$row = $this->fetchRow("id = $id");
return $row;
}
}
我分析了我的应用程序,发现单个getImage()调用大约持续300毫秒。但是如果我打两次电话,那么第二次电话大约持续15毫秒。我该怎么做才能让所有查询执行得这么快
我也100%确定不再有描述查询了——我查看了数据库查询日志,所有查询看起来都很完美。听起来好像只是缓存。第一次它必须从磁盘读取信息,第二次它已经在RAM中了 获取行的300ms是否合理-您通过psql获得了什么 如果您想了解数据库的性能,您至少需要掌握以下基本知识:
数据库本身会影响性能,调用代码也会影响性能。您可能希望比较在ZF中构建查询的不同方法,看看是否有任何差异 当前:
class Application_Model_DbTable_Images extends Zend_Db_Table_Abstract
{
protected $_name = 'images';
public function getImage($id)
{
$row = $this->fetchRow("id = $id");
return $row;
}
}
尝试:
或:
类应用程序\u模型\u DbTable\u图像扩展了Zend\u Db\u Table\u抽象
{
受保护的$_名称='images'
public function getImage($id)
{
$select = $this->select()->where('id = ?', $id);
$row = $this->fetchAll($select);//maybe a different fetch will have an effect
return $row;
}
}
这里有几个构建查询的不同方法的示例(还有很多),它们可能有助于提高您的性能。我所要做的就是启用与数据库的持久连接。 关于如何做到这一点的解释是可用的
我不确定它是否安全或有效,但现在我的查询执行时间是20毫秒,而不是数百毫秒。否-服务器将缓存磁盘内容,因此当它再次尝试读取磁盘的该部分时,它已经在RAM中。1。这些缓存文件每个只有5kB左右-file\u get\u contents()可以在短时间内(约1ms)处理它们。2.单行中的数据少于2kB。4. '“图像”表包含约3000行。我在pgadmin中执行zend创建的查询,每个查询耗时约15毫秒。也许每次我的控制器启动时都会初始化一个新连接。如何防止这种情况发生?
public function getImage($id)
{
$select = $this->select()->where('id = ?', $id);
$row = $this->fetchAll($select);//maybe a different fetch will have an effect
return $row;
}