【发布时间】:2019-08-16 03:43:03
【问题描述】:
我正在为一家在 MYSQL 中显示数据库信息的公司建立一个 php 网站,但有时加载该信息需要大约 20 秒,而且它只是随机发生的。正常工作时,大约需要 0.005 秒。
数据库位于公司内网的本地虚拟服务器中,但我通过 dyndns.info:port 访问它。 慢的时候,如果你多次重载,网站就一直慢,突然快加载的时候,一直在快速重载,等等。
try {
$conection= new PDO("mysql:host=domain.dyndns.info; port=0000; dbname= db", user, pass);
return $conection;
} catch (PDOException $e) {
}
执行语句中的代码很慢:
$statement = $conexion->prepare("SELECT table1.col1, table2.col2, table2.col3, table2.col4, table2.col5 FROM table1 LEFT JOIN table2 ON table1.col6 = table2.col6 LEFT JOIN table 3 ON table1.col1 = table3.col1 LIMIT 10 ");
$start_timer = microtime(true);
$statement->execute();
$piezas = $statement->fetchAll();
$end_timer = microtime(true);
查询有三个左连接,table1 有 50,000 行,table2 有 20,000 行,table3 有 80,000 行,所以我认为这可能是一个问题,但它并不能解释为什么有时网站加载速度很快。
另一个可能的问题可能是虚拟服务器,但我不确定这是否解释了查询的随机缓慢。
任何想法可能是实际问题?或任何可以帮助我的测试工具?
【问题讨论】:
-
除了性能之外,公开的数据库 (dyndns) 存在安全风险,需要得到很好的保护。您的网络服务器没有在 Intranet 上运行并为网站提供服务的任何原因(也需要保护,但不那么容易受到攻击)?
-
实际上,我想知道以这种方式创建网站可能存在哪些风险。原因是我对所有事情都还知之甚少。感谢您的评论,我会寻找更好的方式连接到我的数据库。