【问题标题】:MSSQL varchar(max) 50 seconds for one record to insertMSSQL varchar(max) 50 秒插入一条记录
【发布时间】:2020-04-27 00:29:25
【问题描述】:

您好,我有一张表,其中包含我需要将文本/json/xml 存储到其中的字段。如果我只插入一条长度约为 20MByte 的记录,则需要大约 50 秒。 表是这样定义的

table {
  ID: integer autoincrement primaryindex
  Data: varchar(max)
} 

可以做些什么来优化它。我希望它可以即时插入

【问题讨论】:

  • "Instant" 太野心勃勃了,因为无论您如何存储它,您的客户端都必须将那 20 MiB 的数据传输到服务器。但是假设您有一个良好的网络连接和一个良好的数据库 I/O 系统,那么快速插入应该是可能的。最大的问题是 1)如何生成文本和 2)您使用什么代码来进行插入?衡量这一点的最糟糕方法是使用 Management Studio,它根本不适合处理大值。
  • 正如 Jeroen 提到的,我们需要查看插入语句,但我想说我们还需要查看 SET STATISTICS IO ON 的输出,并将执行计划粘贴到 brentozar.com/pastetheplan
  • 感谢您的快速解答。看来是我们 Azure 级别的 SQL 的问题。服务器。

标签: sql-server blob varchar varcharmax


【解决方案1】:

查看数据库文件的大小(日期和事务日志)。您需要在文件中有大量空闲页面,以避免自动扩展导致这样做。

一个+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多