public void OptimizeMySql(string aTable)
{
Stopwatch benchClock = new Stopwatch();
benchClock.Start();
MySqlTransaction transact = null;
try
{
string connectString = (ProviderFactory.GetDefaultProvider()).ConnectionString;
if (string.IsNullOrEmpty(connectString))
{
return;
}
using (MySqlConnection connection = new MySqlConnection(connectString))
{
connection.Open();
transact = connection.BeginTransaction();
using (MySqlCommand cmd = new MySqlCommand(string.Format("LOCK TABLES {0} READ;", aTable), connection))
{
cmd.ExecuteNonQuery();
}
using (MySqlCommand cmd = new MySqlCommand(string.Format("CHECK TABLE {0}", aTable), connection))
{
cmd.ExecuteNonQuery();
}
using (MySqlCommand cmd = new MySqlCommand(string.Format("UNLOCK TABLES"), connection))
{
cmd.ExecuteNonQuery();
}
using (MySqlCommand cmd = new MySqlCommand(string.Format("OPTIMIZE TABLE {0}", aTable), connection))
{
cmd.ExecuteNonQuery();
}
transact.Commit();
benchClock.Stop();
Log.Info("BusinessLayer: OptimizeMySql successful - duration: {0}ms",
benchClock.ElapsedMilliseconds.ToString());
}
}
catch (Exception ex)
{
try
{
if (transact != null)
{
transact.Rollback();
}
}
catch (Exception ex2)
{
Log.Info("BusinessLayer: OptimizeMySql unsuccessful - ROLLBACK - {0}, {1}", ex2.Message, ex2.StackTrace);
}
Log.Info("BusinessLayer: OptimizeMySql unsuccessful - {0}, {1}", ex.Message, ex.StackTrace);
}
}