我在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