繁体   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