Ich habe eine Frage zum Umgang mit mehreren DB-Verbindungen in Laravel 4.1. sagen, dass ich ein DB-Host mit 3 DBs haben auf diesem HostZu viele Verbindungen w/Laravel 4 und MySQL
zB:
'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' => '',
),
Sollte ich auf diese DBs machen drei unterschiedliche Verbindungen sein?
Oder sollte ich einfach eine Verbindung haben und in jedem Modell den Tabellennamen etwas angeben:
public $table = "DB_2.table_name";
Der Grund, warum ich frage, ist, dass ich habe bemerkt, dass ich es einfacher ist, die zu erschöpfen Datenbankverbindungen, da es eine neue DB-Verbindung erstellt, wann immer es Verbindung zu einer anderen Datenbank benötigt.
Ich weiß, dass beide funktionieren werden, aber ich bin daran interessiert, was als "Best Practice" in einer solchen Situation angesehen wird.
Vielen Dank im Voraus für die Rückmeldung.
Prost.
Ja, ich denke du hast absolut recht. Letztendlich müssen wir unser Datenmodell so umgestalten, dass wir nie mehrere DB-Verbindungen für einen Arbeitsablauf erstellen müssen - insbesondere bei einer einzigen Abfrage. Bis dahin muss ich etwas tun, das das System vor Überlastung bewahrt. Das Problem, das ich habe, ist, wenn wir viele gleichzeitige Anfragen verarbeitet haben. Dies führt zu maximal 3 Verbindungen pro Anfrage - was die Leistung bei hohem Datenverkehr beeinträchtigen kann. – Gimli
@ Gimli gibt es keine Möglichkeit in PDO (vorausgesetzt, Sie verwenden, dass in Laravel) Db's auf der gleichen Verbindung zu wechseln. Sobald ein DSN an einen Konstruktor übergeben wurde, ist es gesetzt. Der DSN sollte die Datenbank angegeben haben. Wenn Sie versuchen, den Datenbanknamen in der $ -Tabelle zu verwenden, könnten Sie Anfragen erhalten, die wie folgt aussehen: 'select * from DB1.DB2.footable'. – Ray
@ Gimili natürlich, mit manuell erstellten Abfragen können Sie dies tun, wenn Sie nicht ein Orm oder DQL verwenden. – Ray