# 分布式数据库

ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。

配置`database.deploy` 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下:

```

//分布式数据库配置定义

return [

// 启用分布式数据库

'deploy' => 1,

// 数据库类型

'type' => 'mysql',

// 服务器地址

'hostname' => '192.168.1.1,192.168.1.2',

// 数据库名

'database' => 'demo',

// 数据库用户名

'username' => 'root',

// 数据库密码

'password' => '',

// 数据库连接端口

'hostport' => '',

]

```

连接的数据库个数取决于`hostname`定义的数量,所以即使是两个相同的IP也需要重复定义,但是其他的参数如果存在相同的可以不用重复定义,例如:

```

'hostport'=>'3306,3306'

```

```

'hostport'=>'3306'

```

等效。

```

'username'=>'user1',

'password'=>'pwd1',

```

```

'username'=>'user1,user1',

'password'=>'pwd1,pwd1',

```

等效。

还可以设置分布式数据库的读写是否分离,默认的情况下读写不分离,也就是每台服务器都可以进行读写操作,对于主从式数据库而言,需要设置读写分离,通过下面的设置就可以:

```

'rw_separate' => true,

```

在读写分离的情况下,默认第一个数据库配置是主服务器的配置信息,负责写入数据,如果设置了`master_num`参数,则可以支持多个主服务器写入。其它的都是从数据库的配置信息,负责读取数据,数量不限制。每次连接从服务器并且进行读取操作的时候,系统会随机进行在从服务器中选择。

还可以设置`slave_no` 指定某个服务器进行读操作。

> 如果从数据库连接错误,会自动切换到主数据库连接。

调用模型的CURD操作的话,系统会自动判断当前执行的方法的读操作还是写操作,如果你用的是原生SQL,那么需要注意系统的默认规则: **写操作必须用模型的execute方法,读操作必须用模型的query方法**,否则会发生主从读写错乱的情况。

> 注意:主从数据库的数据同步工作不在框架实现,需要数据库考虑自身的同步或者复制机制。

php 分布式数据库查询,分布式数据库相关推荐

  1. SQL Server2019数据库查询所有数据库名、表名、表结构、表字段、主键方法演示,执行sql提示对象名‘user_tab_columns‘、 ‘user_cons_columns‘ 无效问题解决

    SQL Server2019 数据库查询所有数据库名.表名.表结构.表字段.主键方法演示 第一章:查询方法 ① 查询所有数据库名 ② 查询所有表名方法 ③ 查询表结构.表字段方法 ④ 查询主键方法 第 ...

  2. php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云

    # 分布式数据库 ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`database.deploy` 为1 可以采用分布式数据库支持 ...

  3. mysql数据库查询 g_数据库MySQL补充( 查询)

    show create table 表名 \G;(查看创建的属性) alter table 表名 auto_increment=xx;(修改自增起始值) set session auto_increm ...

  4. php输出mysql查询结果_PHP简单获取数据库查询结果并返回JSON

    header("Content-type:text/html;charset=utf-8"); //连接数据库 $con = mysql_connect("localho ...

  5. Java数据库查询简介

    利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如g ...

  6. HTML/PHP/MySQL实现登录界面、连接数据库、数据库查询、数据在页面展示

    应用场景 帮女朋友做作业,需要用xampp实现网站建设,要求建立后台数据库.使用PHP实现页面查询.页面内容更新等功能. 本人自查自学,使用了较多的基础知识点,在此处记录下. 代码实现 以下涉及数据库 ...

  7. C#数据库查询和操作大全

    一:C#数据库查询之数据库连接代码: SqlConnectionobjSqlConnection=newSqlConnection("server=127.0.0.1;uid=sa;pwd= ...

  8. QT学习-07-sqllite数据库-查询

    数据库查询 1.数据库查询简述 SELECT语句的功能非常强大,其选项也非常丰富. 语法: SELECT [ALL|DISTINCT][TOP n[PERCENT]]<目标列表达式>[, ...

  9. mysql数据库算法_数据库:MySQL索引背后的数据结构及算法原理【转】

    原文:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话 ...

最新文章

  1. 「AI 质检员」在富士通上岗,效率比人工高 25%
  2. 毕业使人头秃:发现自己的idea已经被人发表了,该怎么办?
  3. tp设置打印机虚拟服务器,tp打印机服务器设置
  4. 怎么在linux下使用ftp服务器,怎么在Linux下建立安全的FTP服务器?
  5. java重定向代码_Java程序员经典面试题集大全 (三十四)
  6. 填坑帖 By cellur925
  7. 让一让,神州泰岳要进化了
  8. 矩池云安装PyQt5,并在VNC中测试使用
  9. Python3----- assert(断言)
  10. 如何升级浏览器_涨姿势|教你用手机一键升级路由器软件(固件)
  11. DB2 ResultSet用法
  12. netstat 的详解
  13. Hi3519V101开发(二)
  14. 漫谈bufferbloat以及TCP公平性
  15. 005_软件安装之_常用办公软件
  16. 中国咖啡机市场运行现状调研及投资战略分析报告2022-2027年
  17. 几何画板用迭代法作图的技巧
  18. 微信小程序-刷新当前页
  19. 如何购买一台腾讯云服务器
  20. 奇虎360 -- 2013年校园招聘技术类笔试题

热门文章

  1. 计算机网络(二十七)-IPv4
  2. 7-1 是否同一棵二叉搜索树 (30分)
  3. 【剑指offer】面试题23:链表中环的入口节点
  4. ajax官方api,yangguozhong
  5. goland 方法注释_goland 设置注释模板的过程图文详解
  6. python狗图像识别_TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
  7. vb上传文件到MySQL_ASP.NET上传文件到数据库VB版
  8. C语言中生成可执行程序的过程
  9. 滨江机器人餐厅_餐厅来了机器人服务员
  10. linux编译错误 程序中有游离的,操作系统实验报告 附思考题(24页)-原创力文档...