search
HomeDatabaseMysql TutorialMySQL的DDL维护技巧

mysql在做表的ddl维护时(如添加字段),是要锁表的,不像oracle那样只更新字典表、巨快,这是因为mysql采用中间表的方式来实现,在

mysql的ddl维护技巧

mysql在做表的ddl维护时(如添加字段),是要锁表的,不像Oracle那样只更新字典表、巨快,这是因为mysql采用中间表的方式来实现

ddl操作流程:
A.对表加锁(表此时只读)
B.复制原表物理结构
C.修改表的物理结构
D.把原表数据导入中间表中,数据同步完后,锁定中间表,并删除原表
E.rename中间表为原表
F.刷新数据字典,并释放锁

通过上面的过程可以了解到,表的数据量越大,这个ddl维护过程越耗时间(锁表时间越长)。

表ddl维护方法
1.直接alter table操作
eg:
alter table tt4 add column age2 tinyint unsigned  not null  default 0 ;
alter table tt4 modify column age2 tinyint unsigned  not null  default 0 ;
alter table tt4 drop column age2;

但是这种方法只适合表的比较下,业务不忙的环境,为ddl操作更快,可以更改session的环境变量
 增加SESSION级别的 sort_buffer_size 值,以加速DDL过程需要做的排序操作;
 增加SESSION级别的 read_buffer_size 值,增加顺序读的速度;
 增加SESSION级别的 tmp_table_size 和 max_heap_table_size值,增加内存缓存数据的能力;
 若是存在InnoDB引擎转MyISAM的操作,建议在线增加key_buffer_size的值,增加索引数据的缓存能力;

添加字段
1).增加字段必须要有默认值,非NULL且有默认值的字段属性,有利于提高数据检索的性能,更加有利于索引结构的优化
2).增加的字段不能指定字段顺序,必须在尾部增加;否则会需要更多时间用于数据重整,并且在复制时也可能造成数据错乱

例如:
alter table tt4 add column age2 tinyint unsigned  not null  default 0 ;

绝对禁止:alter table tt4 add column age2 tinyint unsigned  not null  default 0 first;

同一表增加多个字段,不分多条语句,而应只用一条变更语句(在创建多条索引时,也采用这种方式)

alter table tt4
  add column age1 tinyint unsigned  not null  default 0,
  add column age2 tinyint unsigned  not null  default 0; 
 
2.新增维度表用于添加字段
不修改原表,把增加的字段放入维度表中,可以通过修改业务逻辑或表关联来读取数据,但这种方式对于性能和日维护是有有影响的。在设计之初,表上增加几个保留字段也是不错的想法,但毕竟有限。

3.通过中间表+触发器的方式实现
比如更新表a 
 1).lock表a,创建触发器,把更新数据(insert,update,delete)放进中间表
 2).释放锁
 3).然后复制表a的物理结构a_bak,并修改ddl,然后copy数据
 4).数据复制完后,再锁表a。然后把中间表的数据同步到a_bak中,然后锁住a_bak
 5).然后重命名a_bak为原表a
 6).检查无误后删除原表a

4.因应用而维护表的ddl操作注意事项
 1).在优化索引时,要优先程序发布,而且待测试后,再删除多余索引
 2).增加字段或扩大字段值域,必须优先程序发布
 3).在更改字段的数据类型时,和程序同时发布因为这是是一个需要停机维护操作的。
 4).在有停机条件,就停机维护;没停机条件要选择业务空闲维护ddl

5.drop table原理分析与操作技巧
在InnoDB缓冲池很大且充满页面时,在drop table时,,会使整个系统hang住,这是因为这期间mysql要两次遍历buffer pool LRU链表,遍历的时候会加锁导致系统hang住,而且buffer pool越大,hang的时间越长。

linux

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Explain the InnoDB Buffer Pool and its importance for performance.Explain the InnoDB Buffer Pool and its importance for performance.Apr 19, 2025 am 12:24 AM

InnoDBBufferPool reduces disk I/O by caching data and indexing pages, improving database performance. Its working principle includes: 1. Data reading: Read data from BufferPool; 2. Data writing: After modifying the data, write to BufferPool and refresh it to disk regularly; 3. Cache management: Use the LRU algorithm to manage cache pages; 4. Reading mechanism: Load adjacent data pages in advance. By sizing the BufferPool and using multiple instances, database performance can be optimized.

MySQL vs. Other Programming Languages: A ComparisonMySQL vs. Other Programming Languages: A ComparisonApr 19, 2025 am 12:22 AM

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages ​​such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages ​​have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

Learning MySQL: A Step-by-Step Guide for New UsersLearning MySQL: A Step-by-Step Guide for New UsersApr 19, 2025 am 12:19 AM

MySQL is worth learning because it is a powerful open source database management system suitable for data storage, management and analysis. 1) MySQL is a relational database that uses SQL to operate data and is suitable for structured data management. 2) The SQL language is the key to interacting with MySQL and supports CRUD operations. 3) The working principle of MySQL includes client/server architecture, storage engine and query optimizer. 4) Basic usage includes creating databases and tables, and advanced usage involves joining tables using JOIN. 5) Common errors include syntax errors and permission issues, and debugging skills include checking syntax and using EXPLAIN commands. 6) Performance optimization involves the use of indexes, optimization of SQL statements and regular maintenance of databases.

MySQL: Essential Skills for Beginners to MasterMySQL: Essential Skills for Beginners to MasterApr 18, 2025 am 12:24 AM

MySQL is suitable for beginners to learn database skills. 1. Install MySQL server and client tools. 2. Understand basic SQL queries, such as SELECT. 3. Master data operations: create tables, insert, update, and delete data. 4. Learn advanced skills: subquery and window functions. 5. Debugging and optimization: Check syntax, use indexes, avoid SELECT*, and use LIMIT.

MySQL: Structured Data and Relational DatabasesMySQL: Structured Data and Relational DatabasesApr 18, 2025 am 12:22 AM

MySQL efficiently manages structured data through table structure and SQL query, and implements inter-table relationships through foreign keys. 1. Define the data format and type when creating a table. 2. Use foreign keys to establish relationships between tables. 3. Improve performance through indexing and query optimization. 4. Regularly backup and monitor databases to ensure data security and performance optimization.

MySQL: Key Features and Capabilities ExplainedMySQL: Key Features and Capabilities ExplainedApr 18, 2025 am 12:17 AM

MySQL is an open source relational database management system that is widely used in Web development. Its key features include: 1. Supports multiple storage engines, such as InnoDB and MyISAM, suitable for different scenarios; 2. Provides master-slave replication functions to facilitate load balancing and data backup; 3. Improve query efficiency through query optimization and index use.

The Purpose of SQL: Interacting with MySQL DatabasesThe Purpose of SQL: Interacting with MySQL DatabasesApr 18, 2025 am 12:12 AM

SQL is used to interact with MySQL database to realize data addition, deletion, modification, inspection and database design. 1) SQL performs data operations through SELECT, INSERT, UPDATE, DELETE statements; 2) Use CREATE, ALTER, DROP statements for database design and management; 3) Complex queries and data analysis are implemented through SQL to improve business decision-making efficiency.

MySQL for Beginners: Getting Started with Database ManagementMySQL for Beginners: Getting Started with Database ManagementApr 18, 2025 am 12:10 AM

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Atom editor mac version download

Atom editor mac version download

The most popular open source editor