C# - Mysql插入限制

时间:2016-06-17 08:50:20

标签: c# mysql

我是编程和数据库的新手。我开始学习Mysql和C#。因此,我在C#中创建了一个非常简单的测试程序来测试一分钟内可以执行多少次插入。 (只是一个简单的无限循环,将简单的文本插入到列中)我正在观察MySQL Workbench中的仪表板,问题是该程序每秒只能插入1000个查询。如果我同时运行2-3个程序实例,我可以看到2-3 * 1000个查询/秒。

MySQL中有限制吗?

1 个答案:

答案 0 :(得分:0)

插入费率没有内置限制。

当您尝试高插入率时,很多事情会发挥作用。例如。

  1. 您要插入的每一行有多大?
  2. 目标表上的索引有多复杂? INSERT操作期间索引更新需要一些时间。
  3. 您的桌子使用哪种访问方式? MyISAM是无事务的,所以一个天真的程序可以推动更多行/秒。 InnoDB有交易,所以用BEGIN / COMMIT语句包装的1000个左右的批量插件可以加快速度。
  4. 服务器上的磁盘/ ssds有多快?它有多少RAM?
  5. 您的客户端计算机及其与MySQL服务器之间的网络有多快?
  6. 其他程序是否尝试在您插入的同时读取目标表?
  7. 您已经提到过,对于2-3个插入程序,您的总插入率大致呈线性增长。这意味着瓶颈在你的插入程序中,而不是服务器,在那个规模。

    与许多语言框架一样,C#提供了预备语句。它们是一种编写查询的方法,可以反复使用不同的数据值。它更快。如果您的数据来自不受信任的来源(查找SQL注入),它也会更安全。

    MySQL允许您使用单个INSERT操作插入多行。更快。

    INSERT INTO TABLE tbl (a, b, c)
                   VALUES (1,2,3),(4,5,6),(7,8,9)
    

    MySQL提供LOAD DATA INFILE语句。如果您需要,您可以使用该声明获得惊人的高批量负载率。