Différence MySQL-Oracle

8fee1d21d6844e0aa452c151be357175.jpgÉtant donné que SQL Server n'est pas couramment utilisé, nous nous concentrons ici uniquement sur les différences entre la base de données MySQL et la base de données Oracle.

 

 

(1) Soumission des transactions

    MySQL valide automatiquement par défaut, tandis qu'Oracle ne valide pas automatiquement par défaut. Les utilisateurs doivent soumettre manuellement. Ils doivent écrire la commande de validation ou cliquer sur le bouton de validation.

 

(2) Requête de pagination

    MySQL écrit directement "select... from ...where...limit x, y" dans l'instruction SQL, et la pagination peut être réalisée avec une limite ; tandis qu'Oracle nécessite l'utilisation de pseudo-colonnes ROWNUM et de requêtes imbriquées.

(3) Niveau d'isolement des transactions

      MySQL est le niveau d'isolement des lectures validées, tandis qu'Oracle est le niveau d'isolement des lectures répétables. Dans le même temps, les deux prennent en charge le niveau d'isolement des transactions sérialisées sérialisables, qui peut atteindre le niveau le plus élevé.

    Lisez la cohérence. Ce n'est qu'après la soumission de chaque session que les autres sessions peuvent voir les modifications soumises. Oracle assure la cohérence des lectures en construisant des blocs de données multiversions dans l'espace table d'annulation. Chaque session

    Lors de l'interrogation, si le bloc de données correspondant change, Oracle construira l'ancien bloc de données pour cette session dans l'espace table d'annulation lors de l'interrogation.

    MySQL ne dispose pas d'un mécanisme permettant de construire des blocs de données multiversions similaires à Oracle et ne prend en charge que le niveau d'isolation des lectures validées. Lorsqu'une session lit des données, les autres sessions ne peuvent pas modifier les données, mais

    Les données peuvent être insérées à la fin du tableau. Lorsque la session met à jour les données, un verrou exclusif doit être ajouté afin que les autres sessions ne puissent pas accéder aux données.

(4) Prise en charge des transactions

    MySQL ne peut prendre en charge les transactions qu'avec le verrouillage au niveau des lignes du moteur de stockage innodb, tandis qu'Oracle prend entièrement en charge les transactions.

(5) Durabilité des données enregistrées

    MySQL perdra des données lorsque la base de données est mise à jour ou redémarrée. Oracle écrit la ligne d'opération SQL soumise dans le fichier journal en ligne et l'enregistre sur le disque, afin qu'elle puisse être restaurée à tout moment.

(6) Concurrence

    MySQL utilise principalement des verrous au niveau de la table et la granularité du verrouillage des ressources est très grande. Si une session verrouille une table trop longtemps, les autres sessions ne pourront pas mettre à jour les données de cette table.

  Bien que les tables du moteur InnoDB puissent utiliser des verrous au niveau des lignes, ce mécanisme de verrouillage au niveau des lignes repose sur l'index de la table. Si la table n'a pas d'index, ou si l'instruction SQL n'utilise pas d'index, les verrous au niveau de la table sont toujours utilisé.

  Oracle utilise le verrouillage au niveau des lignes et la granularité du verrouillage des ressources est beaucoup plus petite. Il verrouille uniquement les ressources requises par SQL et le verrouillage s'effectue sur les lignes de données de la base de données et ne repose pas sur des index. Donc fusion Oracle

  Le soutien sexuel est bien meilleur.

(7) Sauvegarde logique

    Les données doivent être verrouillées lors de la sauvegarde logique MySQL pour garantir la cohérence des données sauvegardées, ce qui affecte l'utilisation normale de DML dans l'entreprise. Oracle ne verrouille pas les données lors de la sauvegarde logique et les données sauvegardées sont cohérentes.

(8) Copie

    MySQL : La configuration du serveur de réplication est simple, mais lorsqu'il y a un problème avec la base de données principale, la base de données du cluster peut perdre une certaine quantité de données. Et vous devez basculer manuellement la bibliothèque plex vers la bibliothèque principale.

    Oracle : Il existe à la fois une réplication de données traditionnelle push ou pull et un mécanisme de reprise après sinistre sur deux ou plusieurs machines de Dataguard. En cas de problème avec la base de données principale, la base de données de secours peut être automatiquement basculée vers la base de données principale, mais la gestion de la configuration c'est compliqué.

(9) Diagnostic des performances

    MySQL dispose de peu de méthodes de diagnostic et de réglage, principalement des journaux de requêtes lents.

    Oracle dispose de divers outils avancés de diagnostic et de réglage des performances, qui peuvent réaliser de nombreuses fonctions d'analyse et de diagnostic automatiques. Tels que awr, addm, sqltrace, tkproof, etc.    

(10)Autorisations et sécurité

    Les utilisateurs de MySQL sont liés à l'hôte, ce qui semble dénué de sens. De plus, il est plus facile de contrefaire l'hôte et l'IP, ce qui peut être exploité.

    Les permissions et les concepts de sécurité d'Oracle sont relativement traditionnels et tout à fait satisfaisants.

(11)Table de partition et index de partition

    La table de partition de MySQL n'est pas encore mature et stable.

    Les fonctions de table de partition et d'index de partition d'Oracle sont très matures et peuvent améliorer l'expérience utilisateur d'accès à la base de données.

(12)Outils de gestion

    Il existe peu d'outils de gestion MySQL, l'installation d'outils de gestion sous Linux nécessite parfois l'installation de packages supplémentaires (phpmyadmin, etc.), ce qui est compliqué.

    Oracle dispose d'une variété de lignes de commande matures, d'interfaces graphiques, d'outils de gestion Web et de nombreux outils de gestion tiers, ce qui rend la gestion extrêmement pratique et efficace.

(13)La différence la plus importante

    MySQL est une base de données légère et gratuite, sans service de restauration des données.

    Oracle est une base de données robuste et payante. Oracle propose tous les services pour la base de données Oracle.

 

(13) Traitement du type de données à croissance automatique

          MYSQL a un type de données à augmentation automatique. Lors de l'insertion d'un enregistrement, vous n'avez pas besoin d'utiliser ce champ et la valeur des données sera obtenue automatiquement. ORACLE n'a pas de type de données auto-croissant. Il est nécessaire de créer un numéro de séquence auto-croissant. Lors de l'insertion d'un enregistrement, la valeur suivante du numéro de séquence doit être affectée à ce champ.

         CREATE SEQUENCE Le nom du numéro de séquence (de préférence le nom de la table + la balise du numéro de séquence) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;

          La valeur maximale est déterminée par la longueur du champ. Si le numéro de séquence à croissance automatique NUMBER(6) est défini, la valeur maximale est 999999.

          L'instruction INSERT insère la valeur de ce champ comme : le nom du numéro de série.NEXTVAL

(14) Traitement des guillemets simples

          Dans MYSQL, vous pouvez utiliser des guillemets doubles pour envelopper une chaîne, mais dans ORACLE, vous ne pouvez utiliser que des guillemets simples pour envelopper une chaîne. Avant d'insérer ou de modifier une chaîne, vous devez remplacer les guillemets simples : remplacez toutes les occurrences d'un guillemet simple par deux guillemets simples.

(15) Traitement des instructions SQL qui tournent les pages

          MYSQL est relativement simple pour traiter l'instruction SQL pour tourner les pages. Utilisez LIMIT pour définir la position de départ et enregistrer le numéro ; en PHP, vous pouvez également utiliser SEEK pour localiser la position de l'ensemble de résultats. Le traitement par ORACLE des instructions SQL de pagination est plus fastidieux. Chaque jeu de résultats n'a qu'un seul champ ROWNUM pour indiquer sa position, et seul ROWNUM<100 peut être utilisé, mais ROWNUM>80 ne peut pas être utilisé.

 

(16) Traitement de longues chaînes

    Le traitement des chaînes longues par ORACLE a également ses particularités. La longueur maximale de chaîne utilisable pendant INSERT et UPDATE est inférieure ou égale à 4 000 octets simples. Si vous souhaitez insérer une chaîne plus longue, envisagez d'utiliser le type CLOB pour le champ et empruntez la méthode du package DBMS_LOB fourni avec ORACLE. Avant d'insérer un enregistrement modifié, vous devez porter des jugements non vides et de longueur. Les valeurs de champ qui ne peuvent pas être vides et les valeurs de champ qui dépassent la longueur doivent émettre un avertissement et revenir à la dernière opération.

 

(17) Traitement des champs de date

           Les champs de date MYSQL sont divisés en DATE et TIME. Les champs de date ORACLE ont uniquement DATE, qui contient des informations sur l'année, le mois, le jour, l'heure, les minutes et les secondes. Utilisez l'heure système de la base de données actuelle comme SYSDATE, avec une précision en secondes, ou utilisez l'heure système de la base de données actuelle comme SYSDATE, avec une précision en secondes. chaîne pour le convertir en fonction de type date TO_DATE('< st1:chsdate isrocdate="False" islunardate="False" day="1"month="8" year="2001">2001-08-01</st1 :chsdate>','YYYY-MM-DD') Année-mois-jour 24 heures:minutes:secondes format AAAA-MM-JJ HH24:MI:SS TO_DATE() Il existe de nombreux formats de date, vous pouvez vous référer à ORACLE DOC . Le champ de date est converti en fonction de chaîne TO_CHAR('< st1:chsdate isrocdate="False" islunardate="False" day="1"month="8" year="2001">2001-08-01</st1 :chsdate>','AAAA-MM-JJ HH24: MI:SS')

    Les formules mathématiques pour les champs de date sont très différentes. MYSQL trouve 7 jours à partir de l'heure actuelle en utilisant DATE_FIELD_NAME > SUBDATE (NOW (), INTERVAL 7 DAY) ORACLE trouve 7 jours à partir de l'heure actuelle en utilisant DATE_FIELD_NAME > SYSDATE - 7 ;

(18) Gestion des caractères nuls

           Les champs non nuls de MYSQL ont également un contenu vide. ORACLE définit des champs non nuls et n'autorise pas le contenu vide. Définissez la structure de la table ORACLE selon NOT NULL de MYSQL, et une erreur se produira lors de l'importation des données. Par conséquent, lors de l'importation de données, vous devez juger du caractère nul. S'il s'agit d'un caractère NULL ou nul, vous devez le remplacer par une chaîne d'espace.

(19) Comparaison floue des chaînes

          Dans MYSQL, les noms de champs comme « % string% » peuvent être utilisés. Dans ORACLE, les noms de champs peuvent également être utilisés comme « % string% ». Cependant, cette méthode ne peut pas utiliser d'index et n'est pas rapide. Utilisez la fonction de comparaison de chaînes instr ( nom du champ, 'string de caractère')>0 obtiendra des résultats de recherche plus précis.

(20) Dans les programmes et les fonctions, veuillez faire attention à la publication des ensembles de résultats et des pointeurs après avoir terminé le travail d'exploitation de la base de données.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_57763462/article/details/132819145
conseillé
Classement