簡體   English   中英

MySQL和PHP中針對多個數據庫的最高性能解決方案

[英]Most performant solution for multiple databases in MySQL and PHP

我有四個具有不同表的數據庫,我們將其稱為admindatauserdatapagedatamediadata

目前,我對所有數據庫使用一個mysqli實例:

$mysqli = new mysqli(...);

我一直保持打開狀態直到頁面加載結束。 我不確定性能,因此當我在一個腳本中有多個查詢時,我就做了這樣的數據庫切換:

$mysqli->query('SELECT fields FROM database1.table1');
$mysqli->query('SELECT fields FROM database2.table2');

代替:

$mysqli->select_db('database1');
$mysqli->query('SELECT fields FROM table1');
$mysqli->select_db('database2');
$mysqli->query('SELECT fields FROM table2');

那兩個在性能上哪個更好? 或者像這樣為每個數據庫保存一個mysqli實例甚至更好:

$mysqli->query('SELECT fields FROM table1');
$mysqli2 = new mysqli(...);
$mysqli2->query('SELECT fields FROM table2');

編輯

兩年前有人在php.net上寫道:

In some situations its useful to use this function for changing databases in general. We've tested it in production environment and it seams to be faster with switching databases than creating new connections.

http://ch2.php.net/mysqli_select_db

聽到更多關於它的消息將是一件很高興的事。

有人告訴我,最好為每個數據庫/每個用戶保持單獨的連接。 不僅因為安全性問題,還因為代碼的靈活性。 將來,如果您想開始使用ORM,將很難重寫對多個數據庫使用單一連接的代碼。 它還可能有助於調試數據庫問題。

另一方面,存在每個請求具有多個連接的潛在問題。 在項目導入中,我們確實使用了單獨的連接,但是當不再需要它們時,請注意將其關閉。

我認為沒有通用的解決方案,而這一切都取決於您自己的需求和要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM