Maison  >  Article  >  base de données  >  Une introduction à l'architecture de base de données

Une introduction à l'architecture de base de données

零下一度
零下一度original
2017-05-05 16:32:161558parcourir

1. Introduction à MySQL

Vue d'ensemble
  • MySQL est un système de gestion de bases de données relationnelles développé par la société suédoise MySQL AB et appartient actuellement à Oracle.

  • MySQL est un système de gestion de base de données relationnelle qui conserve les données dans différentes tables au lieu de placer toutes les données dans un seul grand entrepôt, ce qui augmente la vitesse et améliore la flexibilité.

  • Mysql est open source, vous n'avez donc pas besoin de payer de supplément.

  • Mysql prend en charge les grandes bases de données. Peut gérer de grandes bases de données contenant des dizaines de millions d’enregistrements.

  • MySQL utilise le formulaire de langage de données SQL standard.

  • Mysql peut être utilisé sur plusieurs systèmes et prend en charge plusieurs langues. Ces langages de programmation incluent C, C++, Python, Java, Perl, PHP, Eiffel, Ruby et Tcl, etc.

  • Mysql prend bien en charge PHP, qui est actuellement le langage de développement Web le plus populaire.

  • MySQL prend en charge de grandes bases de données et entrepôts de données avec 50 millions d'enregistrements. Le fichier de table système 32 bits peut prendre en charge un maximum de 4 Go, et le système 64 bits prend en charge un fichier de table maximum de. 8 To.

  • Mysql peut être personnalisé et adopte le protocole GPL. Vous pouvez modifier le code source pour développer votre propre système Mysql.

MySQL avancé implique des connaissances
  • noyau MySQL

  • lion de siège d'optimisation SQL

  • Optimisation du serveur MySQL

  • Divers paramètres de constantes de paramètres

  • Optimisation des instructions de requête

  • Réplication maître-esclave

  • Mise à niveau logicielle et matérielle

  • Sauvegarde de récupération après sinistre

  • Programmation SQL

  • L'optimisation complète de MySQL nécessite une base profonde. Les grandes entreprises ont même des administrateurs de base de données dédiés pour écrire ce qui précède

2. Installation de la version MySQL Linux

  • Cette fois, MySQL 5.5 est installé et l'environnement d'installation est CentOS 6.5

  • adresse de téléchargement de la version adresse de téléchargement du site officiel

    • TéléchargementMySQL-Client et MySQL-Server

    • downloads.skysql.com/archives/mysql-5.5/MySQL-server-5.5.16-1.rhel4.i386.rpm

    • downloads.skysql.com/archives/mysql- 5.5/MySQL-client-5.5.16-1.rhel4.i386.rpm

    • downloads.skysql.com/archives/mysql-5.5/MySQL-devel-5.5.16-1 .rhel4.i386.rpm

  • Vérifiez si MySQL est installé sur le système actuel

    • Commande de requête : rpm -qa|grep -i mysql

    • Supprimer la commande : rpm -e --nodeps RPM包全名

  • Installer le serveur mysql (Faites attention aux conseils)

    • Une introduction à l'architecture de base de données

      Définir l'invite de mot de passe

  • Installer le client MySQL

  • Afficher l'utilisateur MySQL et le groupe MySQL créés lors de l'installation de MySQL

    • # cat /etc/passwd | grep mysql

    • # cat /etc/group | grep mysql

  • Démarrer + arrêter le service MySQL

    • Afficher le jeu de caractères

    • Modifiez le jeu de caractères et modifiez le fichier de configuration précédemment copié. (Code de suivi détaillé)

    • Emplacement d'installation de MySQL

    • show variables like 'character%';

    • show variables like '%char%';

    • Une introduction à l'architecture de base de données

      Jeu de caractères

    • La valeur par défaut est que le client et le serveur utilisez latin1 , donc le code sera tronqué.

    • Afficher le répertoire d'installation sous Linuxps -ef|grep mysql

    • Copiez la version 5.5 actuelle : cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

    • Version 5.6 cp /usr/share/mysql/my-default.cnf /etc/my.cnf

    • #chkconfig mysql on Définir le démarrage automatique

    • # chkconfig --list | grep mysql Vérifiez si le démarrage automatique est configuré

    • # /etc/init.d/mysql start

    • # /etc/init.d/mysql stop

    • Ou

    • #service mysql start

    • #service mysql stop

    • Vérifiez le démarrage de MySQL et état d'arrêt : # ps -ef | grep mysql

    • Démarrer et arrêter les opérations :

    • Configurer le service de démarrage automatique MySQL

    • Modifier l'emplacement du fichier de configuration

    • Modifier le jeu de caractères et le chemin de stockage des données

路径 解释 备注
/var/lib/mysql/ mysql数据库文件的存放路径 /var/lib/mysql/atguigu.cloud.pid
/usr/share/mysql 配置文件目录 mysql.server命令及配置文件
/usr/bin 相关命令目录 mysqladmin mysqldump等命令
/etc/init.d/mysql 启停相关脚本

Une introduction à l'architecture de base de données

Emplacement d'installation de MySQL

[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock

# 这一行需要设置字符集
default-character-set=utf8

# The MySQL server
[mysqld]
port = 3306

# 还有这三行
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci

socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

[mysql]
no-auto-rehash
# 还有这一行
default-character-set=utf8

3. Fichier de configuration MySQL

Fichier de configuration principal
  • Journal binaire du journal

    • Réplication maître-esclave

    • Une introduction à l'architecture de base de données


  • Journal des erreurs-erreur

    • est désactivé par défaut, enregistrant les avertissements et les erreurs graves messages, détails de chaque démarrage et arrêt, etc.

  • Journal du journal des requêtes

    • Désactivé par défaut, enregistre les instructions SQL des requêtes. S'il est activé, il le fera. réduire les performances globales de MySQL, car l'enregistrement des journaux consomme également des ressources système

  • fichiers de données

    • windows

    • Linux :

    • Vous pouvez choisir de nombreuses bibliothèques dans le répertoire D:devSoftMySQLServer5.5data

    • Par défaut chemin

      #cd /var/lib/mysql/

    • Regardez toutes les bibliothèques du système actuel avant d'y aller

      #ls -1F | grep ^d

    • Deux systèmes

    • fichier frm : stocke la structure de la table

    • fichier myd : stocke les données de la table

    • fichier myi : stocke l'index de la table

  • Comment configurer

    • Windows : fichier my.ini

    • Linux : fichier /etc/my.cnf

Introduction à l'architecture logique Mysql

    4. 🎜>
  • Vue d'ensemble

    Par rapport à d'autres bases de données, MySQL est un peu différente. Son architecture peut être appliquée et fonctionne bien dans de nombreux scénarios différents. Principalement reflétée dans l'architecture du moteur de stockage,
  • l'architecture du moteur de stockage plug-in sépare le traitement des requêtes des autres tâches système ainsi que le stockage et l'extraction des données
      . Cette architecture permet la sélection de moteurs de stockage appropriés en fonction des besoins métier et des besoins réels.
    • La couche de stockage de données stocke principalement les données sur le système de fichiers exécuté sur le périphérique brut et complète l'interaction avec le moteur de stockage.

    • Couche moteur de stockage, le moteur de stockage est réellement responsable du stockage et de la récupération des données dans MySQL, et le serveur communique avec le moteur de stockage via l'API. Différents moteurs de stockage ont des fonctions différentes, nous pouvons donc choisir en fonction de nos besoins réels. MyISAM et InnoDB seront introduits plus tard

    • L'architecture de deuxième couche complète principalement la plupart des fonctions de service de base, telles que l'interface SQL, et complète les requêtes mises en cache, l'analyse et l'optimisation SQL, et certaines construites -dans les fonctions. Toutes les fonctions du moteur de stockage croisé sont également implémentées dans cette couche, telles que les procédures, les fonctions, etc. Au niveau de cette couche, le serveur analysera la requête et créera l'arbre d'analyse interne correspondant, et terminera l'optimisation correspondante telle que déterminer l'ordre de la table de requête, s'il faut utiliser des index, etc., et enfin générer l'opération d'exécution correspondante. S'il s'agit d'une instruction select, le serveur interrogera également le cache interne. Si l'espace de cache est suffisamment grand, cela peut améliorer considérablement les performances du système dans un environnement gérant un grand nombre d'opérations de lecture.

    • La couche supérieure est constituée de certains services client et de connexion, y compris la communication sock locale et la plupart des communications de type TCP/IP basées sur des outils client/serveur. Il complète principalement certains traitements de connexion, authentification d'autorisation et solutions de sécurité associées. Le concept de pool de threads est introduit sur cette couche pour fournir des threads aux clients qui accèdent en toute sécurité via l'authentification. Des liens sécurisés basés sur SSL peuvent également être implémentés sur cette couche. Le serveur vérifie également les autorisations d'exploitation dont il dispose pour chaque client qui y accède en toute sécurité.

      Une introduction à l'architecture de base de données


    • 1. 🎜>
    • 2. Couche de service

    • 3. 🎜>

    • 4. Couche de stockage
    • Description de la requête
Tout d'abord, le processus de requête de mysql En gros :
  • Le client mysql établit une connexion avec le serveur mysql via le protocole, envoie l'instruction de requête, vérifie d'abord le cache de requête, et s'il réussit, renvoie le résultat directement, sinon l'instruction est analysée
    • Il existe une série de prétraitements, comme vérifier si l'instruction est écrite correctement, puis optimiser les requêtes (par exemple s'il faut utiliser l'index analyse, si c'est une condition impossible, terminer plus tôt) et générer des requêtes Plan, puis le moteur de requête démarre, commence à exécuter la requête, appelle l'API du moteur de stockage sous-jacent pour obtenir les données, et enfin les renvoie au client. Comment stocker des données et comment récupérer des données sont tous liés au moteur de stockage.
    • Ensuite, mysql utilise l'index BTREE par défaut, et une direction générale est que peu importe la façon dont vous jouez avec SQL, du moins pour l'instant, mysql n'utilise qu'au plus un index dans la table.

5. Moteur de stockage Mysql

  • Afficher la commande

    • show variables like '%storage_engine%';

    • mysql> show engines;

    • Découvrez quels moteurs de stockage sont actuellement fournis par MySQL

    • Consultez votre moteur de stockage MySQL par défaut actuel :

    • Une introduction à l'architecture de base de données

      Moteur de stockage par défaut

  • MyISAM et InnoDB

    • Une introduction à l'architecture de base de données

      deux types Comparaison de moteur

  • Lequel utiliser pour Alibaba ou Taobao

    • Une introduction à l'architecture de base de données


    • Percona a été amélioré pour le serveur de base de données MySQL et présente une amélioration significative des fonctionnalités et des performances par rapport à MySQL. Cette version améliore les performances d'InnoDB dans des conditions de charge élevée, fournit aux administrateurs de base de données des outils de diagnostic des performances très utiles et dispose de plus de paramètres et de commandes pour contrôler le comportement du serveur.

    • La société a construit un nouveau moteur de stockage appelé xtradb qui peut remplacer complètement innodb et améliorer les performances et la concurrence. ,

    • La plupart des bases de données mysql d'Alibaba utilisent en fait le prototype de percona à modifier.

    [Recommandations associées]

    1 Tutoriel vidéo en ligne MySQL gratuit

    2 Dernier tutoriel manuel MySQL.

    3. Tutoriel vidéo d'introduction à l'éducation booléenne Yan Shiba mysql

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn