web-dev-qa-db-fra.com

Est-ce que MySQL acide compatible?

MySQL n'est-il pas une conformité acide selon PostgreSQL? Dans certains blogs, je vois mysql n'est pas conforme à l'acide. Comment est-ce vrai?

Ne tenez pas compte de la réplication ici, envisagez une autonome et la efficacité de l'acide mysql?

Dans ma compréhension pour MySQL-acide.

A - Atomicity (ensemble de transactions devrait tous être commis si l'on échoue à la restauration. Oui signifie que tous sont engagés, aucun moyen même d'échec, il n'a pas échoué, il a échoué à la restauration).

C'EST À DIRE. Les fonctionnalités qui supportent dans MySQL sont.

  • démarrer la transaction; ..... s'engager ;
  • auto_commit = 1;

C - Cohérence.

(PK, FK, UK, NON-NULL). Il adhère aux relations et aux contraintes pour les bases de données. Instance Une clé parent ne peut être supprimée que lorsque sa clé enfant est supprimée.

I - Isolation. Isolement entre les utilisateurs et leur état de commit.

Lire la lecture répétable Lire non engagée Lis

D - Durabilité. Lors de l'événement de DB Crash Innodb, récupère la DB en appliquant une transaction engagée du fichier IBLOG et en rejette une transaction non engagée.

Cliquez ici pour la source de cette question. - Est-ce parce que le blog est créé @ 2001?

Mise à jour juin-30-2017: Conformément à la réponse "Evan Carroll" et j'ai personnellement testé le blog Expérience sur 5.7. 18-Entreprise. Les résultats obtenus à partir de l'expérience semblent être MySQL n'est pas une conformité acide.

3
Mannoj

Non

Je ne pense pas que les écrivies de fantôme de Phantom dans une lecture répétable satisfait à une conformité acide.

Voir cette entrée de blog pour plus d'informations.

3
Evan Carroll

Si vous utilisez InnoDB ou un moteur de stockage similaire, il doit être conforme à l'acide (ref: https://fr.wikipedia.org/wiki/innodb ). Myisam, l'ancienne défaute et toujours très couramment utilisée, le plus définitivement n'est pas conformément à l'acide. Si vous mélangez les deux (vous pourriez trouver des types de table plus simples, effectuez mieux et sont acceptables pour des données volatiles pouvant être reproduites et seront reproduites à nouveau, telles que la mise en service des tables pour les processus ETL), votre solution ne sera pas entièrement conforme.

Une grande mise en garde avec la conformité à l'acide est que, pour des raisons de performances, la plupart des bases de données utilisent un niveau d'isolement qui ne garantit pas la partie "i" - ceci se trouve dans les spécifications ANSI SQL. Pour offrir une isolation appropriée, vous devez garantir que les transactions soient sérialisables, un niveau d'isolement que certains DBS ne soutiennent même pas. Par exemple, MySQL + InnoDb par défaut est "Repeducable Read", tandis que MS SQL Server par défaut par défaut les "Lisus engagés" légèrement stricts, les deux offrent "sérialisable", mais ce n'est pas la valeur par défaut. Pourquoi n'est-il pas toujours pris en charge et généralement pas la valeur par défaut? Performance: une exigence d'isolement complète peut limiter de manière significative la concurrence.

Il y a quelques bons articles sur le sujet. Pour un exemple http://www.bailis.org/blog/when-is-acid-acid-rarely/ est un endroit court et informatif pour commencer avec une discussion intéressante dans les commentaires.

7
David Spillett

Basé sur ma connaissance MySQL est une conformité acide ... espérons-ce que cette réponse vous donnera plus de remboursement Entrez la description du lien ici .

0
Osama Al-Banna