`
gaojingsong
  • 浏览: 1182589 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

MYSQL分区技术(二)--分区管理

阅读更多

1、删除分区:
删除分区,数据也没有了
alter table emp_age_range drop partition p1;

mysql> select * from emp_age_range;
+-------+----------+--------+------+
| empno | empname  | deptno | age  |
+-------+----------+--------+------+
| 001   | zhangsan |      1 |    8 |
| 002   | zhang2   |      1 |   15 |
| 003   | zhang3   |      1 |   20 |
+-------+----------+--------+------+
3 rows in set (0.00 sec)

mysql> alter table emp drop partition p1;
ERROR 1146 (42S02): Table 'test.emp' doesn't exist
mysql> alter table emp_age_range drop partition p1;
Query OK, 0 rows affected (0.21 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from emp_age_range;
+-------+---------+--------+------+
| empno | empname | deptno | age  |
+-------+---------+--------+------+
| 002   | zhang2  |      1 |   15 |
| 003   | zhang3  |      1 |   20 |
+-------+---------+--------+------+
2 rows in set (0.00 sec)

 

不可以删除hash或者key分区。
一次性删除多个分区
alter table emp_birthdate_key drop partition p1;

mysql> show create table  emp_birthdate_key;
+-------------------+------------------------------------------------------+
| Table             | Create Table                                                                                                                                                                                                                                                                                        |
+-------------------+----------------------------------------------+
| emp_birthdate_key | CREATE TABLE `emp_birthdate_key` (
  `empno` varchar(20) NOT NULL,
  `empname` varchar(20) DEFAULT NULL,
  `deptno` int(11) DEFAULT NULL,
  `birthdate` date NOT NULL,
  `salary` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (birthdate)
PARTITIONS 4 */ |
+-------------------+--------------------------------+
1 row in set (0.00 sec)
mysql> alter table emp_birthdate_key drop partition p1;
ERROR 1512 (HY000): DROP PARTITION can only be used on RANGE/LIST partitions

 

2、删除表的所有分区:--不会丢失数据
alter table emp_age_range remove partitioning;


mysql> alter table emp_age_range remove partitioning;
Query OK, 2 rows affected (0.18 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from emp_age_range;
+-------+---------+--------+------+
| empno | empname | deptno | age  |
+-------+---------+--------+------+
| 002   | zhang2  |      1 |   15 |
| 003   | zhang3  |      1 |   20 |
+-------+---------+--------+------+
2 rows in set (0.00 sec)
mysql> show create table emp_age_range;
+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table         | Create Table                                                                                                                                                                                              |
+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| emp_age_range | CREATE TABLE `emp_age_range` (
  `empno` varchar(20) NOT NULL,
  `empname` varchar(20) DEFAULT NULL,
  `deptno` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

分区没有了,数据还存在

 

 

3、重新定义range分区表:----不会丢失数据
alter table emp_age_range partition by range(age)
(
partition p1 values less than (10),
partition p2 values less than (25)
);

mysql> alter table emp_age_range add partition (partition p1 values less than (10));
ERROR 1505 (HY000): Partition management on a not partitioned table is not possible

不是分区表不能add分区
mysql> Alter table emp_age_range partition by range(age)
    -> (
    -> partition p1 values less than (10),
    -> partition p2 values less than (20)
    -> );
ERROR 1526 (HY000): Table has no partition for value 20

分区不能盛放已经有的值
mysql> Alter table emp_age_range partition by range(age) ( partition p1 values less than (10), partition p2 values less than (25) );
Query OK, 2 rows affected (0.24 sec)
Records: 2  Duplicates: 0  Warnings: 0

 


4、增加分区:
alter table emp_age_range add partition (partition p1 values less than (30));
alter table emp_age_range add partition (partition p3 values in (40));
mysql> alter table emp_age_range add partition (partition p3 values less than (30));
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table emp_age_range;
+---------------+--------------------------------------------------------------------------------------------------+
| Table         | Create Table                                                                                                                                                                                                                                                                                                                                                                                                  |
+---------------+----------------------------------------------------------------------------------------------------+
| emp_age_range | CREATE TABLE `emp_age_range` (
  `empno` varchar(20) NOT NULL,
  `empname` varchar(20) DEFAULT NULL,
  `deptno` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (age)
(PARTITION p1 VALUES LESS THAN (10) ENGINE = InnoDB,
 PARTITION p2 VALUES LESS THAN (25) ENGINE = InnoDB,
 PARTITION p3 VALUES LESS THAN (30) ENGINE = InnoDB) */ |
+---------------+-------------------------------------------------------------+
1 row in set (0.00 sec)

0
0
分享到:
评论

相关推荐

    MySQL5.1新功能-分区

    MySQL 5.1引入了分区这一重要特性,它极大地增强了数据库的管理和性能。...如果你想要深入了解这一主题,可以阅读“MySQL 5.1新功能-分区.pdf”文档,其中会详细讲解如何在实际环境中应用这些概念和技术。

    mysql-存储分区-实验八.docx

    MySQL存储分区是数据库管理系统中一种优化查询性能和管理大量数据的技术。通过将大表分成多个较小、更易管理和处理的部分,存储分区可以提高查询效率,减少维护成本,并有助于数据的组织和备份。以下是对实验内容的...

    mysql-connector-java-5.1.37-jar

    5. 兼容MySQL服务器的新特性:如支持分区表、存储过程、触发器等。 使用"mysql-connector-java-5.1.37.jar"的步骤通常如下: 1. 将JAR文件添加到Java项目的类路径中,可以是构建工具(如Maven或Gradle)的依赖,也...

    windows版mysql安装包-mysql5-mysql-5.5.zip

    - **分区功能增强**: 支持更多的分区策略,提高大数据量表的管理效率。 - **性能分析工具**: 如Performance Schema,帮助监控和优化数据库性能。 6. **MySQL Workbench使用** MySQL Workbench是一款图形化管理...

    mysql80-community-release-el8-1.noarch.7z

    MySQL 8.0 社区版是开源的关系型数据库管理系统,专为开发人员和企业提供高效、可靠的数据库解决方案。"mysql80-community-release-el8-1.noarch.7z" 文件是一个针对 Red Hat Enterprise Linux 8 和 Oracle Linux 8 ...

    MySQL-client-5.6.29-1.linux_glibc2.5.x86_64,MySQL-server-5.6.29-1.linux_glibc

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,主要用于存储和管理结构化数据。本压缩包包含的是MySQL的客户端和服务器端的5.6.29版本,适用于Linux_glibc2.5.x86_64架构。这个版本在当时是MySQL的一个稳定版本...

    mysql-connector-java-5.1.49.tar.gz

    MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java-5.1.49.tar.gz`是一个用于连接Java应用程序与MySQL数据库的驱动包。这个压缩文件包含了JDBC(Java Database Connectivity)驱动,使得...

    mysql-cluster-8.0.20-winx64.zip

    7. **管理工具**:MySQL Cluster提供了一系列管理工具,如`ndb_mgm`用于集群管理,`mysql`客户端用于SQL操作,`mysqladmin`用于服务器控制等。 8. **性能调优**:优化MySQL Cluster涉及到参数调整,例如内存分配、...

    mysql-installer-community-8.0.28.0 MySql数据库安装包

    8. **分区改进**:MySQL 8.0对分区功能进行了优化,提供了更多的分区策略,使得大数据管理和查询更高效。 9. **查询优化器改进**:新的优化器策略和统计信息收集方法,使得MySQL能更准确地选择最佳执行计划。 **...

    mysql-connector-j-8.0.31

    此外,它还支持MySQL的特性,如SSL连接、分区表、复制和负载均衡。 总结来说,"mysql-connector-j-8.0.31"是Java开发者连接MySQL数据库的关键组件,通过理解JDBC机制和有效使用这个驱动,可以实现高效、安全的...

    mysql如何进行分区-mysql分区有哪些方法.pdf

    针对大规模数据存储,MySQL 提供了一种高效的管理策略——分区(Partitioning),这有助于提高查询性能,尤其是在处理海量数据时。分区是将一个大表划分为逻辑上独立的部分,每个部分(或称为分区)可以在物理上分散...

    mysql-connector-java-5.0.8-bin.jar

    7. **支持多种数据库特性**:如存储过程、触发器、视图等,以及MySQL特有的特性如分区表、全文索引等。 在实际应用中,开发者通常将mysql-connector-java-5.0.8-bin.jar添加到项目的类路径中,然后通过以下代码示例...

    mysql for Linux (mysql-standard-4.1.22-pc-linux-gnu-i686.tar.gz )

    MySQL有许多性能优化策略,包括创建索引、调整查询语句、使用分区表、启用缓存等。MySQL还支持复制技术,可以实现主从复制,提高可用性和扩展性。 总结,`mysql-standard-4.1.22-pc-linux-gnu-i686.tar.gz` 是Linux...

    mysql5.5.28-win-x64

    3. **分区功能**:MySQL 5.5增强了分区功能,支持更多的分区类型和策略,如线性哈希分区、范围分区等,这有助于管理和优化大型表的性能。 4. **Full-text Search**:全文搜索功能在5.5版本中得到了增强,支持更多的...

    mysql如何进行分区-mysql分区有哪些方法.docx

    为了解决这一问题,MySQL 提供了分区(Partitioning)功能,以提高查询效率和管理大量数据的能力。 分区是将一个大表逻辑上划分为多个独立的部分,每个部分称为一个分区,可以分布在不同的物理存储上。这样做有以下...

    mysql-connector-java-5.1.25.jar免费下载

    它还支持MySQL的一些高级功能,如分区表、复制、InnoDB事务隔离级别等。 值得注意的是,虽然`5.1.25`是一个较旧的版本,但它是稳定可靠的,并且兼容大多数的Java和MySQL环境。然而,对于新的项目或升级,建议使用...

    mysql-installer-community-5.6.msi安装版

    - **分区优化**:MySQL 5.6 对分区表的支持更加完善,包括对分区表的索引优化、分区裁剪等,这些改进使得分区表的查询速度更快。 - **InnoDB 存储引擎增强**:InnoDB 是 MySQL 最常用的事务安全存储引擎之一,在 ...

    mysql-connector-odbc-3.51.26-win32支持MYSQL5.0以上版本

    此外,MySQL 5.0还引入了分区表,这有助于大规模数据处理和查询性能的提升。 ODBC驱动程序在多种场景下都很有用,如在开发基于Windows的应用程序时,可以使用支持ODBC的编程语言(如C++、VB、Python等)编写应用...

    mysql-cluster-gpl-7.2.4-win32

    4. 集群管理:MySQL Cluster管理程序(NDB Management Server,简称NMDS)负责协调和监控集群的运行状态,执行配置变更,并确保所有节点同步。 5. SQL接口:MySQL Cluster不仅支持NDB存储引擎,还保留了传统的...

Global site tag (gtag.js) - Google Analytics