💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 分布式数据库 [上一页](62.html "上一页")[下一页](64.html "下一页") ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。配置DB_DEPLOY_TYPE 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下: `//在项目配置文件里面定义<br class="calibre5"></br>return array(<br class="calibre5"></br>    //分布式数据库配置定义<br class="calibre5"></br>    'DB_TYPE'   => 'mysql', //分布式数据库类型必须相同<br class="calibre5"></br>    'DB_HOST'   => '192.168.0.1,192.168.0.2',<br class="calibre5"></br>    'DB_NAME'   => 'thinkphp', //如果相同可以不用定义多个<br class="calibre5"></br>    'DB_USER'   => 'user1,user2',<br class="calibre5"></br>    'DB_PWD'    => 'pwd1,pwd2',<br class="calibre5"></br>    'DB_PORT'   => '3306',<br class="calibre5"></br>    'DB_PREFIX' => 'think_',<br class="calibre5"></br>    //其他配置参数<br class="calibre5"></br>    // ...<br class="calibre5"></br>);`连接的数据库个数取决于DB_HOST定义的数量,所以即使是两个相同的IP也需要重复定义,但是其他的参数如果存在相同的可以不用重复定义,例如: `'DB_PORT'=>'3306,3306'` 和 `'DB_PORT'=>'3306'` 等效。`'DB_USER'=>'user1', <br class="calibre5"></br>'DB_PWD'=>'pwd1', `和`'DB_USER'=>'user1,user1', <br class="calibre5"></br>'DB_PWD'=>'pwd1,pwd1',`等效。还可以设置分布式数据库的读写是否分离,默认的情况下读写不分离,也就是每台服务器都可以进行读写操作,对于主从式数据库而言,需要设置读写分离,通过下面的设置就可以: `'DB_RW_SEPARATE'=>true,`在读写分离的情况下,默认**第一个数据库配置是主服务器**的配置信息,负责写入数据,如果设置了**DB\_MASTER\_NUM**参数,则可以支持多个主服务器写入。其它的都是从数据库的配置信息,负责读取数据,数量不限制。每次连接从服务器并且进行读取操作的时候,系统会随机进行在从服务器中选择。 CURD操作系统会自动判断当前执行的方法的读操作还是写操作,如果你用的是原生SQL,那么需要注意系统的默认规则: 写操作必须用模型的execute方法,读操作必须用模型的query方法,否则会发生主从读写错乱的情况。 注意:主从数据库的数据同步工作不在框架实现,需要数据库考虑自身的同步或者复制机制。 [上一页](62.html "上一页")[下一页](64.html "下一页")