首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速插入

加速插入
EN

Database Administration用户
提问于 2012-02-24 15:48:04
回答 2查看 3.7K关注 0票数 7

我需要有一种方法来插入一个表,快速,同步,最短的时间。我尝试过的(“盲”)是:

  • 表上没有任何索引
  • 切换到简单日志记录(从完整日志记录)

我使用的测试场景由100个连接组成,每个连接运行一个INSERT,然后等待0.1秒,然后再无限期地等待。每个“插入器”记录执行时间。

看一看执行时间,我有时在插入上看到1.5秒甚至10秒(作为例外情况),否则我看到的是典型的0.2秒。

进一步背景:

  • Server 2008 R2 Express (afaik快速版本仅限制DB大小(4GB)、内存(1GB)和逻辑CPU (1))
  • 机器:带有7200 RPM HDD、8 GB RAM和8个逻辑CPU的膝上型计算机,承载服务器和客户端。
  • 该表由1个BigInt ID (identity)、一个NVARCHAR(100)字段和NVARCHAR(最大)(插入有10k有效载荷)和一个NVARCHAR(最大)(插入处30K有效载荷)列(S)组成。

我应该在哪里寻求进一步改进这样一个过程的性能呢?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2012-02-26 13:25:05

许多人在评论中增加了很多优点。

1)将事务日志分离到不同的驱动器上。用一台笔记本就很难了。如果你不能做到这一点,给自己买一个SSD笔记本电脑,这应该会使你的生活更好。

2)将数据和日志文件预增长到目标数量。如果您希望将1GB的数据添加到数据库中,请让您的数据和日志文件至少启动1.5GB。数据和日志文件自动增长是性能的杀手,很可能是您看到这10秒的“瓶颈”性能的原因。有一些内置报告(我相信您可以右键单击DB,然后选择reports ->磁盘使用情况),其中应该有一个包含所有自动增长事件的表。

3)如果可以对每个客户端的插入进行批次处理,则使用SqlBulkCopy或BULK语句进行批处理。

4)您的表不应该有集群主键的原因。Server应该能够以相当高的性能处理身份列上的聚集索引。

票数 6
EN

Database Administration用户

发布于 2012-02-25 21:49:08

我的建议是从笔记本电脑上下来。把这个放在一个真正的机器上,带有快速驱动器和大量的内存。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/13866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档