Table des matières
Présentation du partitionnement MySQL
Type de partition
Partitionnement RANGE
Partitionnement LIST
Partition HASH
Partition KEY
分区和性能
Maison base de données tutoriel mysql MySQL prend-il en charge le partitionnement ?

MySQL prend-il en charge le partitionnement ?

Jun 16, 2022 am 11:34 AM
mysql

mysql prend en charge la fonction de partitionnement à partir de la version 5.1. Dans MySQL 5.1, l'expression de partition doit être un entier ou une expression qui renvoie un entier tandis que MySQL 5.5 prend en charge le partitionnement d'expressions non entières. La partition de la base de données MySQL est un index de partition local. Une partition stocke à la fois les données et les index ; c'est-à-dire que l'index clusterisé et l'index non clusterisé de chaque zone sont placés dans leurs zones respectives (fichiers physiques différents). MySQL prend en charge 4 types de partitions : partition RANGE, partition LIST, partition HASH et partition KEY.

MySQL prend-il en charge le partitionnement ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

mysql prend en charge le partitionnement.

Présentation du partitionnement MySQL

MySQL a ajouté la prise en charge du partitionnement horizontal dans la version 5.1. Le partitionnement consiste à décomposer une table ou un index en parties plus petites et plus faciles à gérer. Chaque zone est indépendante et peut être traitée indépendamment ou dans le cadre d'un objet plus grand. Il s'agit d'une fonction prise en charge par MySQL et le code métier n'a pas besoin d'être modifié. Il faut savoir que MySQL est orienté vers les données OLTP. Ce n'est pas comme les autres bases de données comme TIDB. Ensuite, vous devez être très prudent lorsque vous utilisez des partitions. Si vous ne savez pas comment utiliser les partitions, cela peut avoir un impact négatif sur les performances.

La partition de la base de données MySQL est un index de partition local. Une partition stocke à la fois les données et l'index. Autrement dit, l'index clusterisé et l'index non clusterisé de chaque zone sont placés dans leurs zones respectives (fichiers physiques différents). Actuellement, la base de données MySQL ne prend pas en charge le partitionnement global.

Quel que soit le type de partitionnement, s'il y a une clé primaire ou un index unique dans la table, la colonne de partitionnement doit être un composant de l'index unique.

Facteurs limitants de la table de partition

(1). Une table ne peut avoir qu'un maximum de 1024 partitions.

(2). Dans MySQL5.1, l'expression de partition doit être un entier ou une expression qui renvoie un entier. La prise en charge du partitionnement d'expressions non entières est fournie dans MySQL 5.5.

(3) S'il y a des colonnes de clé primaire ou d'index unique dans le champ de partition, alors de nombreuses colonnes de clé primaire et colonnes d'index uniques doivent être incluses. Autrement dit : le champ de partition soit ne contient pas la clé primaire ou la colonne d'index, soit contient toutes les colonnes de clé primaire et d'index.

(4). Les contraintes de clé étrangère ne peuvent pas être utilisées dans les tables partitionnées.

(5) Le partitionnement MySQL s'applique à toutes les données et index d'une table. Vous ne pouvez pas partitionner les données de la table mais pas l'index, vous ne pouvez pas partitionner l'index mais pas la table, et vous ne pouvez pas partitionner seulement une partie des données de la table. tableau. .

Type de partition

Actuellement, MySQL prend en charge plusieurs types de partitions, la partition RANGE, la partition LIST, la partition HASH et la partition KEY. Si la table possède une clé primaire ou un index unique, la colonne de partition doit être un composant de l'index unique. En combat réel, le partitionnement RANGE est très probablement utilisé.

Partitionnement RANGE

Le partitionnement RANGE est le type de partitionnement le plus couramment utilisé dans la pratique. Les données de ligne sont placées dans des partitions en fonction des valeurs de colonne appartenant à un intervalle continu donné. Mais rappelez-vous que lorsque les données insérées n'ont pas de valeur définie dans une partition, une exception sera levée.

La partition RANGE est principalement utilisée pour le partitionnement des colonnes de dates, telles que les tables de transactions, les tables de ventes, etc. Les données peuvent être stockées selon l'année et le mois. Si vous partitionnez des données de type date dans l'index unique, veuillez noter que l'optimiseur ne peut optimiser que des fonctions telles que YEAR(), TO_DAYS(), TO_SECONDS() et UNIX_TIMESTAMP(). En combat réel, le type int peut être utilisé, il suffit donc de stocker aaaaMM. Vous n'avez plus à vous soucier des fonctions.

CREATE TABLE `m_test_db`.`Order` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `partition_key` INT NOT NULL,
    `amt` DECIMAL(5) NULL,
    PRIMARY KEY (`id` , `partition_key`)
) PARTITION BY RANGE (partition_key) PARTITIONS 5 (
PARTITION part0 VALUES LESS THAN (201901) , 
PARTITION part1 VALUES LESS THAN (201902) , 
PARTITION part2 VALUES LESS THAN (201903) , 
PARTITION part3 VALUES LESS THAN (201904) , 
PARTITION part4 VALUES LESS THAN (201905));
Copier après la connexion

À ce stade, nous insérons d'abord quelques données

INSERT INTO `m_test_db`.`Order` (`id`, `partition_key`, `amt`) VALUES ('1', '201901', '1000');
INSERT INTO `m_test_db`.`Order` (`id`, `partition_key`, `amt`) VALUES ('2', '201902', '800');
INSERT INTO `m_test_db`.`Order` (`id`, `partition_key`, `amt`) VALUES ('3', '201903', '1200');
Copier après la connexion

Maintenant, nous interrogeons et trouvons via la commande EXPLAIN PARTITION que l'optimiseur SQL recherche uniquement la zone correspondante et ne recherchera pas toutes les partitions

S'il y a un problème avec l'instruction SQL, puis peut visiter toutes les zones. Ce serait dangereux. Par conséquent, après avoir partitionné la table, l'instruction select doit utiliser la clé de partition.

Les 3 types suivants ne sont pas très couramment utilisés, je vais donc simplement les mentionner ici.

Partitionnement LIST

Le partitionnement LIST est très similaire au partitionnement RANGE, sauf que les valeurs de la colonne de partitionnement sont discrètes et non continues. Le partitionnement LIST utilise VALUES IN car la valeur de chaque partition est discrète, donc seules les valeurs peuvent être définies.

Partition HASH

En parlant de hachage, le but est évident : répartir uniformément les données dans des partitions prédéfinies afin de garantir que le numéro de chaque partition est à peu près le même.

Partition KEY

La partition KEY est similaire à la partition HASH. La différence est que la partition HASH utilise des fonctions définies par l'utilisateur pour le partitionnement et que la partition KEY utilise les fonctions fournies par la base de données pour le partitionnement.

分区和性能

一项技术,不是用了就一定带来益处。比如显式锁功能比内置锁强大,你没玩好可能导致很不好的情况。分区也是一样,不是启动了分区数据库就会运行的更快,分区可能会给某些sql语句性能提高,但是分区主要用于数据库高可用性的管理。

数据库应用分为2类,一类是OLTP(在线事务处理),一类是OLAP(在线分析处理)。对于OLAP应用分区的确可以很好的提高查询性能,因为一般分析都需要返回大量的数据,如果按时间分区,比如一个月用户行为等数据,则只需扫描响应的分区即可。在OLTP应用中,分区更加要小心,通常不会获取一张大表的10%的数据,大部分是通过索引返回几条数据即可。

比如一张表1000w数据量,如果一句select语句走辅助索引,但是没有走分区键。那么结果会很尴尬。如果1000w的B+树的高度是3,现在有10个分区。那么不是要(3+3)*10次的逻辑IO?(3次聚集索引,3次辅助索引,10个分区)。所以在OLTP应用中请小心使用分区表。

在日常开发中,如果想查看sql语句的分区查询结果可以使用explain partitions + select sql来获取,partitions标识走了哪几个分区。

mysql> explain partitions select * from TxnList where startTime>&#39;2016-08-25 00:00:00&#39; and startTime<&#39;2016-08-25 23:59:00&#39;;  
+----+-------------+-------------------+------------+------+---------------+------+---------+------+-------+-------------+  
| id | select_type | table             | partitions | type | possible_keys | key  | key_len | ref  | rows  | Extra       |  
+----+-------------+-------------------+------------+------+---------------+------+---------+------+-------+-------------+  
|  1 | SIMPLE      | ClientActionTrack | p20160825  | ALL  | NULL          | NULL | NULL    | NULL | 33868 | Using where |  
+----+-------------+-------------------+------------+------+---------------+------+---------+------+-------+-------------+  
1 row in set (0.00 sec)
Copier après la connexion

注:

1.MySQL Workbench下添加分区的截图

2. Table has no partition for value 12

在12月的某一天,我查看了生产的日志文件,忽然发现系统一直在报错:Table has no partition for value 12。仔细检查分区sql发现分区的时候用的是less than

也就是说我在注释1截图里面的分区是不包括12月的区的。执行以下命令增加分区:

ALTER TABLE table_name ADD PARTITION (PARTITION p_12 VALUES LESS THAN (13));
Copier après la connexion

如果没有进行适当的处理,将会报错。所以在进行 RANGE 分区时,要思考这种情况。一般情况下,就时在最后添加一个 MAXVALUE 分区,如下:

PARTITION p_max VALUES LESS THAN MAXVALUE
Copier après la connexion

【相关推荐: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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL: une introduction à la base de données la plus populaire au monde MySQL: une introduction à la base de données la plus populaire au monde Apr 12, 2025 am 12:18 AM

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

Place de MySQL: bases de données et programmation Place de MySQL: bases de données et programmation Apr 13, 2025 am 12:18 AM

La position de MySQL dans les bases de données et la programmation est très importante. Il s'agit d'un système de gestion de base de données relationnel open source qui est largement utilisé dans divers scénarios d'application. 1) MySQL fournit des fonctions efficaces de stockage de données, d'organisation et de récupération, en prenant en charge les systèmes Web, mobiles et de niveau d'entreprise. 2) Il utilise une architecture client-serveur, prend en charge plusieurs moteurs de stockage et optimisation d'index. 3) Les usages de base incluent la création de tables et l'insertion de données, et les usages avancés impliquent des jointures multiples et des requêtes complexes. 4) Des questions fréquemment posées telles que les erreurs de syntaxe SQL et les problèmes de performances peuvent être déboguées via la commande Explication et le journal de requête lente. 5) Les méthodes d'optimisation des performances comprennent l'utilisation rationnelle des indices, la requête optimisée et l'utilisation des caches. Les meilleures pratiques incluent l'utilisation des transactions et des acteurs préparés

Pourquoi utiliser MySQL? Avantages et avantages Pourquoi utiliser MySQL? Avantages et avantages Apr 12, 2025 am 12:17 AM

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

Comment se connecter à la base de données d'Apache Comment se connecter à la base de données d'Apache Apr 13, 2025 pm 01:03 PM

Apache se connecte à une base de données nécessite les étapes suivantes: Installez le pilote de base de données. Configurez le fichier web.xml pour créer un pool de connexion. Créez une source de données JDBC et spécifiez les paramètres de connexion. Utilisez l'API JDBC pour accéder à la base de données à partir du code Java, y compris l'obtention de connexions, la création d'instructions, les paramètres de liaison, l'exécution de requêtes ou de mises à jour et de traitement des résultats.

Comment démarrer MySQL par Docker Comment démarrer MySQL par Docker Apr 15, 2025 pm 12:09 PM

Le processus de démarrage de MySQL dans Docker se compose des étapes suivantes: Tirez l'image MySQL pour créer et démarrer le conteneur, définir le mot de passe de l'utilisateur racine et mapper la connexion de vérification du port Créez la base de données et l'utilisateur accorde toutes les autorisations sur la base de données

Rôle de MySQL: Bases de données dans les applications Web Rôle de MySQL: Bases de données dans les applications Web Apr 17, 2025 am 12:23 AM

Le rôle principal de MySQL dans les applications Web est de stocker et de gérer les données. 1.MySQL traite efficacement les informations utilisateur, les catalogues de produits, les enregistrements de transaction et autres données. 2. Grâce à SQL Query, les développeurs peuvent extraire des informations de la base de données pour générer du contenu dynamique. 3.MySQL fonctionne basé sur le modèle client-serveur pour assurer une vitesse de requête acceptable.

Exemple d'introduction de Laravel Exemple d'introduction de Laravel Apr 18, 2025 pm 12:45 PM

Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

Comment installer MySQL dans CentOS7 Comment installer MySQL dans CentOS7 Apr 14, 2025 pm 08:30 PM

La clé de l'installation de MySQL est d'élégance pour ajouter le référentiel MySQL officiel. Les étapes spécifiques sont les suivantes: Téléchargez la clé GPG officielle MySQL pour empêcher les attaques de phishing. Ajouter un fichier de référentiel MySQL: RPM -UVH https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm Mise à jour du référentiel Cache: Yum Update Installation Mysql: Yum install install install starting starting mysql Service: SystemCTL start start mysqld starger bugo boartup Service mysql Service: SystemCTL start start mysqld starger bugo bo onthing staring Service mysql Service: SystemCTL Start Start MySQLD Set Out Up Boaching Staring Service MySQL Service: SystemCTL Start Start MysQL

See all articles