Maison > base de données > tutoriel mysql > le corps du texte

Explication détaillée de la différence entre la partition Mysql et les partitions Oracle 10

黄舟
Libérer: 2017-03-28 13:41:35
original
1473 Les gens l'ont consulté

MySQL Les partitions couramment utilisées sont : plage, liste, hachage, clé Les partitions Oracle10g couramment utilisées sont : plage (partition de plage), liste (partition de liste), hachage (partition de hachage), hachage de plage. (partition de hachage de plage), liste de plages (partition composite de liste). Ce qui suit est une introduction détaillée aux différences entre les partitions Oracle10 et les partitions Mysql à travers cet article. Jetons un coup d'œil à

Les partitions Oracle10g couramment utilisées sont : range (partition de plage), liste (partition de liste), hachage. (partition de hachage), range -hash (plage—partition de hachage), range-list (liste—partition composite).

Partitionnement de plage : le partitionnement de plage est une méthode de partitionnement de table avec un large éventail d'applications. Il utilise la plage de valeurs de colonne comme condition de partitionnement et stocke les enregistrements dans la partition de plage où se trouve la valeur de colonne. .

Si elles sont divisées en fonction du temps, les données de janvier 2010 sont placées dans la partition a et les données de février sont placées dans la partition b Lors de la création, vous devez spécifier la colonne de base et la valeur de plage de la. partition.

Lors du partitionnement par temps, si la plage de certains enregistrements ne peut pas être prédite temporairement, vous pouvez créer une partition maxvalue. Tous les enregistrements qui ne se trouvent pas dans la plage spécifiée seront stockés dans la partition où se trouve maxvalue. Par exemple :

createtable pdba (id number, time date) partition by range (time)
(
partitionp1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),
partitionp2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')),
partitionp3 values less than (to_date('2010-12-1', 'yyyy-mm-dd')),
partitionp4 values less than (maxvalue)
)
Copier après la connexion

Partition de hachage :

Pour les tables qui ne peuvent pas être divisées efficacement en plages, vous pouvez utiliser le partitionnement de hachage, qui sera toujours utile pour améliorer les performances. Le partitionnement par hachage répartira uniformément les données de la table sur plusieurs partitions que vous spécifiez. La partition où se trouve la colonne est automatiquement allouée en fonction de la valeur de hachage de la colonne de partition, vous n'avez donc aucun contrôle ni connaissance sur l'enregistrement dans lequel il sera placé. quelle partition., le partitionnement de hachage peut également prendre en charge plusieurs colonnes dépendantes. Tels que :

createtable test
(
transaction_idnumber primary key,
item_idnumber(8) not null
)
partitionby hash(transaction_id)
(
partitionpart_01 tablespace tablespace01,
partitionpart_02 tablespace tablespace02,
partitionpart_03 tablespace tablespace03
);
Copier après la connexion

Ici, nous spécifions l'espace table pour chaque partition.

Partition de liste :

La partition de liste doit également spécifier la valeur de la colonne, et sa valeur de partition doit être clairement spécifiée. Il ne peut y avoir qu'une seule colonne de partition, et cela ne peut pas être comme une plage ou un hachage. Le partitionnement spécifie plusieurs colonnes en tant que colonnes dépendantes de la partition en même temps, mais sa valeur correspondante pour une seule partition peut être multiple.

Lors du partitionnement, vous devez déterminer les valeurs possibles de la colonne de partition. Une fois que la valeur de la colonne insérée n'est pas dans la plage de partition, l'insertion/mise à jour échouera donc. Il est généralement recommandé d'utiliser le partitionnement de liste. Créez une partition par défaut pour stocker les enregistrements qui ne se trouvent pas dans la plage spécifiée, similaire à la partition maxvalue dans la partition de plage.

Lors du partitionnement basé sur un certain champ, tel que le code de la ville, vous pouvez spécifier la valeur par défaut et placer toutes les données des règles non partitionnantes dans cette partition par défaut. Par exemple :

createtable custaddr
(
idvarchar2(15 byte) not null,
areacodevarchar2(4 byte)
)
partitionby list (areacode)
(partition t_list025 values ('025'),
partitiont_list372 values ('372') ,
partitiont_list510 values ('510'),
partitionp_other values (default)
)
Copier après la connexion

Partitionnement combiné :

Si une table est encore grande après avoir été partitionnée selon une certaine colonne, ou s'il s'agit d'un autre Si nécessaire, la partition peut également être subdivisée en créant des sous-partitions au sein de la partition, c'est-à-dire en combinant des partitions.

Il existe deux types de partitions combinées en 10g : range-hash et range-list. Faites attention à l'ordre. La partition racine ne peut être qu'une partition de plage et la sous-partition peut être une partition de hachage ou une partition de liste.

Par exemple :

createtable test
(
transaction_idnumber primary key,
transaction_datedate
)
partitionby range(transaction_date) subpartition by hash(transaction_id)
subpartitions3 store in (tablespace01,tablespace02,tablespace03)
(
partitionpart_01 values less than(to_date('2009-01-01','yyyy-mm-dd')),
partitionpart_02 values less than(to_date('2010-01-01','yyyy-mm-dd')),
partitionpart_03 values less than(maxvalue)
);
createtable emp_sub_template (deptno number, empname varchar(32), grade number)
partitionby range(deptno) subpartition by hash(empname)
subpartitiontemplate
(subpartitiona tablespace ts1,
subpartitionb tablespace ts2,
subpartitionc tablespace ts3,
subpartitiond tablespace ts4
)
(partitionp1 values less than (1000),
partitionp2 values less than (2000),
partitionp3 values less than (maxvalue)
);
createtable quarterly_regional_sales
(deptnonumber, item_no varchar2(20),
txn_datedate, txn_amount number, state varchar2(2))
tablespacets4
partitionby range (txn_date)
subpartitionby list (state)
(partitionq1_1999 values less than (to_date('1-apr-1999','dd-mon-yyyy'))
(subpartitionq1_1999_northwest values ('or', 'wa'),
subpartitionq1_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq1_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq1_1999_southeast values ('fl', 'ga'),
subpartitionq1_1999_northcentral values ('sd', 'wi'),
subpartitionq1_1999_southcentral values ('ok', 'tx')
),
partitionq2_1999 values less than ( to_date('1-jul-1999','dd-mon-yyyy'))
(subpartitionq2_1999_northwest values ('or', 'wa'),
subpartitionq2_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq2_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq2_1999_southeast values ('fl', 'ga'),
subpartitionq2_1999_northcentral values ('sd', 'wi'),
subpartitionq2_1999_southcentral values ('ok', 'tx')
),
partitionq3_1999 values less than (to_date('1-oct-1999','dd-mon-yyyy'))
(subpartitionq3_1999_northwest values ('or', 'wa'),
subpartitionq3_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq3_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq3_1999_southeast values ('fl', 'ga'),
subpartitionq3_1999_northcentral values ('sd', 'wi'),
subpartitionq3_1999_southcentral values ('ok', 'tx')
),
partitionq4_1999 values less than ( to_date('1-jan-2000','dd-mon-yyyy'))
(subpartitionq4_1999_northwest values ('or', 'wa'),
subpartitionq4_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq4_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq4_1999_southeast values ('fl', 'ga'),
subpartitionq4_1999_northcentral values ('sd', 'wi'),
subpartitionq4_1999_southcentral values ('ok', 'tx')
)
);
Copier après la connexion

Les partitions MySQL sont couramment utilisées : plage, liste, hachage, clé

Partitionnement RANGE (portionnement) : selon l'intervalle de plage auquel la valeur de la colonne appartient, distribuez les tuples aux partitions.

 Partitionnement LISTE : Semblable au partitionnement par RANGE, la différence est que le partitionnement LISTE sélectionne en fonction des valeurs de colonne correspondant à une certaine valeur dans un ensemble de valeurs discrètes.

 Partitionnement HASH : Partitionnement sélectionné en fonction de la valeur de retour de la fonction définie par l'utilisateur, dont expression utilise les colonnes des lignes à insérer dans le tableau la valeur est calculée. Cette fonction peut contenir n'importe quelle expression valide dans MySQL qui produit une valeur entière non négative.

 Partitionnement KEY : Semblable au partitionnement HASH, la différence est que le partitionnement KEY ne prend en charge que le calcul d'une ou plusieurs colonnes et que le serveur MySQL fournit sa propre fonction de hachage.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!