ano*_*non 2 php mysql performance query-optimization
我在一个相当大的网站工作; 我们每月的页面浏览量约为4亿至5亿.我们使用PHP和MySQL.
目前我们的页面流程就像这样(为了清晰起见,半伪代码):
mysql_connect();
mysql_select_db('red');
mysql_query('SELECT * FROM apples');
mysql_query('SELECT * FROM cakes');
Run Code Online (Sandbox Code Playgroud)
我的一位同事建议mysql_select_db减慢页面加载速度并增加数据库服务器的负载,并建议将我们的"流程"更改为:
mysql_connect();
mysql_query('SELECT * FROM red.apples');
mysql_query('SELECT * FROM red.cakes');
Run Code Online (Sandbox Code Playgroud)
是真的会有所作为吗?我特别关注做出这一改变所需的时间; 我们会看到任何明显的结果吗?
这值得么?
基准测试:
$ cat 1.php
<?php
mysql_connect('localhost') or die(mysql_error());
mysql_select_db('test') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM foo') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM bar') or die(mysql_error());
?>
$ cat 2.php
<?php
mysql_connect('localhost') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM test.foo') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM test.bar') or die(mysql_error());
?>
$ time ( for i in {1..100} ; do php 1.php; done;)
real 0m3.554s
user 0m2.300s
sys 0m1.188s
$ time ( for i in {1..100} ; do php 2.php; done;)
real 0m3.555s
user 0m2.292s
sys 0m1.208s
Run Code Online (Sandbox Code Playgroud)
我打电话给胡说八道.
您的同事是否可能与mysql命令行客户端混淆,如果切换到数据库(可以通过-A交换机避免),它将加载所有表和列名?
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |