我为游戏开发了一个仿真程序。该程序与MySQL一起用于数据库通信。我曾尝试使用IDisposable方法(主要由大家建议),在该特定线程需要与数据库有关时,为线程分配MySQL连接。但是,当服务器达到400多个用户时,MySQL服务器会因请求而过载。我也尝试了池选项(大小:最小0,最大150) - 它导致了同样的问题。
目前,我使用锁定来提供并行系统。系统使用静态对象(静态连接对象)来管理整个服务器(我认为它会影响多线程提供的性能)。
public static Boolean Query(ref MySqlDataReader Resource, String Query)
{
lock (Connection)
{
MySqlCommand Cmd = new MySqlCommand(Query, Connection);
try
{
Resource = Cmd.ExecuteReader();
}
catch (MySqlException Exception)
{
Console.WriteLine("MySQL Error: " + Exception.Message);
return false;
}
return true;
}
}
使用“查询”方法的方法。
public static String GetObjectProperty(
String Field, String Identifier,
Boolean Primary = true, String Table = "Accounts")
{
String FieldValue = null;
try
{
lock (GeneralDB.Connection)
{
MySqlDataReader DataReader = null;
if (GeneralDB.Query(
ref DataReader,
"SELECT " + MySqlHelper.EscapeString(Field) +
" FROM " + Table +
" WHERE " + (Primary ? "ID" : "Name") + " = '" +
MySqlHelper.EscapeString(Identifier) + "';") == false)
{
return null;
}
if (DataReader == null) return null;
while (DataReader.Read())
FieldValue = DataReader[0].ToString();
DataReader.Close();
return FieldValue;
}
}
catch (Exception Exception)
{
return FieldValue;
}
}
我迫切需要一些建议。感谢。