Que signifie ' tables de bus ' signifie?


Meilleure réponse

Les tables de bus est un travail dans un restaurant. Cela signifie nettoyer la table entre les clients. Cela comprend le fait de retirer tous les articles sales ou usagés (vaisselle, couverts, serviettes), puis dessuyer la table.

Le titre traditionnel du poste est «busboy», mais tous ceux qui font ce travail ne sont pas des garçons . Il pourrait y avoir un terme plus neutre pour le sexe maintenant.

Réponse

Dans le scénario que vous décrivez, vous indiquez que les champs les plus couramment utilisés dans le tableau sont la clé primaire (CompanyId ), un champ de données unique (CompanyName) et une clé étrangère (IndustryId). Sil y a des index sur ces champs, ce qui est garanti pour la clé primaire, et extrêmement probable pour la clé étrangère, car sinon les performances de votre base de données seraient nulles, alors les requêtes qui ne référencent que ces champs seront, dans de nombreux cas, satisfaites entièrement à partir des index . Les pages de la base de données elles-mêmes ne seront pas lues. Vous pouvez le vérifier vous-même en demandant un plan dexécution de requête à lanalyseur de requêtes. Si le plan dexécution utilise une « recherche dindex » ou un « spool dindex », il utilise un index pour créer les résultats de la requête. Si lindex de clé primaire est groupé, la situation est quelque peu différente, mais je vais laisser vous permet de rechercher ce quest un index clusterisé dans SQL Server et comment il modifie la façon dont la base de données est stockée et accédée. En général, si SQL Server peut créer un jeu de résultats à laide des données dun index, il le fera au lieu dutiliser les pages de table de base de données, car cela signifie lire moins de données. Un index est structuré de la même manière quune table, sauf quil na que les colonnes spécifiées dans lindex, plus un champ de localisation de ligne qui est un pointeur vers lemplacement de stockage de la ligne; ce pointeur (24 octets) est généralement plus petit que les données de ligne elles-mêmes et donc presque invariablement plus de lignes de table dindex que de lignes de table tiendront dans une page de base de données.

La taille de page de base de données dans SQL Server est fixée à 8192 octets. 96 octets de la page sont utilisés pour un en-tête; cela plus dautres frais généraux laisse une taille de ligne maximale de 8060 octets. Toutefois, SQL Server 2008 autorisera les colonnes varchar, nvarchar, varbinary et sql\_variant à dépasser cette limite et déplacera ces champs vers les pages de débordement lorsque leur inclusion dans une ligne entraînerait le dépassement de cette limite de taille de ligne. En outre, les colonnes text, ntext, image, nvarchar (max), varchar (max), varbinary (max) et xml sont toujours stockées dans des pages séparées, quelle que soit la quantité de données réellement stockées dans la colonne. La définition de table que vous avez publiée indique des largeurs totales de colonne qui dépassent de loin la limite de 8060 octets, mais la plupart de ces éléments se trouvent dans les champs varchar (n), vous vous retrouverez donc avec des pages de dépassement de ligne pour les lignes dont la taille réelle de la variable la largeur des colonnes est suffisamment grande. Le nombre de pages quune ligne utilisera dans ce tableau variera donc, en fonction de la durée des données réellement stockées dans les colonnes à largeur variable pour chaque ligne.

En termes damélioration des performances, si vous ne disposez que de quelques champs couramment utilisés, vous pouvez probablement obtenir autant damélioration simplement en vous assurant que les champs et combinaisons de champs que vous utilisez couramment sont disponibles sous forme dindex. Cela signifie que la plupart des ensembles de lignes peuvent être remplis à partir de données dindex au lieu de données de table, ce qui évitera les problèmes de chargement de grandes lignes à partir de la base de données. Mieux encore, cela peut être fait entièrement au niveau DBA; lapplication na pas besoin dêtre réécrite pour refléter la modification du schéma causée par lajout (ou la suppression) dindex. Et évidemment, toute colonne que vous utiliserez dans le cadre dune jointure doit être indexée; sinon, vous ferez table recherche les jointures qui sont en effet assez lentes.

Je pourrais vous suggérer de considérer ntext au lieu de grands champs nvarchar pour certains de ces champs plus grands, bien que cela puisse nécessiter des modifications du code de lapplication en raison de la sémantique du texte / ntext sont différents de ceux de varchar / nvarchar. Les colonnes text / ntext sont toujours stockées dans les pages LOB, au lieu dêtre stockées conditionnellement dans la page de données de ligne, et si ces colonnes sont souvent présentes et de taille moyenne (par exemple , 1000-2000 octets), les stocker sous forme de texte / ntext gardera le reste des pages de données de ligne plus petit et peut permettre plus de lignes par page, ce qui accélérera les analyses de table qui nont pas à référencer ces colonnes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *