Home Database Mysql Tutorial MySQL分区表的管理~2_MySQL

MySQL分区表的管理~2_MySQL

May 27, 2016 pm 01:46 PM
Partition Table

一、维护分区

 

对于表的维护,我们一般有如下几种方式: CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE和REPAIR TABLE。

 

而这几种方式,对于分区同样适用。下面,我们一一阐述各种的作用。

 

1. Rebuilding partitions

 

重建分区,它相当于先删除分区中的数据,然后重新插入。这个主要是用于分区的碎片整理。

 

譬如:

 

ALTER TABLE t1 REBUILD PARTITION p0, p1;

2. Optimizing partitions

 

该命令主要是用于回收空闲空间和分区的碎片整理。对分区执行该命令,相当于依次对分区执行 CHECK PARTITION, ANALYZE PARTITION,REPAIR PARTITION命令。

 

譬如:

 

ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;

注意:

 

一些存储引擎,譬如InnoDB,并不支持基于分区的Optimizing。当你执行该命令时,会rebuild整张表,在 MySQL 5.6.9版本以上,执行该命令会导致整张表被rebuild和analyze。在这种情况下,建议直接使用 ALTER TABLE ... REBUILD PARTITION 或 ALTER TABLE ... ANALYZE PARTITION。

 

3. Analyzing partitions

 

读取和存储分区中值的分布情况

 

ALTER TABLE t1 ANALYZE PARTITION p3;

4.  Repairing partitions

 

修复被破坏的分区

 

ALTER TABLE t1 REPAIR PARTITION p0,p1;

5. Checking partitions

 

检查分区是否存在错误

 

ALTER TABLE trb3 CHECK PARTITION p1;

注意:

 

1> mysqlcheck和myisamchk并不支持分区表

 

2> 上述分区名也可用all替代,指的是对所有分区进行操作。

 

3> ANALYZE, CHECK, OPTIMIZE, REBUILD, REPAIR和TRUNCATE命令并不适用于子分区。

 

 

 

二、如何获取分区的相关信息

 

1. 通过 SHOW CREATE TABLE 语句来查看分区表的分区子句

 

譬如:

 

 

mysql> show create table e\G

*************************** 1. row ***************************

       Table: e

Create Table: CREATE TABLE `e` (

  `id` int(11) NOT NULL,

  `fname` varchar(30) DEFAULT NULL,

  `lname` varchar(30) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!50100 PARTITION BY RANGE (id)

(PARTITION p0 VALUES LESS THAN (50) ENGINE = InnoDB,

 PARTITION p1 VALUES LESS THAN (100) ENGINE = InnoDB,

 PARTITION p2 VALUES LESS THAN (150) ENGINE = InnoDB,

 PARTITION p3 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */

1 row in set (0.00 sec)

 

2. 通过 SHOW TABLE STATUS 语句来查看表是否分区

 

对应Create_options字段,譬如:

 

 

mysql> show table status\G

*************************** 1. row ***************************

           Name: e

         Engine: InnoDB

        Version: 10

     Row_format: Compact

           Rows: 6

 Avg_row_length: 10922

    Data_length: 65536

Max_data_length: 0

   Index_length: 0

      Data_free: 0

 Auto_increment: NULL

    Create_time: 2015-12-07 22:26:06

    Update_time: NULL

     Check_time: NULL

      Collation: latin1_swedish_ci

       Checksum: NULL

 Create_options: partitioned

        Comment: 

 

3. 查看 INFORMATION_SCHEMA.PARTITIONS表

 

4. 通过 EXPLAIN PARTITIONS SELECT 语句查看对于具体的SELECT语句,会访问哪个分区。

 

 

 

三、分区交换

 

分区交换的语法如下:

 

ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt

其中,pt是分区表,p是pt的分区(注:也可以是子分区),nt是目标表。

 

其实,分区交换的限制还是蛮多的:

 

1> nt不能为分区表

 

2> nt不能为临时表

 

3> nt和pt的结构必须一致

 

4> nt不存在任何外键约束,即既不能是主键,也不能是外键。

 

5> nt中的数据不能位于p分区的范围之外。

Statement of this Website
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

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

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

When might a full table scan be faster than using an index in MySQL? When might a full table scan be faster than using an index in MySQL? Apr 09, 2025 am 12:05 AM

Full table scanning may be faster in MySQL than using indexes. Specific cases include: 1) the data volume is small; 2) when the query returns a large amount of data; 3) when the index column is not highly selective; 4) when the complex query. By analyzing query plans, optimizing indexes, avoiding over-index and regularly maintaining tables, you can make the best choices in practical applications.

Explain InnoDB Full-Text Search capabilities. Explain InnoDB Full-Text Search capabilities. Apr 02, 2025 pm 06:09 PM

InnoDB's full-text search capabilities are very powerful, which can significantly improve database query efficiency and ability to process large amounts of text data. 1) InnoDB implements full-text search through inverted indexing, supporting basic and advanced search queries. 2) Use MATCH and AGAINST keywords to search, support Boolean mode and phrase search. 3) Optimization methods include using word segmentation technology, periodic rebuilding of indexes and adjusting cache size to improve performance and accuracy.

Can I install mysql on Windows 7 Can I install mysql on Windows 7 Apr 08, 2025 pm 03:21 PM

Yes, MySQL can be installed on Windows 7, and although Microsoft has stopped supporting Windows 7, MySQL is still compatible with it. However, the following points should be noted during the installation process: Download the MySQL installer for Windows. Select the appropriate version of MySQL (community or enterprise). Select the appropriate installation directory and character set during the installation process. Set the root user password and keep it properly. Connect to the database for testing. Note the compatibility and security issues on Windows 7, and it is recommended to upgrade to a supported operating system.

Difference between clustered index and non-clustered index (secondary index) in InnoDB. Difference between clustered index and non-clustered index (secondary index) in InnoDB. Apr 02, 2025 pm 06:25 PM

The difference between clustered index and non-clustered index is: 1. Clustered index stores data rows in the index structure, which is suitable for querying by primary key and range. 2. The non-clustered index stores index key values ​​and pointers to data rows, and is suitable for non-primary key column queries.

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

How do you handle large datasets in MySQL? How do you handle large datasets in MySQL? Mar 21, 2025 pm 12:15 PM

Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

MySQL: Simple Concepts for Easy Learning MySQL: Simple Concepts for Easy Learning Apr 10, 2025 am 09:29 AM

MySQL is an open source relational database management system. 1) Create database and tables: Use the CREATEDATABASE and CREATETABLE commands. 2) Basic operations: INSERT, UPDATE, DELETE and SELECT. 3) Advanced operations: JOIN, subquery and transaction processing. 4) Debugging skills: Check syntax, data type and permissions. 5) Optimization suggestions: Use indexes, avoid SELECT* and use transactions.

The relationship between mysql user and database The relationship between mysql user and database Apr 08, 2025 pm 07:15 PM

In MySQL database, the relationship between the user and the database is defined by permissions and tables. The user has a username and password to access the database. Permissions are granted through the GRANT command, while the table is created by the CREATE TABLE command. To establish a relationship between a user and a database, you need to create a database, create a user, and then grant permissions.

See all articles