gpt4 book ai didi

mysql - Zend Framework 和 Mysql - 非常慢

转载 作者:行者123 更新时间:2023-11-29 01:15:24 26 4
gpt4 key购买 nike

我正在使用 php、mysql 和 zend 框架创建一个网站。当我尝试运行任何 sql 查询时,页面生成时间会跳到 0.5 秒左右。那太高了。如果我打开 sql,页面生成是 0.001。我运行的查询数量并没有真正影响页面生成时间(测试了 1-10 个查询)。停留在0.5秒我不知道我做错了什么。

我在 Bootstrap 中连接到 sql:

protected function _initDatabase ()
{
try
{
$config = new Zend_Config_Ini( APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV );
$db = Zend_Db::factory( $config -> database);
Zend_DB_Table_Abstract::setDefaultAdapter( $db );
}
catch ( Zend_Db_Exception $e )
{

}
}

然后我有一个简单的模型

class StandardAccessory extends Zend_DB_Table_Abstract
{
/**
* The default table name
*/
protected $_name = 'standard_accessory';

protected $_primary = 'model';

protected $_sequence = false;
}

最后,在我的索引 Controller 中,我只运行 find 方法。

require_once APPLICATION_PATH . '/models/StandardAccessory.php';
$sa = new StandardAccessory( );
$stndacc = $sa->find( 'abc' );

所有这一切大约需要 0.5 秒,这太长了。有什么建议么?

谢谢!

最佳答案

提示:

  • Cache the table metadata .默认情况下,每次实例化表对象时,Zend_Db_Table 都会尝试发现关于表的元数据。使用缓存来减少它必须执行此操作的次数。或者在您的 Table 类中对其进行硬编码(注意:db 表不是模型)。

  • 使用 EXPLAIN分析MySQL的优化方案。它是否有效地使用了索引?

    mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
  • 使用 BENCHMARK()衡量查询的速度,而不是使用 PHP。子查询必须返回单个列,因此请务必返回非索引列,以便查询必须接触数据而不是仅返回索引条目。

    mysql> SELECT BENCHMARK(1000, 
    (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
  • 请注意,当您进行第一个查询时,Zend_Db_Adapter 会延迟加载其数据库连接。因此,如果连接到 MySQL 服务器时出现任何缓慢,它会在您实例化 Table 对象时发生(当它查询元数据时)。这可能需要很长时间的任何原因? DNS lookups ,也许?

关于mysql - Zend Framework 和 Mysql - 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com