Table des matières
MySQL 5.1 系列  (即5.0.x 版本)
Maison base de données tutoriel mysql MySQL中Alter table 不长时间锁表的情况汇总。_MySQL

MySQL中Alter table 不长时间锁表的情况汇总。_MySQL

Jun 01, 2016 pm 01:49 PM
process

bitsCN.com

前言:

MySQL 的大表运维总是令人头疼的一件事,特别是大表表结构的修改尤为困难。

首先,alter table 的process不可被kill , 一旦执行就不可回退。

其次,大多数的alter table操作都会涉及 lock --- copy to new table --- rename --- unlock的过程,锁表时间会很长。

本文不是讨论如何进行大表表结构变更, 而是汇总一些不涉及copy to new table这一步的alter table情况。

这些情况下,mysql会直接修改frm文件,而lock的时间也仅是秒级的。

 

MySQL 5.0 系列  (即5.0.x 版本)

如果你是这个版本,很遗憾所有alter table 操作都会进行temp table copy。以下是摘自官方文档的解释:

If you use any option to ALTER TABLE other than RENAME, MySQL always creates a temporary table, even if the data wouldn't strictly need to be copied (such as when you change the name of a column).

 

MySQL 5.1 系列  (即5.0.x 版本)

以下操作不会有copy temp table操作,即锁表时间较短。

1. ALTER TABLE tbl_name RENAME TO new_tbl_name

2. 不涉及数据修改的操作

2.1 列改名 (除了innodb)

2.2 修改默认值 (注意:必须使用 modify ,而不能使用change

2.3 增加ENUM的枚举定义 (注意:仅当新增枚举在当前允许最大值內,例:1B 可存8个枚举,2B可存128个枚举)

3. 通过add partition 添加分区

4. 重命名索引

5. 添加删除索引 (仅 innodb plugin支持)


详见官方文档说明:

  • For ALTER TABLE <em class="replaceable"><code>tbl_name RENAME TO new_tbl_name without any other options, MySQL simply renames any files that correspond to the table tbl_name without making a copy. (You can also use the RENAME TABLEstatement to rename tables. See Section 13.1.33, “RENAME TABLE Syntax”.) Any privileges granted specifically for the renamed table are not migrated to the new name. They must be changed manually.

  • Alterations that modify only table metadata and not table data can be made immediately by altering the table's.frm file and not touching table contents. The following changes are fast alterations that can be made this way:

    • Renaming a column, except for the InnoDB storage engine.

    • Changing the default value of a column (except for NDB tables; see Limitations of NDBCLUSTER online operations).

    • Changing the definition of an ENUM or SET column by adding new enumeration or set members to the end of the list of valid member values, as long as the storage side of the data type does not change. For example, adding a member to a SET column that has 8 members changes the required storage per value from 1 byte to 2 bytes; this will require a table copy. Adding members in the middle of the list causes renumbering of existing members, which requires a table copy.

  • ALTER TABLE ... ADD PARTITION creates no temporary table except when used with NDB tables. ADD or DROPoperations for RANGE or LIST partitions are immediate operations or nearly so. ADD or COALESCE operations forHASH or KEY partitions copy data between changed partitions; unless LINEAR HASH or LINEAR KEY was used, this is much the same as creating a new table (although the operation is done partition by partition). REORGANIZEoperations copy only changed partitions and do not touch unchanged ones.

  • Renaming an index, except for InnoDB.

  • Adding or dropping an index, for InnoDB (if InnoDB Plugin is used) and NDB.

bitsCN.com
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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Comment implémenter l'instruction pour afficher les données de la table dans MySQL ? Comment implémenter l'instruction pour afficher les données de la table dans MySQL ? Nov 08, 2023 pm 01:40 PM

Titre : Déclarations et exemples de code spécifiques pour afficher les données de table dans MySQL MySQL est un système de gestion de base de données relationnelle open source largement utilisé dans des applications de toutes tailles. Dans MySQL, l'affichage des données d'une table est une opération très basique. Ce qui suit présente comment implémenter cette opération à travers des instructions spécifiques et des exemples de code. Tout d'abord, nous présenterons les instructions et les exemples de code spécifiques pour afficher les données de table via l'outil de ligne de commande MySQL. Supposons que nous ayons une table nommée "employés", voici le laissez-passer

Comment utiliser le processus en Java Comment utiliser le processus en Java May 10, 2023 am 11:04 AM

Remarque 1. La classe Process est une classe abstraite (toutes les méthodes sont abstraites), encapsulant le processus (c'est-à-dire exécutant le programme). 2. La classe Process fournit des méthodes pour saisir à partir du processus, exécuter la sortie du processus, attendre la fin du processus, vérifier l'état de sortie du processus et détruire le processus. Exemple Processp=null;try{p=Runtime.getRuntime().exec("notepad.exe");p.waitFor();}catch(Exceptione){e.printStackTrace();}System.out.println(" Je veux être imprimé...

Comment définir des autorisations en lecture seule sur une table dans la base de données Oracle ? Comment définir des autorisations en lecture seule sur une table dans la base de données Oracle ? Mar 06, 2024 pm 03:03 PM

Dans la base de données Oracle, la définition d'autorisations en lecture seule sur les tables est une opération très importante, qui peut protéger la sécurité des données et éviter les erreurs d'opération. Ce qui suit explique comment définir des autorisations en lecture seule sur les tables d'une base de données Oracle et fournit des exemples de code spécifiques. Tout d'abord, nous devons comprendre que dans la base de données Oracle, les utilisateurs obtiennent des autorisations sur les tables via une autorisation. Les autorisations de table incluent les opérations SELECT (requête), INSERT (insertion), UPDATE (mise à jour) et DELETE (suppression). Nous présenterons ici

Comment implémenter l'instruction de renommer la table dans MySQL ? Comment implémenter l'instruction de renommer la table dans MySQL ? Nov 08, 2023 pm 12:11 PM

MySQL est un système de gestion de base de données relationnelle couramment utilisé qui prend en charge l'opération de renommage des tables. Normalement, renommer une table comporte certains risques, vous devez donc être très prudent lorsque vous effectuez cette opération. Dans cet article, nous explorerons comment implémenter l'instruction rename table dans MySQL et fournirons des exemples de code détaillés. Dans MySQL, vous pouvez utiliser l'instruction ALTERTABLE pour renommer une table. Voici la syntaxe de base de l'instruction de renommage ALTERTABLE : ALTERTABLEo

Utilisez MySQL pour créer une table système de recommandation afin d'implémenter la fonction du système de recommandation Utilisez MySQL pour créer une table système de recommandation afin d'implémenter la fonction du système de recommandation Jul 02, 2023 am 10:01 AM

Utilisez MySQL pour créer une table système de recommandation afin d'implémenter la fonction du système de recommandation. Le système de recommandation est un système utilisé pour recommander du contenu personnalisé aux utilisateurs en fonction de leurs préférences et de leurs comportements. Dans le système de recommandation, la base de données est un composant clé qui stocke des informations telles que les données utilisateur, les données d'élément et les données d'interaction utilisateur-élément. En tant que système de gestion de base de données relationnelle couramment utilisé, MySQL peut être utilisé pour créer des tables de système de recommandation et implémenter les fonctions du système de recommandation. Cet article expliquera comment utiliser MySQL pour créer une table système de recommandation et la démontrera à travers des exemples de code.

Liste des configurations recommandées du boîtier de l'ordinateur Microsoft : liste des configurations recommandées du boîtier de l'ordinateur Microsoft Liste des configurations recommandées du boîtier de l'ordinateur Microsoft : liste des configurations recommandées du boîtier de l'ordinateur Microsoft Dec 28, 2023 am 11:36 AM

Un boîtier d'ordinateur Microsoft est un étui utilisé pour protéger votre ordinateur. Il offre non seulement une protection supplémentaire mais ajoute également un effet décoratif. Pour ceux qui souhaitent ajouter des éléments personnalisés à leur ordinateur, les boîtiers d'ordinateur Microsoft sont un choix idéal. Le tableau de configuration recommandée des boîtiers d'ordinateur Microsoft est un tableau détaillé qui répertorie les configurations recommandées pour différents modèles et spécifications de boîtiers d'ordinateur Microsoft. Nous présenterons en détail le tableau de configuration recommandé des boîtiers d'ordinateur Microsoft et en expliquerons certains aspects. 1. Modèles applicables Dans le tableau de configuration recommandé, la première chose à considérer concerne les modèles applicables de boîtiers d'ordinateur Microsoft. Différents modèles de boîtiers d'ordinateur Microsoft peuvent avoir des tailles et des formes différentes, vous devez donc choisir le boîtier approprié en fonction de votre modèle d'ordinateur. Le tableau de configuration répertorie les microcontrôleurs applicables aux différents modèles.

MySQL crée une table des droits des utilisateurs pour implémenter la fonction de gestion des droits des utilisateurs MySQL crée une table des droits des utilisateurs pour implémenter la fonction de gestion des droits des utilisateurs Jul 02, 2023 pm 06:57 PM

MySQL crée des tables de droits d'utilisateur pour implémenter des fonctions de gestion des droits d'utilisateur. MySQL est un système de gestion de base de données relationnelle couramment utilisé qui fournit de puissantes fonctions de gestion des droits d'utilisateur. Dans un environnement de base de données multi-utilisateurs, il est très important de gérer correctement les autorisations des utilisateurs. Cet article présentera comment implémenter la fonction de gestion des droits des utilisateurs en créant une table des droits des utilisateurs et l'illustrera à travers des exemples de code. 1. Créer une table d'autorisations Tout d'abord, nous devons créer une table d'autorisations pour stocker les informations d'autorisation de l'utilisateur. Les champs de la table d'autorisation incluent l'ID utilisateur (user_

Quelles situations dans la base de données Oracle peuvent entraîner le verrouillage des tables ? Quelles situations dans la base de données Oracle peuvent entraîner le verrouillage des tables ? Mar 10, 2024 pm 04:42 PM

Quelles situations dans la base de données Oracle peuvent entraîner le verrouillage des tables ? Dans la base de données Oracle, il est courant que la table soit verrouillée, généralement à cause des utilisateurs effectuant des opérations sur les données. Les situations courantes de verrouillage de table incluent le verrouillage au niveau des lignes, le verrouillage au niveau des transactions et les opérations DDL. Ces situations seront présentées en détail ci-dessous et des exemples de codes correspondants seront donnés. Verrouillage au niveau des lignes : lorsqu'un utilisateur met à jour une table dans une transaction, la base de données verrouille la ligne de données correspondante pour empêcher d'autres transactions de modifier les données en même temps. Si la transaction n'est pas

See all articles