Maison base de données tutoriel mysql 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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisation de l'opérateur MOINS dans SQL Utilisation de l'opérateur MOINS dans SQL Feb 18, 2024 pm 04:53 PM

Utilisation de MINUS dans SQL et exemples de code spécifiques En SQL, MINUS est un opérateur utilisé pour effectuer une opération de différence entre deux jeux de résultats. Il est utilisé pour supprimer les mêmes lignes du premier ensemble de résultats que dans le deuxième ensemble de résultats. Le jeu de résultats renvoyé par l'opérateur MINUS contiendra des lignes qui existent uniquement dans le premier jeu de résultats. Voici un exemple de code spécifique pour démontrer l'utilisation de MINUS : Supposons qu'il existe deux tables : "table1" et "table2", leurs structures sont les suivantes : Nom de la table : champ table1

Pouvons-nous insérer une valeur nulle dans la liste Java ? Pouvons-nous insérer une valeur nulle dans la liste Java ? Aug 20, 2023 pm 07:01 PM

SolutionOui, nous pouvons insérer des valeurs nulles pour les lister facilement à l'aide de sa méthode add(). Si l'implémentation de liste ne prend pas en charge null, elle lancera une exception NullPointerException. Syntaxe booleanadd(Ee) Ajoute l'élément spécifié à la fin de cette liste. Paramètre de type E - Le type d'exécution de l'élément. Paramètre e - élément à ajouter à cette liste

Comment insérer des graphiques et du texte de la carte de la Chine dans un document wps Comment insérer des graphiques et du texte de la carte de la Chine dans un document wps Mar 27, 2024 pm 02:01 PM

1. Ouvrez le logiciel wps et entrez dans l'interface d'opération de texte wps. 2. Recherchez l'option d'insertion dans cette interface. 3. Cliquez sur l'option Insérer et recherchez l'option Forme dans sa zone d'édition. 4. Cliquez sur l'option de forme et recherchez l'option recommandée dans son sous-menu. 5. Recherchez l'option Carte de Chine dans les options recommandées. 6. Cliquez sur l'option Carte de Chine et faites-la glisser avec le bouton gauche de la souris dans la zone de saisie d'édition pour obtenir la carte de Chine dont nous avons besoin.

Quel logiciel est Microsoft SQL Server ? Quel logiciel est Microsoft SQL Server ? Feb 28, 2023 pm 03:00 PM

Microsoft SQL Server est un système de gestion de base de données relationnelle lancé par Microsoft. Il s'agit d'une plate-forme de base de données complète qui utilise des outils de business intelligence (BI) intégrés pour fournir une gestion des données au niveau de l'entreprise. Elle est facile à utiliser, a une bonne évolutivité et a un niveau élevé. degré d'intégration avec les logiciels associés. Avantages élevés. Le moteur de base de données SQL Server fournit des fonctions de stockage plus sécurisées et plus fiables pour les données relationnelles et les données structurées, permettant aux utilisateurs de créer et de gérer des applications de données hautement disponibles et performantes pour les entreprises.

Comment utiliser MongoDB pour implémenter des fonctions d'importation et d'exportation par lots de données Comment utiliser MongoDB pour implémenter des fonctions d'importation et d'exportation par lots de données Sep 20, 2023 am 10:00 AM

Comment utiliser MongoDB pour implémenter l'importation et l'exportation de données par lots. MongoDB est une base de données NoSQL. En tant que base de données non relationnelle, elle présente une grande flexibilité et des avantages en termes de performances dans le stockage et les requêtes de données. Pour les scénarios d'application nécessitant l'importation et l'exportation de données par lots, MongoDB fournit également les outils et interfaces correspondants. Cet article explique comment utiliser MongoDB pour implémenter l'importation et l'exportation par lots de données et fournit des exemples de code spécifiques. 1. Importez des données par lots dans MongoDB, vous pouvez

Comment utiliser PHP pour importer l'inventaire de produits par lots Comment utiliser PHP pour importer l'inventaire de produits par lots Aug 17, 2023 pm 02:21 PM

Comment utiliser PHP pour implémenter la fonction d'importation par lots de l'inventaire des produits Sur les plateformes de commerce électronique, l'importation par lots de l'inventaire des produits est une exigence courante. Grâce à l'importation par lots, les commerçants peuvent rapidement mettre à jour les informations d'inventaire d'un grand nombre de produits et améliorer l'efficacité du travail. Cet article présentera comment utiliser le langage de programmation PHP pour implémenter cette fonction afin de faciliter la gestion des stocks par les commerçants. Tout d’abord, nous devons créer un fichier de table pour stocker les informations d’inventaire du produit. Ce fichier de formulaire peut être au format Excel ou CSV, et le commerçant peut renseigner les informations sur le produit, y compris le nom du produit.

SQL Server ou MySQL ? Une nouvelle recherche révèle les meilleurs choix de bases de données. SQL Server ou MySQL ? Une nouvelle recherche révèle les meilleurs choix de bases de données. Sep 08, 2023 pm 04:34 PM

SQLServer ou MySQL ? Les dernières recherches révèlent la meilleure sélection de bases de données. Ces dernières années, avec le développement rapide d'Internet et du Big Data, la sélection de bases de données est devenue un problème important auquel sont confrontés les entreprises et les développeurs. Parmi les nombreuses bases de données, SQL Server et MySQL, qui sont les deux bases de données relationnelles les plus courantes et les plus utilisées, sont très controversées. Alors, entre SQLServer et MySQL, lequel choisir ? Les dernières recherches nous éclairent sur ce problème. Tout d'abord, laissez

Développement de bases de données PHP et SQL Server Développement de bases de données PHP et SQL Server Jun 20, 2023 pm 10:38 PM

Avec la popularité d’Internet, le développement de sites Web et d’applications est devenu l’activité principale de nombreuses entreprises et particuliers. Les bases de données PHP et SQLServer sont deux outils très importants. PHP est un langage de script côté serveur qui peut être utilisé pour développer des sites Web dynamiques ; SQLServer est un système de gestion de bases de données relationnelles développé par Microsoft et propose un large éventail de scénarios d'application. Dans cet article, nous aborderons le développement de PHP et SQL Server, ainsi que leurs avantages, inconvénients et méthodes d'application. Tout d'abord, commençons

See all articles