Maison >base de données >tutoriel mysql >Introduction au moteur de stockage MERGE dans Mysql (exemple de code)

Introduction au moteur de stockage MERGE dans Mysql (exemple de code)

不言
不言avant
2019-02-14 13:21:421862parcourir

Cet article vous présente une introduction au moteur de stockage MERGE dans Mysql (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Le moteur de stockage MERGE traite un ensemble de tables de données MyISAM comme une unité logique, nous permettant de les interroger en même temps. Chaque membre de la table de données MyISAM qui constitue une structure de table de données MERGE doit avoir exactement la même structure de table. Les colonnes de données de chaque table de données membre doivent être définies avec le même nom et le même type dans le même ordre, et les index doivent être définis dans le même ordre et de la même manière. Supposons que vous ayez plusieurs tables de données de journal et que leur contenu soit des éléments d'enregistrement de journal pour chaque année au cours des dernières années. Leurs définitions sont les suivantes, YY représente l'année (cours recommandé : Tutoriel MySQL)

.
CREATE TABLE log_YY ( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX (dt) 
) ENGINE = MyISAM;

Supposons que la collection actuelle de tables de données de journal comprenne log_2004, log_2005, log_2006, log_2007, et que vous puissiez créer une table de données MERGE comme indiqué ci-dessous pour les regrouper en une seule unité logique :

CREATE TABLE log_merge ( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007);

La valeur de l'option ENGINE doit être MERGE, et l'option UNION répertorie les tables de données pertinentes qui seront incluses dans cette table de données MERGE. Une fois cette MERGE créée, vous pouvez l'interroger comme n'importe quelle autre table de données, sauf que chaque requête affectera chaque table de données membre qui la compose en même temps. La requête suivante nous permet de connaître le nombre total de lignes de données dans les tables de données de journal ci-dessus :

SELECT COUNT(*)FROM log_merge;

La requête suivante est utilisée pour déterminer le nombre d'entrées d'enregistrement de journal au cours de chacune des dernières années. :

SELECT YEAR(dt) AS y, COUNT(*) AS entries FROM log_merge GROUP BY y;

En plus de faciliter le référencement de plusieurs tables de données en même temps sans émettre plusieurs requêtes, la table de données MERGE offre également les commodités suivantes.

 1) La table de données MERGE peut être utilisée pour créer une unité logique dont la taille dépasse la longueur maximale autorisée par chaque table de données MyISAM
 2) La table de données compressée est incluse dans la table de données MERGE. Par exemple, après la fin d'une certaine année, vous ne devez plus ajouter d'enregistrements au fichier journal correspondant, vous pouvez donc utiliser l'outil myisampack pour le compresser afin d'économiser de l'espace, et la table de données MERGE peut toujours fonctionner comme d'habitude
3 ), la table de données MERGE prend également en charge les opérations DELETE et UPDATE. L'opération INSERT est plus gênante car MySQL a besoin de savoir dans quelle table membre la nouvelle ligne de données doit être insérée. La définition de la table de données MERGE peut inclure une option INSERT_METHOD. Les valeurs possibles de cette option sont NO, FIRST et LAST. Leurs significations sont que l'opération INSERT est interdite et que de nouvelles lignes de données seront insérées dans l'option UNION actuelle. . la première table de données ou la dernière table de données. Par exemple, la définition suivante traite une opération INSERT sur la table log_merge comme s'il s'agissait d'une opération INSERT sur la table log_2007, qui est la dernière table répertoriée dans l'option UNION :

CREATE TABLE log_merge( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007) INSERT_METHOD = LAST;

Créer un nouveau membre Data table log_2009 et laissez-lui la même structure de table, puis modifiez la table de données log_merge pour inclure log_2009 : log_2009 :

CREATE TABLE log_2009 LIKE log_2008; //根据旧表创建新表
ALTER TABLE log_merge UNION = (log_2004, log_2005, log_2006,log_2007,log_2008,log_2009);

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