>백엔드 개발 >PHP 튜토리얼 >PHP 데이터베이스에서 읽기와 쓰기를 분리하는 전형적인 예

PHP 데이터베이스에서 읽기와 쓰기를 분리하는 전형적인 예

WBOY
WBOY원래의
2016-07-25 08:56:011627검색
  1. /**
  2. * mysql读写分离
  3. * edit: bbs.it-home.org
  4. */
  5. class db
  6. {
  7. public function __construct($sql)
  8. {
  9. $chestr = strtolower(trim($sql));
  10. //判断sql语句有select关键字的话,就连接读的数据库,否则就连接写数据库
  11. if(substr($chestr,0,6)=='select')
  12. {
  13. echo 'I am using select db..
    ';
  14. $link = mysql_connect("127.0.0.1:3306", "root", "") or die("Could not connect: " . mysql_error());
  15. mysql_select_db("test");
  16. $result = mysql_query($sql);
  17. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  18. {
  19. printf("%s %s", $row[0],$row[1]);
  20. }
  21. echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_proto_info($link).mysql_get_client_info().'
    ';
  22. }
  23. else
  24. {
  25. echo 'I am using insert db..
    ';
  26. $link = mysql_connect("127.0.0.2:3306","root","") or die("Could not connect: " . mysql_error());
  27. mysql_select_db("test");
  28. $result = mysql_query($sql);
  29. echo @mysql_affected_rows($result);
  30. echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_proto_info($link).mysql_get_client_info().'
    ';
  31. }
  32. }
  33. }
  34. $d = new db(" update `users` set `select`='fasdf' where `id` =1");
  35. $d2 = new db(" SELECT * from `users`");
复制代码

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

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

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



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.