SQL Server插入或者批量导入大量数据的性能表现
我经常看到客户测试SQL Server 的插入(INSERT)或者批量导入大量数据的性能表现。其中有测试大量INSERT的TSQL脚本如下: use myDB go create table t1 ( id int primary key not null identity ( 1 , 1 ), name varchar ( 200 ), memo char ( 500 )); go trun
我经常看到客户测试SQL Server 的插入(INSERT)或者批量导入大量数据的性能表现。其中有测试大量INSERT的TSQL脚本如下:
use myDB
go
createtable t1(id intprimarykeynotnullidentity (1,1),name varchar(200),memo char(500));
go
truncatetable t1
go
declare @i int
set @i=0
declare @beginTime datetime,@endTime datetime
set @beginTime=GETDATE()
while(@i200000)
begin
insertinto t1(name,memo)values('test'+str(RAND()*100000000),'memo'+str(RAND()*100000000))
set @i=@i+1
end
set @endTime=GETDATE()
select @endTime-@beginTime
上面这个脚本测试插入200000行数据需要的时间。这个脚本有问题么?
语法没有问题,但是写法却不够优化。如果你使用performance monitor
来观察,就会发现在数据插入期间log flushes/sec的次数非常高。在我的机器上达到5000。Log flushes发生一次,意味着SQL server 需要写入事务日志(transaction log)一次。每秒5000次的日志写动作导致磁盘大量的写操作。正是这个磁盘写操作影响了上面的batch的性能。我上面脚本在我的机器上使用了大概40秒左右的时间。
如何改进这个脚本的性能呢?如何减少log flushes/sec从而减少磁盘的写操作? 答案是使用Batch Size如下面脚本所示。
truncatetable t1
go
declare @i int
set @i=0
declare @beginTime datetime,@endTime datetime
set @beginTime=GETDATE()
declare @batchSize int
set @batchSize=1000
while(@i00000)
begin
if (@i%@batchSize=0)
begin
if (@@TRANCOUNT>0)COMMITTRAN
BEGINTRAN
end
insertinto t1(name,memo)values('test'+str(RAND()*100000000),'memo'+str(RAND()*100000000))
set @i=@i+1
end
if (@@TRANCOUNT>0)COMMITTRAN
set @endTime=GETDATE()
select @endTime-@beginTime
黄色高亮是我改进的地方。我在同样的机器上跑了一下,奇迹发生了,它只使用了7秒多一点。快了5倍多!如果在看下performance

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Verwendung von MINUS in SQL und spezifische Codebeispiele In SQL ist MINUS ein Operator, der zum Durchführen einer Differenzoperation zwischen zwei Ergebnismengen verwendet wird. Es wird verwendet, um dieselben Zeilen aus dem ersten Ergebnissatz wie im zweiten Ergebnissatz zu löschen. Die vom MINUS-Operator zurückgegebene Ergebnismenge enthält Zeilen, die nur in der ersten Ergebnismenge vorhanden sind. Das Folgende ist ein spezifisches Codebeispiel, um die Verwendung von MINUS zu demonstrieren: Angenommen, es gibt zwei Tabellen – „Tabelle1“ und „Tabelle2“. Ihre Strukturen sind wie folgt: Tabellenname: Feld Tabelle1

LösungJa, wir können den Nullwert ganz einfach mit der Methode add() einfügen. Wenn die Listenimplementierung Null nicht unterstützt, löst sie eine NullPointerException aus. Syntaxbooleanadd(Ee) Hängt das angegebene Element an das Ende dieser Liste an. Typparameter E – Der Laufzeittyp des Elements. Parameter e – Element, das an diese Liste angehängt werden soll

1. Öffnen Sie die WPS-Software und rufen Sie die WPS-Textbedienungsoberfläche auf. 2. Suchen Sie die Einfügeoption in dieser Schnittstelle. 3. Klicken Sie auf die Option „Einfügen“ und suchen Sie im Bearbeitungsbereich nach der Option „Form“. 4. Klicken Sie auf die Formoption und suchen Sie im Untermenü nach der empfohlenen Option. 5. Suchen Sie in den empfohlenen Optionen nach der Option „China-Karte“. 6. Klicken Sie auf die Option „China-Karte“ und ziehen Sie sie mit der linken Maustaste in den Bearbeitungseingabebereich, um die benötigte China-Karte zu erhalten.

Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem, das von Microsoft eingeführt wurde. Es handelt sich um eine umfassende Datenbankplattform, die integrierte Business-Intelligence-Tools (BI) verwendet, um eine Datenverwaltung auf Unternehmensebene zu ermöglichen Grad der Integration mit verwandter Software. Die SQL Server-Datenbank-Engine bietet sicherere und zuverlässigere Speicherfunktionen für relationale Daten und strukturierte Daten und ermöglicht es Benutzern, hochverfügbare und leistungsstarke Datenanwendungen für Unternehmen zu erstellen und zu verwalten.

So verwenden Sie MongoDB zum Implementieren des Batch-Imports und -Exports von Daten. Als nicht relationale Datenbank bietet sie große Flexibilität und Leistungsvorteile bei der Datenspeicherung und -abfrage. Für Anwendungsszenarien, die einen Batch-Import und -Export von Daten erfordern, stellt MongoDB auch entsprechende Tools und Schnittstellen bereit. In diesem Artikel wird erläutert, wie Sie MongoDB zum Implementieren des Batch-Imports und -Exports von Daten verwenden, und es werden spezifische Codebeispiele bereitgestellt. 1. Sie können Daten stapelweise in MongoDB importieren

So implementieren Sie mit PHP die Funktion des Stapelimports von Produktbeständen. Auf E-Commerce-Plattformen ist der Stapelimport von Produktbeständen eine häufige Anforderung. Durch den Batch-Import können Händler die Bestandsinformationen einer großen Anzahl von Produkten schnell aktualisieren und die Arbeitseffizienz verbessern. In diesem Artikel wird erläutert, wie Sie diese Funktion mit der Programmiersprache PHP implementieren und Händlern so die Bestandsverwaltung erleichtern können. Zuerst müssen wir eine Tabellendatei erstellen, um die Inventarinformationen des Produkts zu speichern. Diese Formulardatei kann im Excel- oder CSV-Format vorliegen und der Händler kann die Produktinformationen, einschließlich des Produktnamens, eingeben.

SQLServer oder MySQL? Die neueste Forschung zeigt die beste Datenbankauswahl. Mit der rasanten Entwicklung des Internets und Big Data ist die Datenbankauswahl zu einem wichtigen Thema für Unternehmen und Entwickler geworden. Unter vielen Datenbanken sind SQL Server und MySQL als die beiden am weitesten verbreiteten und am weitesten verbreiteten relationalen Datenbanken äußerst umstritten. Welches sollten Sie also zwischen SQLServer und MySQL wählen? Die neuesten Forschungsergebnisse bringen für uns Licht in dieses Problem. Lassen Sie zunächst

Mit der Popularität des Internets ist die Entwicklung von Websites und Anwendungen zum Hauptgeschäft vieler Unternehmen und Einzelpersonen geworden. PHP und SQLServer-Datenbank sind zwei sehr wichtige Tools. PHP ist eine serverseitige Skriptsprache, mit der dynamische Websites entwickelt werden können. SQL Server ist ein von Microsoft entwickeltes relationales Datenbankverwaltungssystem mit vielfältigen Anwendungsszenarien. In diesem Artikel besprechen wir die Entwicklung von PHP und SQL Server sowie deren Vor- und Nachteile sowie Anwendungsmethoden. Lassen Sie uns zunächst einmal
