Gim*_*mli 5 php mysql database database-connection laravel-4
我有一个关于在Laravel 4.1中处理多个DB连接的问题.假设我在该主机上有一个带有3个DB的数据库主机
例如:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_1',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_2',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql3' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_3',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Run Code Online (Sandbox Code Playgroud)
我应该与这些数据库建立3个不同的连接吗?
或者我应该只有一个连接,并在每个模型中指定表名称,如:
public $table = "DB_2.table_name";
Run Code Online (Sandbox Code Playgroud)
我问的原因是,我注意到我更容易耗尽数据库连接,因为它在需要连接到不同数据库时创建新的数据库连接.
我知道两者都有效,但我对在这种情况下被认为是"最佳实践"感兴趣.
提前感谢您的反馈.
干杯.
指定到表,而不是数据库实现。
我不太喜欢允许在同一服务器上的数据库之间在 MySQL 上进行跨数据库查询的“功能”。这就是允许你提到的事情的原因。
table_name_test来测试代码或数据库修改,则每次在数据库之间跳转时都必须修改代码中的所有表驯服,而不是仅编辑配置文件。select * from db1.foo f Join db2.bar b on b.id = f.id;. 恭喜您刚刚将 2 个数据库变成了一个可能无法在 MySQL 之外运行的大数据库另外,即使您指定了三个连接,您也可能不会建立连接并同时使用所有三个连接......我希望如此。如果你确实使用了 Laravel 应用程序/站点的每个请求的全部 3 个连接,则可能会节省 2 个连接,这可能是微优化。
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |