您的位置:首页 > 数据库 > MySQL

mysqlnd一个很不错的驱动

2015-10-13 10:25 555 查看
最近,闲来无事在网上查找资料信息时见到有针对于mysql查询可以进行异步化,十分感兴趣,于是特别的搜了一下,facebook最早是使用hack才得以实现但是现在的php5.5,已经无需hack就可以实现了。

简单的说一下对于web网站的性能来说,瓶颈多半是来自于数据库。一般数据库查询会在某个请求的整体耗时中占很大比例。在有甚者可能造成服务请求超时。以往长做的操作是对于数据库的一系列优化,其实都是为了提高数据库的查询效率,这样网站整体响应的时间会有很大的提升。但如果在这些之上能实现mysql查询的异步化,就可以实现多条sql语句同时执行。这样就可以更加大大缩短mysql查询的耗时。毕竟并行永远会比串行的效率高,而且当查询语句的执行时间越长
这个并行的效果也就是越明显。

mysqli
+ mysqlnd。php官方实现的mysqlnd中提供了异步查询的方法。分别是:
mysqlnd_async_query 发送查询请求
mysqlnd_reap_async_query 获取查询结果
这样就可以不必每次发送完查询请求后,一直阻塞等待查询结果了。

实现代码如下(该代码非原创):

当然了 ,mysql数据库对于每个查询请求都是单独启动一个线程进行处理。如果mysql服务器启动线程过多,必然会造成线程切换引起系统负载过高。所以如果在mysql数据库负载不高的情况下,使用异步查询还是不错的选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: