0

我将数据从终端插入数据库以通过 WebService访问

像这样:

using (Conn = new OleDbConnection(Work_Connect))
{
    foreach (DataRow R in ds.Tables["MyCount"].Rows)
    {
        U_TermNum = TermNum;
        U_Id = Id;
        U_Bar = R["Bar"].ToString().Trim();
        U_Qty = R["Qty"].ToString().Trim();
        U_Des = R["Des"].ToString().Trim();
        U_UserName = UserName;
        U_UserID = UserID;

        SQL = "INSERT INTO MyTbl (ID,Bar,Qty,TermNum,Des,UserName,UserID) VALUES (@A,@B,@C,@D,@E,@F,@G)";

        using (OleDbCommand Cmd4 = new OleDbCommand(SQL, Conn))
        {
            Cmd4.Parameters.AddWithValue("@A", Convert.ToInt32(U_Id));
            Cmd4.Parameters.AddWithValue("@B", U_Bar);
            Cmd4.Parameters.AddWithValue("@C", Convert.ToDouble(U_Qty));
            Cmd4.Parameters.AddWithValue("@D", U_TermNum);
            Cmd4.Parameters.AddWithValue("@E", U_Des);
            Cmd4.Parameters.AddWithValue("@F", U_UserName);
            Cmd4.Parameters.AddWithValue("@G", U_UserID);
            Cmd4.ExecuteNonQuery();

        }

    }

我尝试从 20 个终端发送

如果我发送 1--> 等待 10 秒发送 2--> 等待 10 秒--> .......... 它工作得非常快,所有终端在 1 分钟后结束发送

但是如果我发送 Parallel at one--> 它的工作速度非常慢,所有终端在 6 分钟后结束

为什么 ?以及如何更改我可以并行发送并快速发送所有端的代码?

现在我注意到并非所有行都插入到数据库中(当我想将它们全部放在一个中时)如何处理这个麻烦?

4

1 回答 1

0

如果您发现您的应用程序在负载下陷入困境,那么使用 Access 后端数据库可能不是适合您情况的正确选择。具体来说:

  • 通常不建议将 ACE/Jet (Access) 数据库用于并发连接数可能有很大差异并且 Web 流量会“飙升”到远高于 ACE/Jet 的“舒适区”的活动水平的 Web 应用程序中。

  • Access 开发人员之间的非正式讨论倾向于将大约 10 个并发用户视为 Access 应用程序将开始变慢的点,而大约 25 个并发用户通常被认为是实际限制。当然,这些是非常通用的指导方针,并且一些 Access 应用程序可以根据他们的使用模式处理更多的并发用户(例如,主要是偶尔插入和更新的查找)。

因此,如果您的应用程序经常有大约 20 个并发连接以尽可能快的速度将 INSERT 插入数据库,那么您应该考虑将数据库后端切换到更适合该类型活动的基于服务器的产品。

于 2013-06-06T12:23:00.457 回答