我在Laravel 4.1中有一个关于处理多个数据库连接的问题。 说我有一个DB主机与主机Laravel 4和MySQL的连接太多
如3个DBS:
'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' => '',
),
我应该做的那些数据块3个不同的连接?
或者我应该只是有一个连接,并在每个模型指定表名 喜欢的东西:
public $table = "DB_2.table_name";
我之所以这样问,是,我已经注意到,我更容易耗尽 数据库连接,因为它创建一个新的数据库连接,当它需要连接到不同的数据库时,它需要 。
我知道两者都有效,但我对这种情况下被认为是“最佳实践”的事情感兴趣。
在此先感谢您的反馈意见。
干杯。
是的,我认为你是绝对正确的。最终,我们需要重新设计我们的数据模型,以便我们不必为一个工作流程创建多个数据库连接 - 尤其是在单个查询的情况下。 在那之前,我需要做一些让系统免于重载的东西。我遇到的问题是我们有很多并发请求正在处理中。这会导致每个请求最多有3个连接 - 这可能会降低高流量的性能。 – Gimli
@Gimli PDO中没有办法(假设你在laravel中使用它)在相同的连接上“切换”数据库。一旦将dsn传递给构造函数,它就会被设置。 DSN应该有指定的数据库。如果您尝试在$表中使用db名称,则可能会看到如下所示的请求:'select * from DB1.DB2.footable'。 – Ray
@Gimili当然,如果您不使用orm或DQL,则可以使用手动构建的查询来执行此操作。 – Ray