【问题标题】:C# - Mysql insert limitC# - Mysql 插入限制
【发布时间】:2016-06-17 18:12:40
【问题描述】:

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

MySQL有限制吗?

【问题讨论】:

  • "根据您的系统设置,MySql 每秒可以轻松处理超过 50.000 次插入。" - 我在这里找到了这个声明stackoverflow.com/questions/3519972/…。请举例说明您如何插入数据,例如时间:2019-05-10 标签:c#codesn-p
  • 我认为这是程序的限制,与您的计算机性能有关,运行更多的程序实例当然会使用更多的内存和 CPU。大型数据库每秒计算超过 1000 个查询...我建议在您的应用程序中使用更多线程

标签: c# mysql


【解决方案1】:

插入率没有内置限制。

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

  1. 您要插入的每一行有多大?
  2. 目标表上的索引有多复杂?在 INSERT 操作期间索引更新需要时间。
  3. 您的表使用哪种访问方法? MyISAM 是无事务的,因此一个简单的程序可以每秒推送更多行。 InnoDB 有事务,因此以 1000 个左右的批次进行插入,并包含在 BEGIN / COMMIT 语句中,可以加快速度。
  4. 您服务器上的磁盘/ssd 有多快?它有多少 RAM?
  5. 您的客户端计算机以及它们与 MySQL 服务器之间的网络有多快?
  6. 其他程序是否在您执行插入操作的同时尝试读取目标表?

您已经提到,对于插入程序的 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 语句。如果需要,您可以使用该语句获得惊人的高批量加载率..

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 2020-04-17
    • 2013-10-15
    • 2011-08-12
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多