Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 插入速度_Sql Server - Fatal编程技术网

Sql server 插入速度

Sql server 插入速度,sql-server,Sql Server,这是一个新问题 我在SQL数据库中有两个表。两者都只是十几列字符串、int或date,没有索引,没有存储过程。在select*from语句中,我每秒得到约30000行。但是在插入到…时,我每秒只能插入”流。

这是一个新问题

我在SQL数据库中有两个表。两者都只是十几列字符串、int或date,没有索引,没有存储过程。在
select*from
语句中,我每秒得到约30000行。但是在
插入到…
时,我每秒只能插入<1000次


这就是我所期望的。(实际上,我希望插入部件的速度可以与之相比。)

插入速度因插入方法的不同而变化很大。有一个磁盘和一个CPU组件。从插入的低速度来看,我猜您是在一个单独的事务中逐个插入行。这几乎可以最大限度地提高CPU和磁盘的使用率。每次插入都是对磁盘的写入

让自己熟悉有效的插入方法。有很多不同程度的性能和开发时间需要对它们进行编程


让您从简单的事情开始:在一个事务中包含许多(100+)插入。批量插入。

select*是一种读取操作,即使对我们人类来说,读取速度也比写入速度快,因此当您从执行
Insert into select*操作时,您同时读取和写入数据,当你做更多的事情时,预期响应速度会变慢,这几乎是意料之中的。你的select*可能在缓存中有所有的数据(你可以使用“设置统计io on”进行检查),然后它只是一个内存操作,而insert总是写入磁盘。是的。我预计插入速度会慢一些,但不是因为这个因素。我的期望是错误的,还是我的系统或我的使用有问题。在RDBMS中,插入是昂贵的,根据您的RDBMS,有多种方法可以通过速度来交换一致性,您可以通过不刷新磁盘来配置数据库以加快写入速度,但如果发生异常情况,您可能(而且肯定会)丢失数据。要补充这个答案,当每个插入作为单个事务执行时,速度约束是在提交期间保证事务持久性所必需的同步事务日志IO。在一个较大的事务中批处理多个插入或使用批量插入方法将减轻性能损失。还考虑单个插入需要单独的往返行程,而许多行用单个<代码>选择“< /代码>”流。