`
jsczxy2
  • 浏览: 1269620 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

MySQL表分区功能

阅读更多

创建分区表

 
  1. CREATE TABLE `表名` (   
  2.     `EQUIPMENTID` char(17) NOT NULL,   
  3.     `ATTRIBUTEID` char(4) NOT NULL,   
  4.     `VALUE` varchar(20) NOT NULL,   
  5.     `COLLECTTIME` datetime NOT NULL  
  6. )    
  7. ENGINE=InnoDB (适用大部分引擎,可根据需要调整)   
  8. DEFAULT CHARSET=gbk(编码可根据需要修改)    
  9. PARTITION BY RANGE (to_days(COLLECTTIME))    
  10. (PARTITION pmin VALUES LESS THAN (to_days('2010-01-01')),   
  11. PARTITION p201001 VALUES LESS THAN (to_days('2010-02-01')) ,    
  12. PARTITION p201002 VALUES LESS THAN (to_days('2010-03-01')) ,   
  13. PARTITION p201003 VALUES LESS THAN (to_days('2010-04-01')) ,    
  14. PARTITION p201004 VALUES LESS THAN (to_days('2010-05-01')) ,   
  15. PARTITION p201005 VALUES LESS THAN (to_days('2010-06-01')) ,    
  16. PARTITION p201006 VALUES LESS THAN (to_days('2010-07-01')) ,   
  17. PARTITION p201007 VALUES LESS THAN (to_days('2010-08-01')) ,    
  18. PARTITION p201008 VALUES LESS THAN (to_days('2010-09-01')) ,   
  19. PARTITION p201009 VALUES LESS THAN (to_days('2010-10-01')) ,    
  20. PARTITION p201010 VALUES LESS THAN (to_days('2010-11-01')),   
  21. PARTITION p201011 VALUES LESS THAN (to_days('2010-12-01')),   
  22. PARTITION p201012 VALUES LESS THAN (to_days('2011-01-01')),   
  23. PARTITION p201101 VALUES LESS THAN (to_days('2011-02-01')),   
  24. PARTITION p201102 VALUES LESS THAN (to_days('2011-03-01')),   
  25. PARTITION p201103 VALUES LESS THAN (to_days('2011-04-01')),   
  26. PARTITION p201104 VALUES LESS THAN (to_days('2011-05-01')),   
  27. PARTITION p201105 VALUES LESS THAN (to_days('2011-06-01')),   
  28. PARTITION p201106 VALUES LESS THAN (to_days('2011-07-01')),   
  29. PARTITION p201107 VALUES LESS THAN (to_days('2011-08-01')),   
  30. PARTITION p201108 VALUES LESS THAN (to_days('2011-09-01')),   
  31. PARTITION p201109 VALUES LESS THAN (to_days('2011-10-01')),   
  32. PARTITION p201110 VALUES LESS THAN (to_days('2011-11-01')),   
  33. PARTITION p201111 VALUES LESS THAN (to_days('2011-12-01')),   
  34. PARTITION p201112 VALUES LESS THAN (to_days('2012-01-01')),   
  35. PARTITION pmax VALUES LESS THAN MAXVALUE );   


为现有表创建分区

 
  1. alter table 表名   
  2. PARTITION BY RANGE (to_days(COLLECTTIME))    
  3. (PARTITION pmin VALUES LESS THAN (to_days('2010-01-01')),   
  4. PARTITION p201001 VALUES LESS THAN (to_days('2010-02-01')) ,    
  5. PARTITION p201002 VALUES LESS THAN (to_days('2010-03-01')) ,   
  6. PARTITION p201003 VALUES LESS THAN (to_days('2010-04-01')) ,    
  7. PARTITION p201004 VALUES LESS THAN (to_days('2010-05-01')) ,   
  8. PARTITION p201005 VALUES LESS THAN (to_days('2010-06-01')) ,    
  9. PARTITION p201006 VALUES LESS THAN (to_days('2010-07-01')) ,   
  10. PARTITION p201007 VALUES LESS THAN (to_days('2010-08-01')) ,    
  11. PARTITION p201008 VALUES LESS THAN (to_days('2010-09-01')) ,   
  12. PARTITION p201009 VALUES LESS THAN (to_days('2010-10-01')) ,    
  13. PARTITION p201010 VALUES LESS THAN (to_days('2010-11-01')),   
  14. PARTITION p201011 VALUES LESS THAN (to_days('2010-12-01')),   
  15. PARTITION p201012 VALUES LESS THAN (to_days('2011-01-01')),   
  16. PARTITION p201101 VALUES LESS THAN (to_days('2011-02-01')),   
  17. PARTITION p201102 VALUES LESS THAN (to_days('2011-03-01')),   
  18. PARTITION p201103 VALUES LESS THAN (to_days('2011-04-01')),   
  19. PARTITION p201104 VALUES LESS THAN (to_days('2011-05-01')),   
  20. PARTITION p201105 VALUES LESS THAN (to_days('2011-06-01')),   
  21. PARTITION p201106 VALUES LESS THAN (to_days('2011-07-01')),   
  22. PARTITION p201107 VALUES LESS THAN (to_days('2011-08-01')),   
  23. PARTITION p201108 VALUES LESS THAN (to_days('2011-09-01')),   
  24. PARTITION p201109 VALUES LESS THAN (to_days('2011-10-01')),   
  25. PARTITION p201110 VALUES LESS THAN (to_days('2011-11-01')),   
  26. PARTITION p201111 VALUES LESS THAN (to_days('2011-12-01')),   
  27. PARTITION p201112 VALUES LESS THAN (to_days('2012-01-01')),   
  28. PARTITION pmax VALUES LESS THAN MAXVALUE );   


如果表中已有数据,分区时会自动进行分区存储,不必担心数据丢失或者手动分类数据.

 

删除表中的指定分区

 
  1. ALTER TABLE 表名 DROP PARTITION 分区名;   



追加表分区

 
  1. ALTER TABLE 表名 DROP PARTITION pmax;   
  2. ALTER TABLE 表名   
  3. ADD PARTITION (   
  4. PARTITION p201201 VALUES LESS THAN (to_days('2012-2-1')),   
  5. PARTITION pmax VALUES LESS THAN MAXVALUE);   


查看标分区信息

 
  1. SELECT    
  2.         partition_name part,     
  3.         partition_expression expr,     
  4.         partition_description descr,     
  5.         table_rows     
  6. FROM    
  7.         INFORMATION_SCHEMA.partitions     
  8. WHERE    
  9.         TABLE_SCHEMA = schema()    
  10.         AND TABLE_NAME='表名';   

查看查询语句涉及分区信息

 
  1. explain partitions   
  2. select … from 表名 where …;   


该操作只查看查询语句相关的分区信息,不会返回查询结果.

分享到:
评论

相关推荐

    mysql表分区

    在进行分区操作前,首先要确认当前数据库版本是否支持分区功能,可以使用查询语句 show variables like '%partition%' 来确认。 创建分区表时,需要在创建表语句中使用 PARTITION BY 子句,并指定分区的类型和规则...

    SQL Server 2005新特性之表分区的功能

    为了应对海量数据带来的挑战,SQL Server 2005引入了表分区功能。通过将表中的数据按照一定的规则分割存储在不同的物理位置(如不同的文件或文件组),可以显著提高查询性能,特别是在处理大量数据时。本文将详细...

    MySQL 5.5.8 分区表性能测试

    3. **维护操作**:MySQL 5.5.8还增强了对分区表的维护功能,例如ALTER TABLE和OPTIMIZE TABLE命令可以更快地完成对分区表的重构和优化。这对于数据量庞大的系统来说尤其关键,因为它允许在不影响业务运行的情况下...

    MySQL分区分表方案实践手册

    #### 三、MySQL分区表常用操作示例 接下来通过具体的示例来展示如何创建不同类型的分区表: 1. **创建RANGE分区**: - 基于员工工资创建范围分区:`CREATE TABLE emp (empno VARCHAR(20) NOT NULL, empname ...

    MySQL5.1新功能-分区

    总的来说,MySQL 5.1的分区功能是数据库管理的一个重要里程碑,它为处理海量数据提供了有效手段。正确地设计和使用分区策略,可以帮助企业更好地应对大数据时代的挑战。如果你想要深入了解这一主题,可以阅读“MySQL...

    MySQL中创建数据表Range分区.pdf

    在介绍MySQL中创建数据表的Range分区之前,首先需要了解分区的概念。...文档内容通过实例介绍了创建Range分区的方法,同时揭示了在实际应用中应该注意的要点,帮助数据库管理员或者开发者更有效地利用MySQL的分区功能。

    MYSQL 通过分区(Partition)提升MySQL性能

    本文将深入探讨如何利用MySQL中的分区功能来提升数据库性能,主要关注MySQL 5.1版本及其之后支持的分区特性。 #### 分区的概念与作用 分区是指将一个大的表物理上分成多个更小的部分,这些部分称为分区。通过合理...

    mysql分区文档

    - MySQL 5.1 和 5.5 版本开始支持分区功能,确保数据库版本支持分区操作。 - 分区策略的选择应基于实际业务需求和数据分布情况。 - 不是所有表都适合分区,小表或查询条件不涉及分区字段的表分区效果可能不明显。 - ...

    MySQL自动分区扩展

    最近需要把一个oralce数据库向mysql数据库移植。oracle库用到了job和存储过程,因为mysql中没有job,所有要用新功能event代替一下,这个是5.1以后才有的新功能,所以稍微研究了一下。

    MySQL分区实战

    #### 一、MySQL分区概述与应用场景 在当今互联网行业中,MySQL数据库作为最常用的关系型数据库之一,在数据管理方面扮演着极其重要的角色。随着数据量的不断增长,对数据库性能的要求也日益提高。为了提高查询效率...

    MYSQL5.1表分区初探[参考].pdf

    在MySQL 5.1版本中,分区功能得到了全面支持,尽管当时官方还未推荐将其用于生产环境。 分区的主要优点包括: 1. 数据存储能力增强:相比于单一的磁盘或文件系统分区,分区可以容纳更多数据。 2. 管理简化:对大表...

    mysql分区功能详解,以及实例分析

    以下是关于MySQL分区功能的详细解释和实例分析: 一、什么是数据库分区 数据库分区是将一张大表逻辑上视为一个整体,但在物理存储上将其分散到不同的磁盘或文件组中,以便更有效地管理和访问数据。在MySQL中,数据...

    数据库表分区工具1.2

    在"数据库表分区工具1.2"中,用户可能会遇到以下功能: 1. **图形化界面**:直观的界面让用户可以通过拖拽或填写字段轻松配置分区。 2. **预览与验证**:工具提供预览功能,用户可以在执行SQL前检查分区设置,避免...

    mysql分区.pdf

    MySQL分区是数据库管理系统MySQL中的一种数据存储管理技术,它允许用户将数据表拆分成多个较小的、更容易管理的片段。这些片段被称为分区。通过这种技术可以提高数据库的性能,便于维护和备份,并且可以对不同分区...

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

    MySQL 数据库是一个广泛使用的开源关系型数据库管理系统,尤其在 PHP Web 开发中极其...在确认 MySQL 服务器支持分区功能后(通过 `SHOW VARIABLES LIKE '%partition%'` 查询),可以进一步考虑分区的具体实现方式。

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

    通过 `SHOW VARIABLES LIKE '%partition%'` 命令,可以检查 MySQL 服务器是否支持分区功能。 使用分区能有效管理和优化大数据量的表,但需要根据具体的应用场景和需求来选择合适的分区策略,同时也要考虑到对应用...

    Oracle10个分区和Mysql分区区别详解

    总的来说,Oracle 的分区功能更为强大,提供了更丰富的分区策略和组合方式,适合大型企业级应用。MySQL 的分区虽然简单,但在满足基本的分区需求和性能优化上依然有效,更适合中小型企业或开发环境。选择哪种分区...

    MySQL中表分区技术详细解析

    MySQL 5.1 中新增的分区(Partition)功能就开始增加,优势也越来越明显了: 与单个磁盘或文件系统分区相比,可以存储更多的数据 很容易就能删除不用或者过时的数据 一些查询可以得到极大的优化 涉及到 SUM()/...

Global site tag (gtag.js) - Google Analytics