BerkeleyDB Concurrency

voix
25
  • Quel est le niveau optimal de la concurrence que la mise en œuvre C de BerkeleyDB de peut raisonnablement soutenir?
  • Combien de fils puis-je avoir à marteler la DB avant le débit commence à souffrir à cause de conflits de ressources?

J'ai lu le manuel et savoir comment définir le nombre de verrous, casiers, taille de la page de base de données, etc., mais je voudrais simplement quelques conseils de quelqu'un qui a une expérience dans le monde réel avec BDB concurrency.

Mon application est assez simple, je vais faire et obtient met des dossiers qui sont sur chacun de 1 Ko. Aucun curseurs, aucune suppression.

Créé 02/08/2008 à 00:28
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
10

Cela dépend de ce type d'application que vous construisez. Créer un scénario de test représentatif, et commencer à marteler. Ensuite, vous connaîtrez la réponse définitive.

En plus de votre cas d'utilisation, il dépend aussi de la CPU, mémoire, bus face avant, système d'exploitation, les paramètres du cache, etcetera.

Sérieusement, testez juste votre propre scénario.

Si vous avez besoin des chiffres (qui peut en fait signifier rien dans votre scénario):

Créé 03/08/2008 à 13:34
source utilisateur

voix
7

Je suis d'accord avec le point fort de Daan: créer un programme de test, et assurez-vous de la façon dont il accède imitateurs de données aussi près que possible les modèles que vous souhaitez que votre application a. Cela est extrêmement important avec BDB, car les modèles d'accès différents donnent un débit très différent.

En dehors de cela, ce sont des facteurs généraux m'a semblé d'impact majeur sur le débit:

  1. Méthode d'accès (qui je suppose que dans votre cas est BTREE).

  2. Niveau de avec lequel vous persistance configuré DBD (par exemple, dans mon cas, le drapeau de l'environnement « DB_TXN_WRITE_NOSYNC » amélioration des performances d'écriture par un ordre de grandeur, mais il compromet la persistance)

  3. Est-ce que le jeu de travail en forme dans le cache?

  4. Nombre de lectures Vs. Rédige.

  5. Comment répartir votre accès est (rappelez-vous que BTREE a un verrouillage de niveau de la page - donc accéder à différentes pages avec des fils différents est un grand avantage).

  6. modèle d'accès - meanig comment sont susceptibles fils pour verrouiller les uns les autres, ou même impasse, et quelle est votre politique de résolution de blocage (celui-ci peut être un tueur).

  7. Matériel (disque et mémoire pour le cache).

Cela revient au point suivant: Mise à l'échelle d'une solution basée sur DBD afin qu'il offre une plus grande concurrence a deux façons d'aller à ce sujet; soit de réduire le nombre de verrous dans votre conception ou ajouter plus de matériel.

Créé 13/10/2008 à 22:59
source utilisateur

voix
4

Ne pas dépendre du matériel ainsi que le nombre de fils et d'autres choses?

Je voudrais faire un test simple et l'exécuter avec des quantités croissantes de fils martelant et de voir ce qui semble le mieux.

Créé 02/08/2008 à 19:21
source utilisateur

voix
2

La façon dont je comprends les choses, Samba a créé TDB pour permettre « plusieurs concurrents écrivains » pour un fichier de base de données particulière. Donc , si votre charge de travail a plusieurs écrivains votre performance peut être mauvais (comme dans le projet Samba a choisi d'écrire son propre système, apparemment parce qu'il n'a pas été satisfait de la performance de Berkeley DB dans ce cas).

D'autre part, si votre charge de travail a beaucoup de lecteurs, la question est de savoir comment bien votre système d'exploitation gère plusieurs lecteurs.

Créé 16/09/2008 à 18:31
source utilisateur

voix
1

Ce que je l'ai fait lorsque l'on travaille contre une base de données de la performance inconnue était de mesurer le temps d'exécution sur mes requêtes. Je continuais upping le nombre de threads jusqu'à ce que le temps de demi-tour a chuté, et laisser tomber le nombre de threads jusqu'à temps de rotation amélioré (bien, il était processus dans mon environnement, mais peu importe).

Il y avait des moyennes mobiles et toutes sortes de mesures en cause, mais la leçon à emporter était: il suffit d'adapter à la façon dont les choses fonctionnent à l'heure actuelle. Vous ne savez jamais quand les performances DBAs amélioreront ou le matériel seront mis à jour, ou peut-être un autre processus puisse se présenter pour charger le système pendant que vous êtes en cours d'exécution. Alors adapter.

Oh, et une autre chose: éviter processus passe si vous le pouvez - les choses batch vers le haut.


Oh, je le préciser: tout cela est arrivé au moment de l'exécution, et non au cours du développement.

Créé 04/08/2008 à 08:45
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more