如果想在已经建好的表上进行分区,如果使用alter添加分区的话,mysql会提示错误:
ERROR 1505 <HY000> Partition management on a not partitioned table is not possible
正确的方法是
新建一个具有分区的表,结构一致,然后用
insert into 分区表 select * from 原始表;
测试创建分区表文件CREATE TABLE tr (id INT, name VARCHAR(50), purchased DATE)
PARTITION BY RANGE(YEAR(purchased))
(
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (1995),
PARTITION p2 VALUES LESS THAN (2000),
PARTITION p3 VALUES LESS THAN (2005)
);
插入测试数据INSERT INTO tr VALUES
(1, 'desk organiser', '2003-10-15'),
(2, 'CD player', '1993-11-05'),
(3, 'TV set', '1996-03-10'),
(4, 'bookcase', '1982-01-10'),
(5, 'exercise bike', '2004-05-09'),
(6, 'sofa', '1987-06-05'),
(7, 'popcorn maker', '2001-11-22'),
(8, 'aquarium', '1992-08-04'),
(9, 'study desk', '1984-09-16'),
(10, 'lava lamp', '1998-12-25');
查询P2中的数据select * from tr where purchased between '1995-01-01' and '2004-12-31';
如果删除P2,在删除P2分区的同时,也会将其下的所有数据删除alter table tr drop partition p2;
show create table tr;
CREATE TABLE `tr` (
`id` int(11) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL,
`purchased` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (YEAR(purchased))
(PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM,
PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM) */
再次插入数据时,会将原P2的数据插入至P3中
INSERT INTO tr VALUES (11, 'pencil holder', '1995-07-12');
ALTER TABLE tr DROP PARTITION p3;
SELECT * FROM tr WHERE purchased BETWEEN '1995-01-01' AND '2004-12-31';
创建一个新的测试表
CREATE TABLE members (
id INT,
fname VARCHAR(25),
lname VARCHAR(25),
dob DATE
)
PARTITION BY RANGE(YEAR(dob)) (
PARTITION p0 VALUES LESS THAN (1970),
PARTITION p1 VALUES LESS THAN (1980),
PARTITION p2 VALUES LESS THAN (1990)
);
直接用alter table tablename add partition 方式再最后面添加分区
ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
ALTER TABLE members reorganize partition p0 into (
partition m0 values less than (1960),
partition m1 values less than (1970)
);
show create table members;
CREATE TABLE `members` (
`id` int(11) DEFAULT NULL,
`fname` varchar(25) DEFAULT NULL,
`lname` varchar(25) DEFAULT NULL,
`dob` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (YEAR(dob))
(PARTITION m0 VALUES LESS THAN (1960) ENGINE = MyISAM,
PARTITION m1 VALUES LESS THAN (1970) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (1980) ENGINE = MyISAM,
PARTITION p2 VALUES LESS THAN (1990) ENGINE = MyISAM,
PARTITION p3 VALUES LESS THAN (2000) ENGINE = MyISAM) */
使用 REORGANIZE PARTITION进行数据的合并与拆分,数据是没有丢失的。
(详细出处参考:http://www.jb51.net/article/42544.htm)
如果用此方式在之前添加会报错,只能用另一种合并拆分分区的方式操作。
分享到:
相关推荐
本文主要关注的是如何在MySQL中对已有的表进行新增分区的操作。 首先,当我们想要在已经建立好的非分区表上添加分区时,直接使用`ALTER TABLE`语句会报错,因为MySQL不支持直接在非分区表上进行分区管理。正确的...
然而,值得注意的是,尽管MySQL分区提供了许多优势,但在实际应用中,需要根据具体业务需求和查询模式来决定是否使用分区,以及如何设计分区策略。在创建分区表后,可以通过调整分区方案来优化常见查询的性能。此外...
MySQL自动化分区脚本
- **新特性简介**:MySQL 5.7 引入了对 JSON 数据类型的原生支持,这包括了一个专门用于存储 JSON 数据的新数据类型以及一系列用于操作 JSON 数据的内置函数。 - **JSON 数据类型**:MySQL 5.7 提供了 `JSON` 类型,...
在这个场景中,我们关注的是如何使用SSIS将SQL Server的数据转移到MySQL数据库中,并进行更新和新增操作。 首先,SSIS的工作流程通常涉及以下几个步骤: 1. **设计数据流任务**:在SSIS项目中,创建一个数据流任务...
MySQL 5.1 中新增的分区(Partition)功能就开始增加,优势也越来越明显了: 与单个磁盘或文件系统分区相比,可以存储更多的数据 很容易就能删除不用或者过时的数据 一些查询可以得到极大的优化 涉及到 SUM()/...
MySQL分区表是一种高效管理大数据量的存储策略,它允许将一个大表分成多个较小的、更易管理和处理的部分。在本文中,我们将探讨MySQL分区表的使用方法,特别是关于如何新增分区、删除分区以及对分区进行合并和拆分。...
1. **InnoDB存储引擎**:MySQL 5.7默认的存储引擎是InnoDB,它支持事务处理、行级锁定以及外键约束,这使得InnoDB成为处理并发操作和确保数据完整性的理想选择。5.7版本中,InnoDB在性能方面有所提升,例如更快的...
2. **窗口函数**:新增的窗口函数为数据分析和聚合操作提供了更强大的工具,比如`RANK()`, `LEAD()`, `LAG()`, 和 `OVER()`等,使得无需编写复杂的子查询或自连接就能实现高级排序和计算。 3. **JSON支持**:MySQL ...
- **分区表支持**:支持对表进行水平分割,便于管理大规模数据集。 - **JSON数据类型支持**:引入了JSON数据类型,允许在数据库中直接存储和操作JSON格式的数据。 - **性能监视器**:提供了性能监视器...
1. **检查新增磁盘**:使用`fdisk -l`来检查是否有未分区的新磁盘。 2. **分区**:使用`fdisk /dev/sdb`对磁盘进行分区(假设磁盘设备名为/dev/sdb)。 3. **格式化**:格式化新建分区,如`mkfs.ext4 /dev/sdb1`。 4...
8. **更强大的分区功能**:MySQL 8.0扩展了表分区功能,支持更多类型的分区策略,如线性哈希分区,有助于管理大规模数据。 9. **更友好的系统变量和配置**:对系统变量进行了整理和简化,使得配置更加直观和易于...
本教程将详细介绍MySQL分区表的基本概念、分区类型、分区命令以及操作注意事项和常见问题。 1. **前言** 在处理大数据量的场景中,分区表能够提升查询效率,因为它允许数据分散在多个物理存储单元上,从而加速数据...
MySQL的特性包括支持事务处理、存储过程、触发器、视图等高级特性,以及复制、分区、集群、存储引擎等多种功能。此外,MySQL还支持多种存储引擎,如InnoDB、MyISAM、Memory、CSV等,每种引擎都有其特定的优势和用途...
相应的,MySQL 5.0驱动也进行了更新,以支持这些新增功能。在PowerBuilder中,你需要确保使用与目标数据库版本兼容的驱动,这样才能充分利用所有可用特性。 在使用PB进行不同数据库的导入时,选择正确的驱动至关...
安装完成后,可以通过命令行或图形界面工具(如 MySQL Workbench)进行数据库管理,包括创建数据库、导入导出数据、执行 SQL 查询等操作。 总之,MySQL Community Server 8.0.29 为 Windows 用户提供了一个强大、...
同时,分区表的维护操作如添加、删除分区也变得更加简便。 四、安全性和审计 MySQL 5.5增强了安全管理,包括更严格的权限控制、加密连接支持(如SSL)以及审计插件,允许管理员跟踪和记录数据库活动,从而提高合规...