php并发对MYSQL造成压力的解决方法
2015-01-24信息快讯网
php并发对MYSQL造成压力的解决方法,需要的朋友可以参考一下
PHP页面有一个浏览量统计每秒有200并发,造成insert给mysql造成很大压力
lnmp环境,其他页面内容都做了缓存了,没有多大的负载,就是这个浏览量统计功能,给mysql带来不小的压力,请问诸位有什么解决办法吗?
怎么都说不要用MySQL来做,每秒200并发对MySQL来说不算啥难事啊。而且换成Redis、Memcached,持久化姑且不说,业务代码和运维部署量都不小。
我给你几个建议,尽量让你的运维部署和业务代码改动小一些。
你可以做主从分离,不要在一个库上高并发插入同时还做大量统计运算。分离之后,查询在从库是做(甚至是导入Hive之类专门的分布式系统来做),主库上可以去掉索引,提升插入的性能。这个方法,业务代码几乎不用任何改动(改个数据库配置文件就好了)。MySQL运维部署也可以选个业务低谷在线做。
如果你可以接受少量业务代码(PHP)改动,还有两个建议:
1. 分库,分表,每个表的数据总量小了,操作起来性能会好一些,特别是对从库的MyISAM表。你插入之前可能会有一些查询,例如查询这个IP在不在库里,以前统计过没。
2. 使用HandlerSocket插件,绕过SQL Parser,直接操作存储文件。如果业务上有可能,还可以使用bulk insert(批量插入)。MySQL InnoDB还推出了类似HandlerSocket的InnoDB NoSQL Plugin,用的memcached协议,共享InnoDB Buffer,再也不用操心MySQL和Memcached之前怎么维护数据一致性了。
浅析Mysql 数据回滚错误的解决方法
解析php mysql 事务处理回滚操作(附实例)
如何利用PHP执行.SQL文件
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
php调用MySQL存储过程的方法集合(推荐)
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
将IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、MySQL方法
利用curl 多线程 模拟 并发的详解
浅谈apache和nginx的rewrite的区别
php连接mssql数据库的几种方法
php中存储用户ID和密码到mysql数据库的方法
php中选择什么接口(mysql、mysqli)访问mysql
php连接mssql的一些相关经验及注意事项
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
mysqli_set_charset和SET NAMES使用抉择及优劣分析
整理的一些实用WordPress后台MySQL操作命令
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
一个PHP并发访问实例代码
PHP curl 并发最佳实践代码分享