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数据库负载不高的情况下,使用异步查询还是不错的选择。
简单的说一下对于web网站的性能来说,瓶颈多半是来自于数据库。一般数据库查询会在某个请求的整体耗时中占很大比例。在有甚者可能造成服务请求超时。以往长做的操作是对于数据库的一系列优化,其实都是为了提高数据库的查询效率,这样网站整体响应的时间会有很大的提升。但如果在这些之上能实现mysql查询的异步化,就可以实现多条sql语句同时执行。这样就可以更加大大缩短mysql查询的耗时。毕竟并行永远会比串行的效率高,而且当查询语句的执行时间越长
这个并行的效果也就是越明显。
mysqli
+ mysqlnd。php官方实现的mysqlnd中提供了异步查询的方法。分别是:
mysqlnd_async_query 发送查询请求
mysqlnd_reap_async_query 获取查询结果
这样就可以不必每次发送完查询请求后,一直阻塞等待查询结果了。
实现代码如下(该代码非原创):
当然了 ,mysql数据库对于每个查询请求都是单独启动一个线程进行处理。如果mysql服务器启动线程过多,必然会造成线程切换引起系统负载过高。所以如果在mysql数据库负载不高的情况下,使用异步查询还是不错的选择。
相关文章推荐
- 查看 MySQL 数据库中每个表占用的空间大小
- MySQL安全问题(防范必知)
- MySQL中information_schema数据库简介
- MySQL性能优化之table_cache配置参数浅析
- mysql1449 The user specified as a definer ('root'@'%') does not exist 解决方法
- 分享一个不错的mysql语句
- mysql 表字段避免null 会带来额外的开销
- mysql保留字-关键字表
- mysql存储过程和触发器的应用
- mysql5.5以上编译方法
- 手动编译MySQL
- mysql启动失败!!
- MySQL常用操作
- mysql high availability 概述
- [转载] 淘宝内部分享:怎么跳出MySQL的10个大坑(上)
- mysql中的if判断
- mysql 导入CSV数据 [转]
- mysql创建索引小案例
- mysql中engine=innodb和engine=myisam的区别
- 如何解决安装MySQL5.0后出现1607异常