本代码是从uchome的代码修改的,是因为要解决uchome的效率而处理的。
这个思维其实很久就有了,只是一直没有去做,相信也有人有同样的想法,如果有类似的,那真的希望提出相关的建议。
封装的方式比较简单,增加了只读数据库连接的接口扩展,不使用只读数据库也不影响原代码使用。
有待以后不断完善。。
为了方便,试试建立了google的一个项目:
http://code.google.com/p/mysql-rw-php/
希望给有需要的朋友带来帮助。
为什么需要读写分离?
主要是数据库压力过大的情况下的解决方案。写操作会把表锁定,而导致很多查询相继锁定而等候,导致程序处于等候状态。
读写分离是建立在mysql的replication基础上的,master服务器仅负责写操作,slave机器仅提供读操作,相对而言提高了读写性能,也可以增加mysql的承受能力。
PHP实现的Mysql读写分离
主要特性:
1 简单的读写分离
2 一个主数据库,可以添加更多的只读数据库
3 读写分离但不用担心某些特性不支持
4 缺点:同时连接两个数据库
英文比较烂,也写几个字吧
php code for mysql read/write split
feature:
simply rw split
one master,can add more slaves
support all mysql feature
link to the master and slave at the same time
PHP代码:
mysql_rw_php.class.php
example.php
相关项目:
1 MySQL_Proxy
mysql_proxy好像还没有建议应用在生产环境,可能还有部分没解决的bug
2 mysql-master-master
需要perl环境支持,可以试试,说是在生产环境应用的
3 amoeba 变形虫
性能听说比mysql-proxy好,但部分语句可能不支持,这个需要考虑一下是否适用了