每个PHP应用程序同时打开两个MySQL连接是否是一种良好的做法?

每个PHP应用程序同时打开两个MySQL连接是否是一种良好的做法?,php,mysql,sql,Php,Mysql,Sql,我的PHP代码允许用户在只读用户中执行任意SQL代码。它还需要访问具有写功能的用户。我的代码在“可写用户”中执行命令,然后使用单独的连接使用“只读用户”查询数据库。然后再次使用“可写用户”进行查询并退出脚本 当它执行只读用户的查询时,它会使可写用户的连接保持打开状态。据我所知,这是最好的方法,但我的学院担心MySQL的做法不好,希望关闭可写用户的连接,稍后重新打开(可能是因为它将MySQL的并发连接数增加了一倍)。什么是最好的方法 表示“通常,创建数据库连接的成本很高。” 什么更有效?为什么:每

我的PHP代码允许用户在只读用户中执行任意SQL代码。它还需要访问具有写功能的用户。我的代码在“可写用户”中执行命令,然后使用单独的连接使用“只读用户”查询数据库。然后再次使用“可写用户”进行查询并退出脚本

当它执行只读用户的查询时,它会使可写用户的连接保持打开状态。据我所知,这是最好的方法,但我的学院担心MySQL的做法不好,希望关闭可写用户的连接,稍后重新打开(可能是因为它将MySQL的并发连接数增加了一倍)。什么是最好的方法

表示“通常,创建数据库连接的成本很高。”

什么更有效?为什么:每页一个db连接,还是每个函数一个db连接?表示“通常,创建数据库连接的成本很高。”

我对这一说法提出质疑。对于某些数据库可能是这样,但并非所有数据库都是这样。众所周知,MySQL在创建连接时非常轻量级,在使用本地unix域套接字时更是如此

更有趣的是:如果您使用的功能要求连接不改变,该怎么办?就像插入数据集,然后选择LAST_INSERT_ID()?如果使用只读连接,这将不起作用

虽然我确实认为使用只读用户帐户有利于安全性,但只有当它是脚本中使用的唯一帐户时才有意义。否则,您可能会有一些逻辑,根据查询类型决定使用什么连接——如果您自动使用正确的连接进行读写,那么从安全角度来看,使用两个连接是没有意义的

此外,如果SELECT要连接到其他连接,则在事务期间无法使用SELECT语句

总而言之:使用多个连接来完成一个连接同样可以完成的事情似乎是个坏主意——除非你能给出更多的理由

再次阅读您的问题,我意外地发现了您的特殊原因:您执行任意SQL语句。这样的话,使用受限账户就很有意义了。打开和关闭正在等待的已启用写入的连接也没有意义。这样做的唯一原因是数据库服务器达到其配置的并发连接限制

什么更有效?为什么:每页一个db连接,还是每个函数一个db连接?表示“通常,创建数据库连接的成本很高。”

我对这一说法提出质疑。对于某些数据库可能是这样,但并非所有数据库都是这样。众所周知,MySQL在创建连接时非常轻量级,在使用本地unix域套接字时更是如此

更有趣的是:如果您使用的功能要求连接不改变,该怎么办?就像插入数据集,然后选择LAST_INSERT_ID()?如果使用只读连接,这将不起作用

虽然我确实认为使用只读用户帐户有利于安全性,但只有当它是脚本中使用的唯一帐户时才有意义。否则,您可能会有一些逻辑,根据查询类型决定使用什么连接——如果您自动使用正确的连接进行读写,那么从安全角度来看,使用两个连接是没有意义的

此外,如果SELECT要连接到其他连接,则在事务期间无法使用SELECT语句

总而言之:使用多个连接来完成一个连接同样可以完成的事情似乎是个坏主意——除非你能给出更多的理由

再次阅读您的问题,我意外地发现了您的特殊原因:您执行任意SQL语句。这样的话,使用受限账户就很有意义了。打开和关闭正在等待的已启用写入的连接也没有意义。这样做的唯一原因是数据库服务器达到其配置的并发连接限制

什么更有效?为什么:每页一个db连接,还是每个函数一个db连接?表示“通常,创建数据库连接的成本很高。”

我对这一说法提出质疑。对于某些数据库可能是这样,但并非所有数据库都是这样。众所周知,MySQL在创建连接时非常轻量级,在使用本地unix域套接字时更是如此

更有趣的是:如果您使用的功能要求连接不改变,该怎么办?就像插入数据集,然后选择LAST_INSERT_ID()?如果使用只读连接,这将不起作用

虽然我确实认为使用只读用户帐户有利于安全性,但只有当它是脚本中使用的唯一帐户时才有意义。否则,您可能会有一些逻辑,根据查询类型决定使用什么连接——如果您自动使用正确的连接进行读写,那么从安全角度来看,使用两个连接是没有意义的

此外,如果SELECT要连接到其他连接,则在事务期间无法使用SELECT语句

总而言之:使用多个连接来完成一个连接同样可以完成的事情似乎是个坏主意——除非你能给出更多的理由

再次阅读您的问题,我意外地发现了您的特殊原因:您执行任意SQL语句。这样的话,使用受限账户就很有意义了。打开和关闭等待也没有意义