PHP如何访问数据库集群
2024-08-26 16:13:29
一般常见的有三种做法,
1,自动判断sql是否为读,来选择数据库的连接:
实例化php DB类的时候,需要一次连接两台服务器,然后根据slq选择不同的连接,举个例子:
- $link_w = mysql_connect($w_host,$user,$pwd);
- $link_r = mysql_connect($r_host,$user,$pwd);
- //执行sql
- if(preg_match("/^select/i", trim($sql))) {
- mysql_query($sql,$link_r);
- }else {
- mysql_query($sql,$link_w);
- }
这个方法的优点就是开发者执行sql不用区分读或者写,在db类的底层自己判断,缺点是,往往只需要读或者写时也需要打开两个连接。
2,调用的时候自己选择:
当执行sql前一般是能确定是写还是读,所以开发者需要手动的调用不同的连接,举个例子:
$w_db = new DB('w');
$w_db -> query('insert into .....');
当sql为读:
$r_db = new DB('r');
$r_db -> query('select .....');
主要通过,传的参数来区别sql是读还是写,每次调用sql前需要调用开发者自己判断。
3,使用MySQL
Proxy做中间层代理,会自动将判断sql是读或者写,将请求转发给服务器。优点是程序不用更改任何代码,只要启动mysql proxy
时分别指定读或写的服务器:
--proxy-backend-addresses
--proxy-read-only-backend-addresses
最新文章
- 初学HTML 常见的标签(三) 插入类标签
- Lua string库整理
- JAVA 设计模式 命令模式
- Javascript Window的属性
- Spring Roo
- cts 测试环境安装 ubuntu
- POJ 1837 Balance 【DP】
- Verilog HDL常用的行为仿真描述语句
- PAT---1013. Battle Over Cities (25)
- lucene定义自己的分词器将其分成单个字符
- spring 入门篇
- Apollo单向SSL认证(2)
- 大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试
- python3 与 Django 连接数据库报错:ImportError: No module named 'MySQLdb'
- TCP/IP模型及OSI七层参考模型各层的功能和主要协议
- LeetCode题解之N-ary Tree Postorder Traversal
- HTML5页面开发的基础性模板
- Vuex 实践讲解
- CSS :after、before、<;!DOCTYPE>;
- 32. My Experiences in the Factories 我在工厂的经历