Dois-je replace plusieurs colonnes flottantes avec un BLOB?

Comment comparer une seule colonne BLOB dans SQL Server (performance sage), à ​​~ 20 colonnes REAL (20 flottants 32 bits)?

Je me souviens de Martin Fowler recommandant d'utiliser des BLOBs pour persister des graphes d'objects volumineux (dans Patterns of Enterprise Application Architecture) pour supprimer plusieurs jointures dans les requêtes, mais est-il sensé de faire quelque chose comme ça pour une table avec 20 colonnes fixes? requêtes)?

Cette table est mise à jour très souvent, environ 100 fois par seconde, et les instructions INSERT deviennent plutôt volumineuses avec toutes les colonnes spécifiées dans la requête.

Je suppose que la première réponse sera "profile-le toi-même", mais j'aimerais savoir si quelqu'un a déjà de l'expérience avec ce genre de choses.

Je ne peux pas entièrement parler de la performance du SELECT , vous aurez besoin de tester cela, mais je doute fortement que cela puisse causer des problèmes de performance parce que vous ne liriez plus de données qu'auparavant. Cependant, en ce qui concerne INSERT , vous devriez voir un gain de performance (de quelle taille je ne suis pas sûr), car il n'y aura probablement pas d'index statistique à mettre à jour. Bien sûr cela dépend de beaucoup de parameters mais je ne fais que donner mon avis. Cette question est assez subjective et il n'y a pas assez d'informations disponibles pour vraiment vous dire si vous verrez des problèmes de performance entourant le changement.

Maintenant, en pratique, je vais dire, laissez-le être, sauf si vous voyez de vrais problèmes de performance. De plus, si vous constatez de réels problèmes de performances, parsingz-les avant de choisir ce type de solution, il existe probablement d'autres moyens de les résoudre.

Typiquement, vous ne devriez pas, si vous n'avez pas découvert que c'est essentiel pour répondre à vos exigences de performance.

Si vous le stockez dans un blob, vous devez recalculer toute votre database si vous modifiez la structure de l'object (par exemple, en ajoutant ou supprimant une colonne). Si vous conservez plusieurs colonnes, vos futurs refactorings et deployments de database seront beaucoup plus faciles.