PHP 数据库读写分离的经典例子

发布时间:2020-05-23编辑:脚本学堂
本文介绍下,用php代码实现mysql数据库读写分离的例子,有兴趣的朋友,可以参考研究下,希望对你有一定的帮助。

本节主要内容:
php实现mysql/ target=_blank class=infotextkey>mysql数据库的读写分离。

实现代码:
假设:
127.0.0.1:3306 为读的数据库
127.0.0.2:3306 为写的数据库

例子:
 

复制代码 代码示例:
<?
/**
* mysql读写分离
* edit: www.jb200.com
*/
class db
{
    public function __construct($sql)
    {
        $chestr = strtolower(trim($sql));
        //判断sql语句有select关键字的话,就连接读的数据库,否则就连接写数据库
        if(substr($chestr,0,6)=='select')
        {
            echo 'I am using select db..<br>';
            $link = mysql_connect("127.0.0.1:3306", "root", "") or die("Could not connect: " . mysql_error());
            mysql_select_db("test");
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result, MYSQL_NUM))
            {
                printf("%s %s", $row[0],$row[1]);
            }
            echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_proto_info($link).mysql_get_client_info().'<br>';        
        }
        else
        {
            echo 'I am using insert db..<br>';
            $link = mysql_connect("127.0.0.2:3306","root","") or die("Could not connect: " . mysql_error());
            mysql_select_db("test");
            $result = mysql_query($sql);
            echo @mysql_affected_rows($result);
            echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_proto_info($link).mysql_get_client_info().'<br>';       
        }
         
    }
}
 
$d = new db("  update `users` set `select`='fasdf' where `id` =1");
$d2 = new db("         SELECT * from `users`");

附,数据库读写分享的相关解释。

数据库的读写分离,可以有效降低降低数据库的压力。

一个主数据库,多个从数据库的架构,实现读写分离,是经常用到的方案。
主数据库提供写操作,从数据库提供读操作。
其实分散数据库的压力,并不一定要读写分离,但是读写分离还是有自身的诸多好处的。
比如:
1、有利于数据库的负载均衡实现。
2、有利于实现主从数据库热备份。如果不分离,那么就要考虑做双向热备份策略了。
这个的配置比较复杂,并且出问题后也比较麻烦。
3、有利于保持数据库的高可用性,特别是在数据库集群的环境。
4、最后,实现读写分离后,对mysql的查询速度以及稳定性会更有信心。