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

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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

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.

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 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 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.

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

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
