php mysql如何检查效率_mysql查询超时PHP执行效率分析比较

近来遇到一个问题,就是在高并发下,mysql功能呈现了瓶颈,由于PHP是一种弱类型的言语,没有类型一说。因而,当mysql回来并非预期成果时,会致使后续逻辑过错。

1)线程堵塞测验

当sql句子履行太慢,会致使mysql的衔接数被耗尽,无法处理新的请求。

测验方法

履行set global  max_connections=1;句子,并在另一个程序中开启长衔接占用该衔接,此刻,mysql效劳现已无衔接可用。

PHP代码如下:

$con=mysql_connect('127.0.0.1','root','');

var_dump($con);

sleep(10);

mysql_select_db('test',$con); $cursor=mysql_query("select * from `timeout_test` where `id`=2 for update");

var_dump($cursor);

var_dump(mysql_fetch_assoc($cursor)); echo "done!";

回来成果,mysql_connect 和mysql_query都回来false过错

2)锁堵塞测验

康复正常的衔接数,履行set autocomit=0; 我使用的是innodb引擎,myisam引擎没有业务概念,autocomit的值在myisam下总为1。

在mysql衔接中,履行句子:

mysql> select * from `timeout_test` where `id`=2 for update; +----+------+ | id | name |

+----+------+ | 2 | kk |

+----+------+ 1 row in set (0.00 sec)

接下来,履行上述PHP,回来成果如下:

resource(5) of type (mysql link)

bool(false)

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\test\mysql-index\timeout.php on line 7 Call Stack: 0.0002 234472 1. {main}() D:\test\mysql-index\timeout.php:0 51.1252 242496 2. mysql_fetch_assoc() D:\test\mysql-index\timeout.php:7 NULL

done!PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\test\mysql-index\timeout.php on line 7 PHP Stack trace:

PHP 1. {main}() D:\test\mysql-index\timeout.php:0 PHP 2. mysql_fetch_assoc() D:\test\mysql-index\timeout.php:7

mysql_query回来了false,此刻假如强行使用mysql_fetch_assoc等获取成果的函数,将会回来NULL

3)总结

函数名称

线程堵塞

锁堵塞

mysql_connect

函数值回来false,并抛出一个warning等级过错,并不会停止程序。

回来resource(3, mysql link),正常

mysql_query

函数值回来false,并抛出一个warning等级过错,并不会停止程序。假如mysql_connect回来false,即便衔接被开释,mysql_query不会从头衔接到mysql

回来false,但不抛出反常。对正常的mysql_query,履行失利回来false。程序中应当判断这种过错。

(责任编辑:最模板)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值