我正在閱讀關於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可以添加您的評論作爲答案,然後在一段時間後接受您自己的答案。 –