我正在阅读关于MySQL: Using Connector/Net with Connection Pooling。建议不要使用全局对象并手动打开/关闭它。此外,建议使用MySqlHelper
而不是使用MySqlCommand
对象。MySQL Connector Connector with many async inserts
因此,假设我有一个CONNECTION_STRING
设置,我可以这样做:
MySqlHelper.ExecuteNonQuery(CONNECTION_STRING,
@"INSERT INTO `table1` (`col3`,`col4`) VALUES (@col3, @col4);",
(new List<MySqlParameter>() {
new MySqlParameter("@col3", @"another value"),
new MySqlParameter("@col4", @"some value")
}).ToArray()
);
现在,假设我做(通过TPL)的异步并行任务上面所说的几千倍。
我的MySQL服务器上有一些允许的最大连接数,并且我开始引发异常,声称用户超出了最大连接数。我认为连接池是想为我自动处理这个问题?驱动程序是不是假设为我自动集合和排队?
我已经允许目前1500的最大连接数,和我说这在我的连接字符串:
Pooling=True;minimumPoolSize=0;maximumpoolsize=100;
然而,我仍然得到最大连接数超标。我需要一些关于如何处理许多异步插入的建议,而不会破坏这个最大连接限制。
终于找到了问题,我想MySQL具有'max_connections'作为一个服务器范围内的事物(我的是1500),但是也有'max_user_connections'(每个MySQL用户帐户的最大连接数),它被设置为15个。 – user17753
You可以添加您的评论作为答案,然后在一段时间后接受您自己的答案。 –