`
jsczxy2
  • 浏览: 1273608 次
  • 性别: 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中,数据...

    深入解析Oracle与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 服务器是否支持分区功能。 使用分区能有效管理和优化大数据量的表,但需要根据具体的应用场景和需求来选择合适的分区策略,同时也要考虑到对应用...

Global site tag (gtag.js) - Google Analytics