Opérations d'insertion et de suppression par lots extrêmement lentes dans les tables Azure

Opérations d’insertion et de suppression par lots extrêmement lentes dans les tables Azure


Source : [Stack Overflow [azure]](http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows-azure-tables.aspx](http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows-azure-tables.aspx)

OK, la troisième réponse sera la bonne ?

http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows-azure-tables.aspx

Quelques points - l’émulateur de stockage - d’un ami qui a fait des recherches approfondies.

« Tout frappe une seule table dans une seule base de données (plus de partitions n’affecte rien). Chaque opération d’insertion dans une table correspond à au moins 3 opérations SQL. Chaque lot est à l’intérieur d’une transaction. Selon le niveau d’isolation de la transaction, ces lots auront une capacité limitée à s’exécuter en parallèle.

Les lots séquentiels devraient être plus rapides que les insertions individuelles en raison du comportement de SQL Server. (Les insertions individuelles sont essentiellement de petites transactions qui écrivent chacune sur le disque, tandis qu’une vraie transaction écrit sur le disque en groupe). »

C’est-à-dire que l’utilisation de plusieurs partitions n’affecte pas les performances sur l’émulateur alors que c’est le cas avec le vrai stockage Azure.

Activez également la journalisation et vérifiez vos logs un peu - c:\users\username\appdata\local\developmentstorage

Une taille de lot de 100 semble offrir les meilleures performances réelles, désactivez Nagle, désactivez Expect 100, augmentez la limite de connexion.

Assurez-vous aussi absolument que vous n’insérez pas accidentellement des doublons, cela provoquera une erreur et ralentira considérablement tout.

Et testez avec le vrai stockage. Il existe une bibliothèque assez correcte qui gère la plupart de cela pour vous - http://www.nuget.org/packages/WindowsAzure.StorageExtensions/, assurez-vous simplement d’appeler réellement ToList sur les ajouts, car cela ne s’exécutera pas réellement avant l’énumération. Cette bibliothèque utilise aussi DynamicTableEntity et il y a donc un léger impact de performance pour la sérialisation, mais elle vous permet d’utiliser des objets POCO purs sans les éléments TableEntity.

~ JT