High performance mysql INSERTs
本文关键字:INSERTs mysql performance High | 更新日期: 2023-09-27 18:28:34
我当前正在重写一个旧的ASP''ASPNET应用程序。由于我不能完全重写,所以我需要按部分进行。现在我正在将代码库从ODBC升级到.net连接器。
有一个函数可以在用户每次访问页面时插入一个(或2个)。性能非常重要。这是INSERTs数据的旧ODBC函数:
public string WriteDb(string sql)
{
myConnection.Close();
myConnection.Open();
myCommand.Connection = myConnection;
myCommand.CommandText = sql;
return myCommand.ExecuteNonQuery().ToString();
}
这是我正在做的一个:
void WriteDb(string sql, ICollection<MySqlParameter> pms)
{
using(MySqlConnection myConnection = new MySqlConnection(sConnection))
{
using(MySqlCommand myCommand = myConnection.CreateCommand())
{
myCommand.CommandText = sql;
foreach (var p in pms)
{
myCommand.Parameters.Add(mySqlParameter);
myCommand.ExecuteNonQuery();
}
}
}
我担心连接池会耗尽。我的功能可以改善吗?
注意1-查询
我认为,最大的变化之一是你现在插入了这样的东西:
INSERT INTO tablename (KEY, KEY) VALUES (VALUE, VALUE);
INSERT INTO tablename (KEY, KEY) VALUES (VALUE, VALUE);
但更好的插件是:
INSERT INTO tablename (KEY, KEY) VALUES (VALUE, VALUE), (VALUE, VALUE);
它不需要2个查询和到数据库的通信,而只需要1个
我不知道你是否有这样的疑问。但这会提高性能。
注意2-连接
您可以为每个查询执行一个新的MySqlConnection。建立连接是一种繁重的方法。缓存你的连接,直到你停止使用它,并在完成后关闭它,这将有很大帮助!对于您在页面上执行的所有MySQL函数,使用相同的连接可能会更好。然后在页面末尾关闭它。