太多联系

OHL*_*ÁLÁ 7 mysql performance

我正在使用 MATLAB 为数据库提供数据,但过了一段时间后出现too many connections错误。我总是成对使用 opendb 和 closedb 。是要禁食吗?插入一行后是否需要等待?

Connecting to  host = localhost  user = root  password = ***
Uptime: 1591  Threads: 149  Questions: 2956294  Slow queries: 0  Opens: 196391  Flush tables: 1  Open tables: 81  Queries per second avg: 1858.135
Current database is "forwind"
Connection closed, current status:
No connections open
add row
Connecting to  host = localhost  user = root  password = ****
Uptime: 1591  Threads: 150  Questions: 2956402  Slow queries: 0  Opens: 196491  Flush tables: 1  Open tables: 75  Queries per second avg: 1858.203
Current database is "forwind"
Connection closed, current status:
No connections open
add row
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 8

默认情况下,MySQL 只允许151 个连接(对于超级用户再加上一个)。

在您的 MATLAB 输出中,您先显示 149 个线程,然后显示 150 个线程。我认为其中大多数都连接到数据库。150 个 MATLAB 线程将生成 150 个连接。

有几种方法可以尝试解决此问题。

  1. 一种可能性是限制 MATLAB 中的线程数。您可以使用maxNumberCompThreads函数来做到这一点。请注意,这仅在 R2007b 到 R2010a 中可用(并且它会从 R2009b 开始向您发出警告)。或者,-singleCompThread选项也可以使用,但将您限制为一个线程。

  2. 尝试将连接打开的时间限制为绝对最短的时间间隔:打开连接、处理数据库工作、关闭连接。这可能会起作用,具体取决于每个线程正在执行的其他(非数据库)工作量。

  3. 最后,您可以增加允许的数据库连接数。您将需要更改max_connections 服务器选项。只需使用命令“SET MAX_CONNECTIONS = 500”。

  • 小尼皮克。从 5.1.15 开始,max_connections 的新默认值为 151:http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_connections (2认同)

Der*_*ney 6

正如理查德指出的那样,您达到了 max_connections 限制。你可以增加它,但你可能只是推迟了再次达到极限的必然结果。

与其打开连接,添加插入,然后关闭连接,不如尝试安排操作:打开连接,提供一堆更改,然后关闭连接。