Maison  >  Article  >  base de données  >  Enregistrer les spécifications de développement MySQL

Enregistrer les spécifications de développement MySQL

coldplay.xixi
coldplay.xixiavant
2020-12-21 09:56:061550parcourir

Tutoriel vidéo MySQLLa colonne présente les spécifications de développement de MySQL

Enregistrer les spécifications de développement MySQL

Recommandé (gratuit) : Tutoriel vidéo MySQL

Spécifications de base

  • Utilisez le moteur de stockage innodb

  • le jeu de caractères de table utilise utf-8

  • ajoutez des commentaires à toutes les tables

  • Il est recommandé que le volume de données d'une seule table soit contrôlé dans les 5 000 W

  • Aucune donnée volumineuse telle que des graphiques et des fichiers ne sera stockée dans la base de données

  • Il est interdit de construire une base de données en ligne Stress Test

  • Interdire aux environnements de test et de développement de se connecter directement à la base de données

Convention de dénomination

  • Le nom de la bibliothèque, le nom de la table et le nom du champ doivent avoir une longueur de dénomination fixe, inférieure à 12 caractères

  • Le nom de la bibliothèque, le nom de la table et le nom du champ ne peuvent pas dépasser 32 caractères. Vous devez voir la signification du nom

  • Les mots réservés MySQL sont interdits dans les noms de bibliothèques, les noms de tables et les noms de champs

  • Bibliothèque temporaire et les noms de tables doivent commencer par tmp comme préfixe et suffixés par date

  • Les bibliothèques et les tables de sauvegarde doivent être préfixées par bak et suffixées par date

Spécifications de développement et de conception de bibliothèques, de tables, de champs

  • Il est interdit d'utiliser des tables partitionnées

  • Divisez les grands champs et retournez les champs avec une faible fréquence de consultant, séparez les données chaudes et froides

  • Utilisez HASH pour entrer dans la table dispersée, le suffixe du nom de la table est un numéro de base , et l'indice commence à partir de 0

  • Le partitionnement de la table par date et heure doit être conforme au format YYYY[MM][DD][HH]

  • Adopter une stratégie de partitionnement appropriée . Par exemple, des milliers de bases de données avec dix tables, dix bases de données avec des centaines de tables, etc.

  • N'utilisez pas autant que possible des types texte et blob

  • Utilisez décimal au lieu de float et double stockage Nombres à virgule flottante exacts

  • Le plus simple sera le mieux : convertissez les caractères en nombres, utilisez tinyint au lieu des types enum

  • Tous les champs ne sont pas nuls

  • Utilisez unsigned pour stocker des nombres non négatifs

  • le type int occupe de manière fixe 4 octets de stockage

  • Utiliser la durée de stockage de l'horodatage

  • Utiliser int unsigned pour stocker ipv4

  • Utiliser varbinary pour stocker des chaînes de longueur variable sensibles à la casse

  • Il est interdit de stocker des mots de passe en texte brut dans la base de données Crypter les mots de passe et de les stocker

  • Utiliser. champs de type numérique bien


    Type

    Octet

    Minimum

    Maximum

    tr>




    tinyint

    1

    -128

    127

    smallint

    2

    -32768

    32767

    mediumint

    3

    -8388608

    8388607

    int

    4

    -2147483648

    2147483647

    bigint

    8

    -9223372036854775808

    9223372036854775807

    td>
    tinyint 1 -128 127
    smallint 2 -32768 32767
    mediumint 3 td> -8388608 8388607
    int td> 4 -2147483648 2147483647
    bigint 8 -9223372036854775808 9223372036854775807

    Si le champ numérique n'est pas si grand, n'utilisez pas bigint

  • Il est préférable d'utiliser int pour stocker l'IP au lieu de char(15)

  • L'énumération n'est pas autorisée

  • Évitez d'utiliser des champs nuls

    Les champs nuls sont difficiles à interroger, et le L'index des champs nuls nécessite de l'espace supplémentaire, l'index composite sur le champ nul n'est pas valide.

Spécifications de l'index

  • Le nombre d'index dans une seule table doit ne dépasse pas 5

  • Le nombre de champs dans un seul index ne dépasse pas 5

  • Utiliser l'index de préfixe pour les chaînes et la longueur du l'index de préfixe ne dépasse pas 8 caractères

  • Il est recommandé de donner la priorité aux index de préfixe Si nécessaire, vous pouvez ajouter des pseudo colonnes et créer des index

  • <.>La table doit avoir une clé primaire

  • N'utilisez pas de colonnes fréquemment mises à jour comme clés primaires

  • Essayez de ne pas choisir de colonnes de chaîne comme primaire clés

  • Ne pas utiliser de hachage uuid md5 comme clé primaire - trop discrète

  • La valeur par défaut est d'utiliser une clé unique non vide comme clé primaire

  • Il est recommandé de choisir l'auto-incrémentation ou l'émetteur

  • Le SQL important doit être indexé, par exemple où les colonnes de condition de mettre à jour et supprimer les instructions, trier par, regrouper par, champs distincts

  • Jointure multi-table Attention au champ

<p>1.区分度最大的字段放在前面<br>2.核SQL优先考虑覆盖索引<br>3.避免冗余和重复索引<br>4.索引要综合评估数据密度和分布以及考虑查询和更新比例<br></p>
  • Tabou de l'index

<p>1.不在低基数列上建立索引、例如性别<br>2.不在索引列记性数学运算和函数运算<br></p>
  • Essayez de ne pas utiliser de clés étrangères

<p>1.外键用来保护参照完整性,可以业务端实现<br>2.对父表和字表的操作会互相影响,降低可用性<br></p>
  • Nom d'index

<p>1.非唯一索引必须以 inx_字段1_字段22.唯一索引必须以 uniq_字段1_字段2<br></p>
  • La valeur par défaut du champ d'index ne peut pas être vide. Null affecte grandement l’efficacité des requêtes de l’index.

  • Vérifiez à plusieurs reprises le SQL lié à la table et créez un index basé sur les caractéristiques du préfixe le plus à gauche. Pour les index avec des champs en double, il est nécessaire de modifier l'ordre des champs de condition d'instruction et de créer un index commun pour eux afin de réduire le nombre d'index.

  • Utilisez un index unique si vous pouvez l'utiliser

  • La R&D devrait souvent utiliser l'explication S'ils trouvent que la sélectivité de l'index est mauvaise, ils doivent le faire. apprendre à utiliser les astuces.

Spécification SQL

  • Les instructions SQL doivent être aussi simples que possible

  • Les choses doivent être simples et le tout ne doit pas prendre trop de temps

  • Évitez d'utiliser des déclencheurs, des fonctions et des procédures stockées

  • Réduisez le couplage d'affaires et laissez de la place au sacle out et au sharding

  • Évitez les opérations mathématiques dans la base de données, MySQL n'est pas doué pour les opérations mathématiques et le jugement logique

  • N'utilisez pas selecy *, sélectionnez simplement ces champs lors de l'interrogation de ces champs

  • Le ou utilisé dans SQL est réécrit comme dans. L'efficacité de ou n'est pas aussi élevé que celui de in

  • Il est recommandé que le nombre de chiffres dans in soit inférieur à 1000

  • limiter la pagination et faire attention à l'efficacité . Plus la limite est grande, plus l’efficacité est faible.

  • Utilisez union all au lieu de union

  • Évitez de rejoindre de grandes tables

  • Utilisez le regroupement group bu , tri automatique

  • Les mises à jour des données doivent être fractionnées et mises à jour par lots. Ne mettez pas à jour trop de données à la fois

  • Réduisez le nombre d'interactions avec la base de données

  • Faites attention à l'utilisation d'outils d'analyse des performances

  • Les instructions SQL nécessitent toute la R&D, les mots-clés SQL sont tous en majuscules et un seul espace est autorisé pour chaque mot

  • Les instructions SQL ne peuvent pas avoir de conversions implicites

  • Si vous pouvez utiliser not in, ne l'utilisez pas

  • Utilisation interdite Le préfixe est % like

  • N'utilisez pas de requêtes négatives, telles que pas dedans, pas comme

  • Il est interdit d'exécuter des requêtes volumineuses dans la base de données

  • Faites des instructions précompilées et ne transmettez que des paramètres, ce qui est plus efficace que de transmettre des instructions SQL. Réduisez les injections SQL.

  • Désactiver l'ordre par rand

  • Interdire à une seule instruction SQL de mettre à jour plusieurs tables en même temps

Spécification du processus

  • Toutes les opérations de création de table doivent informer à l'avance la requête SQL impliquée dans la table

  • Toute création de table doit déterminer quels index sont créés avant que la table puisse être construite en ligne

  • Toutes les opérations de modification de la structure de la table et d'ajout d'index nécessitent la requête SQL impliquant le table à émettre. Informer DBA et tout autre personnel concerné

  • Avant d'ajouter des champs à la nouvelle table, l'équipe R&D est tenue d'envoyer un e-mail au moins 3 jours à l'avance pour évaluation, optimisation et revue par le service DBA

  • L'importation et l'exportation par lots de données doivent en informer le DBA au préalable pour faciliter l'observation

  • C'est interdit d'effectuer la gestion back-end et les requêtes statistiques en ligne depuis la base de données

  • Interdire l'existence de comptes d'applications avec des super autorisations

  • Plus de mises à jour batch et requêtes de base de données pendant les heures de pointe

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer