55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using MesETL.Shared.Helper;
|
|
|
|
var connStr = GetArg("-s") ?? throw new ApplicationException("未配置数据库连接字符串");
|
|
var eachLimit = int.Parse(GetArg("-l") ?? "1000");
|
|
var parallelTask = int.Parse(GetArg("-p") ?? "4");
|
|
|
|
var deletionCount = 0;
|
|
|
|
Console.WriteLine("Running Deletion...");
|
|
|
|
_ = Task.Run(async () =>
|
|
{
|
|
while (true)
|
|
{
|
|
await Task.Delay(5000);
|
|
Console.WriteLine($"[{DateTime.Now}] DELETE COUNT: {deletionCount}");
|
|
}
|
|
});
|
|
|
|
await Parallel.ForAsync(0, parallelTask, async (i, token) =>
|
|
{
|
|
while (true)
|
|
{
|
|
var effectRows = await DatabaseHelper.NonQueryAsync(connStr,
|
|
$"DELETE FROM `order_data_block` WHERE CompanyID = 0 ORDER BY ID LIMIT {eachLimit};", token);
|
|
if(effectRows == 0)
|
|
break;
|
|
Interlocked.Add(ref deletionCount, effectRows);
|
|
}
|
|
});
|
|
|
|
Console.WriteLine($"[{DateTime.Now}] DELETE COUNT: {deletionCount}");
|
|
return;
|
|
string? GetArg(string instruct)
|
|
{
|
|
var idx = Array.IndexOf(args, instruct);
|
|
if (idx == -1)
|
|
return null;
|
|
if (args[idx + 1].StartsWith('-'))
|
|
throw new ArgumentException("Argument Lost", nameof(instruct));
|
|
return args[idx + 1];
|
|
}
|
|
|
|
// var match = await DatabaseHelper.QueryTableAsync(connStr,
|
|
// $"SELECT `ID` FROM `order_data_block` WHERE CompanyID = 0 LIMIT {eachLimit};",
|
|
// token);
|
|
// var rows = match.Tables[0].Rows;
|
|
// if (rows.Count == 0)
|
|
// return;
|
|
//
|
|
// foreach (DataRow row in rows)
|
|
// {
|
|
// var id = row["ID"].ToString();
|
|
// await DatabaseHelper.NonQueryAsync(connStr, $"DELETE FROM `order_data_block` WHERE `ID` = {id}", token);
|
|
// } |