Heim Datenbank MySQL-Tutorial SQL Server插入或者批量导入大量数据的性能表现

SQL Server插入或者批量导入大量数据的性能表现

Jun 07, 2016 pm 05:54 PM
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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwendung des MINUS-Operators in SQL Verwendung des MINUS-Operators in SQL Feb 18, 2024 pm 04:53 PM

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

Können wir einen Nullwert in die Java-Liste einfügen? Können wir einen Nullwert in die Java-Liste einfügen? Aug 20, 2023 pm 07:01 PM

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

So fügen Sie Grafiken und Text der China-Karte in ein WPS-Dokument ein So fügen Sie Grafiken und Text der China-Karte in ein WPS-Dokument ein Mar 27, 2024 pm 02:01 PM

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.

Welche Software ist Microsoft SQL Server? Welche Software ist Microsoft SQL Server? Feb 28, 2023 pm 03:00 PM

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 von Batch-Import- und Exportfunktionen für Daten So verwenden Sie MongoDB zum Implementieren von Batch-Import- und Exportfunktionen für Daten Sep 20, 2023 am 10:00 AM

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 verwenden Sie PHP zum stapelweisen Importieren von Produktbeständen So verwenden Sie PHP zum stapelweisen Importieren von Produktbeständen Aug 17, 2023 pm 02:21 PM

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.

SQL Server oder MySQL? Neue Forschungsergebnisse zeigen die besten Datenbankoptionen. SQL Server oder MySQL? Neue Forschungsergebnisse zeigen die besten Datenbankoptionen. Sep 08, 2023 pm 04:34 PM

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

Entwicklung von PHP- und SQL Server-Datenbanken Entwicklung von PHP- und SQL Server-Datenbanken Jun 20, 2023 pm 10:38 PM

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

See all articles