MySQL中Alter table 不长时间锁表的情况汇总。_MySQL
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支持)
详见官方文档说明:
bitsCN.com
For
ALTER TABLE <em class="replaceable"><code>tbl_name
RENAME TOnew_tbl_name
without any other options, MySQL simply renames any files that correspond to the tabletbl_name
without making a copy. (You can also use theRENAME TABLE
statement 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 ofNDBCLUSTER
online operations).Changing the definition of an
ENUM
orSET
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 aSET
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 withNDB
tables.ADD
orDROP
operations forRANGE
orLIST
partitions are immediate operations or nearly so.ADD
orCOALESCE
operations forHASH
orKEY
partitions copy data between changed partitions; unlessLINEAR HASH
orLINEAR KEY
was used, this is much the same as creating a new table (although the operation is done partition by partition).REORGANIZE
operations copy only changed partitions and do not touch unchanged ones.Renaming an index, except for
InnoDB
.Adding or dropping an index, for
InnoDB
(ifInnoDB Plugin
is used) andNDB
.

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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

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é...

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

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

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 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 ? 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
