我需要执行一个简单的查询。
从字面上看,我需要执行的是:
SELECT price, sqft, zipcode FROM homes WHERE home_id = X
当我使用 PHP 时PDO,我读过的是连接到 MySQL 数据库的推荐方法,简单地创建连接需要经过测量610ms.
我的代码如下:
try {
$conn_str = DB . ':host=' . DB_HOST . ';dbname=' . DB_NAME;
$dbh = new PDO($conn_str, DB_USERNAME, DB_PASSWORD);
$params = array();
$sql = 'SELECT price, sqft, zipcode FROM homes WHERE home_id = :home_id';
$params[':home_id'] = X;
$stmt = $dbh->prepare($sql);
$stmt->execute($params);
$result_set = $stmt->fetchAll(PDO::FETCH_ASSOC);
// json output
ob_start("ob_gzhandler");
header('Content-type: text/javascript; charset=utf-8');
print "{'homes' : ";
print json_encode( $result_set );
print '}';
ob_end_flush();
$dbh = null;
} catch (PDOException $e) {
die('Unable to connect');
}
Question:连接到 MySQL 数据库以执行上述查询的最快方法是什么?
如果速度缓慢是由于每个连接都必须通过网络,并且 mysql 必须执行反向 DNS 查找来检查其 GRANT 表,那么该开销很可能会导致很大一部分延迟。切换到持久连接将使其成为连接生命周期的一次性成本。
然而,这确实会导致其他问题。由于事务在保存事务的连接关闭时会回滚并释放锁,因此保持持久意味着它们将保持活动状态。如果您的代码中没有非常小心地避免连接处于不一致的状态,则很可能会造成死锁,或者至少锁定所有其他连接,直到您手动进入并清理为止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)