由于我对问题的解释似乎还不够清楚,所以让我再试一次。在每个工作站的基础上打开mysql连接
设置:
我们有Web应用程序使用单一的MySQL用户连接到数据库,更重要的是以下经典的方法。为了避免混淆,我将把mysql用户称为sqluser,并且将用户登录到web应用程序,只需用户。现在,用户可以从他们的工作站登录到Web应用程序,这些工作站可以是台式机或笔记本电脑(主要是笔记本电脑)。
场景:
我将使用我们的Web应用程序中的报告模块来说明问题。当用户从系统请求报告时,我们使用临时表来拉取,处理和格式化数据 - php接收就绪的结果集来显示,没有数据处理在PHP端完成。问题在于临时表或多或少随机地通过mysql连接共享,导致我们相信某些连接被重用。这是不可接受的,因为两个用户生成相同的报告(但是从不同的时间范围说)会覆盖彼此的临时表。
目前我们克服了交易中的这个问题:每个报表请求都被包装在一个事务中 - 临时表被创建并被放入,使得它们对并行或重用连接是透明的。
我们所希望的:
我们希望每每个用户/工作站不共享临时表的新的,非共享连接。换句话说,我们希望为每个连接到数据库的用户建立一个新的mysql连接,这将保留其临时表,但不会在与不同用户并行连接的情况下共享它们。
潜在的解决方案:
就是让每个Web应用程序的用户匹配sqluser并使用此sqluser对于给定的用户数据库连接。由于此解决方案提供了额外的复杂层次(管理sqlusers与用户的匹配),我宁愿这不是第一选择。
问:
我们能否以某种方式强制MySQL打开每个用户/工作站基础MySQL连接,不会跨越共享连接池的临时表?有没有框架(PHP或Python),那里将有这样的功能开箱即用?
我希望这个解释稍微清楚一点,然后原来。
原始文本:
是否有可能打开每个工作站的基础上的MySQL 连接 登录到同一台MySQL 用户什么时候?
这里的情景:我们 有web应用程序是使用 单mysql用户,是什么让MySQL的 重用打开的连接,什么是好 到一个点连接到MySQL。当我们 需要在每台计算机上创建基于 的临时表时,问题就开始了。目前, 解决方法是使用事务和 之后删除临时表, 但我们希望它们在工作站的会话内(在 webapp用户上下文中)可重复使用 。
另一种解决方案是创建为每个web应用用户 MySQL的用户以及在 登录在该用户 开放连接。但是,您必须管理 不断轮换,并将 mysql用户与webapp用户进行匹配。
相反,我们想以某种方式迫使 MySQL来打开每 web应用程序用户新的连接,或者使用 工作站的内部IP,MACADDRESS, 等任何人都知道,如果这是连 可能吗?
我们刨重写从头这个 web应用,所以基本上连 真正深刻的变化都可能在 这一点,因此这个问题。 也许有PHP(或Python) 框架,可以实现这个 开箱即用?
*“如果这是一个潜在的解决方案,那么你已经不能解释这个问题非常好” *: 请重新阅读的问题 - 我希望这是更清晰这次:) – Maiiku
看来你确实解释了这个问题 - 你提出的解决方案是不可行的。使用非临时表来存储您的中间结果。 – symcbean
为什么如此?不同的sqlusers在mysql中不共享临时表(因为这是主要问题),所以它似乎可行。 – Maiiku