Pour un ensemble de données SAS, quelle est la meilleure façon d'éviter le verrouillage pour un accès multiutilisateur

StackOverflow https://stackoverflow.com/questions/573268

  •  05-09-2019
  •  | 
  •  

Question

Merci d'avoir lu cela.

J'utilise un service partagé (serveur = sharedLib) lors de la configuration de mon libref, pour permettre aux utilisateurs de mon application SAS / IntrNet pour modifier et mettre à jour les enregistrements (ajouter de nouvelles) d'un seul jeu de données. L'application sera également utilisé pour interroger mon ensemble de données. Pour minimiser le verrouillage, je n'utilise un pas de données pour modifier et mettre à jour plutôt que SQL Proc (qui bloque le membre entier). Cependant, je me demande si le verrouillage est plus ou moins probable si seule mise à jour / modifier l'accès aux données utilise le service de partage mais les requêtes ne sont pas.

%if &type=QUERY %then %do ;
 LIBNAME lib '/myServer/library' ;
%end ;
%else %do ;
 LIBNAME lib '/myServer/library' server=shareLib ;
%end;

ce n'est pas mon code actuel, mais je ne sais si oui ou non la demande va simplement envoyer des données en arrière ou modifier un enregistrement existant ou ajouter un nouvel enregistrement (mise à jour);

J'avais d'abord fait cette distinction parce que nous avions des échecs de fixation au service d'actions (pas sûr que la terminologie est correcte), mais faisant référence à la lib pour interroger les données ne manquent pas. Depuis lors, nous avons, je pense résolu ce problème, mais je me demandais si je me mise en place pour les problèmes.

Merci

Était-ce utile?

La solution

Étant donné que votre question est plus comme une demande d'avis général sur l'accès aux données et à SAS concurrency, ma réponse sera formé comme des conseils généraux, plus d'une solution spécifique.

Il y a d'excellents SAS les documents en ligne. S'il vous plaît allez visiter l'index , et trouver les informations pertinentes pour votre lecture plus.

  1. S'il vous plaît jeter un oeil plus à l'option libname « de ACCESS=READONLY ». Il fait à peu près ce qu'il dit, à savoir limiter l'accès aux membres de données dans le libname être en lecture seule. Cela est l'avantage que vous ne modifiez pas vos données par accident lors d'une requête non-modification. Elle permet également SAS de laisser une certaine marge pour les données modifier les requêtes pour obtenir des niveaux plus élevés de contrôle sur les données.
  2. SAS / SHARE permet l'accès aux données simultanées, donc si vous devez fournir un accès simultané (lecture / écriture) aux mêmes données, SAS / SHARE est un bon choix. Cela signifie que vous pouvez vous contenter de votre assigner libname juste une fois, donnant votre déclaration libname l'option « SERVER=SHARELIB », et gérer SAS ont / SHARE accès aux données simultanées. Si vous attribuez la libname à votre processus serveur SAS / SHARE, tous les processus ultérieurs SAS ont besoin d'accéder à cette libname ne doivent assigner le libname comme "LIBNAME LIB SERVER=SHARELIB" (noter qu'il n'y a pas de chemin physique - le processus serveur SAS / SHARE se charge de cela). Cette fonction de configuration à son meilleur si vous disposez d'un processus distinct SAS pour votre serveur SAS / SHARE.
  3. Vous pouvez aussi verrouiller votre libname avec l'instruction LOCK ou la commande LOCK. Cela signifie que votre programme SAS peut se garantir des droits d'accès exclusifs à un libname, dans le cas où ce que vous avez besoin. D'autres processus SAS peuvent alors utiliser la commande de verrouillage pour interroger une libname spécifique et voir si elle peut avoir accès (exclusif).
  4. Vous pouvez également contrôler l'accès au niveau des membres de données. Cela se fait avec l'option de jeu de données CNTLLEV. Par exemple « DATA LIB.MYDATA(CNTLLEV=LIB); » précise que le contrôle d'accès est au niveau de la bibliothèque, ce qui limite l'accès simultané à un seul processus de mise à jour à la bibliothèque. CNTLLEV=MEM et CNTLLEV=REC restreint l'accès simultané au niveau des membres et du niveau record, respectivement.

Ces options peuvent être combinées de différentes façons, ce qui donne beaucoup de place pour vous faire de l'accès comme à grains fins que vous avez besoin. J'espère que ces choix vous aideront à remplir votre tâche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top