Home > MySQL分区
  • 【分享】Mysql分区表的管理与维护

    改变一个表的分区方案只需使用alter table 加 partition_options 子句就可以了。和创建分区表时的create table语句很像 创建分区表: CREATE TABLE trb3 ( 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) ); 创建插入数据存储过程: delimiter $$ drop procedure if exists pr_trb3$$ create procedure pr_trb3...
    阅读全文 →
  • 【案例】MySQL5.6分区数量太多引发的血案

    一个月之前,Scott和同事们发现公司有一个MySQL MHA集群的master(假设master机器名为hostA)每隔一周左右就会挂一次(指MySQL挂掉),在几周内,MHA来回切了好几次。 按照国际惯例,Scott按照如下顺序去查问题到底出在哪里: (1)先翻MySQL error log,没有发现异常 (2)再翻Linux系统日志文件,果然,翻到了下面的内容: Nov 26 13:05:38 hostA kernel: mysql invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0, oom_score_adj=0 ...此处内容省略N行... Nov 26 13:05:38 hostA kernel: Out of ...
    阅读全文 →
  • 【分享】Mysql分区表使用的一些限制和需要注意的细节

    mysql分区策略都基于两个非常重要的假设:查询都能够过滤(prunning)掉很多额外的分区、分区本身并不会带来很多额外的代价。而事实证明,这两个假设在某些场景下会有问题。下面介绍一些可能会遇到的问题。 NULL位会使分区过滤无效 关于分区表一个容易让人误解的地方就是分区的表达式的值可以是NULL:第一个分区是一个特殊分区。假设按照PARTITION BY     RANGE YEAR(order_date)分区,那么所有order_date为NULL或者是一个非法值的时候,记录都会被存放到第一个分区。现在假设有   下面的查询:WHERE order_date B...
    阅读全文 →
  • 【分享】MySQL 分表和分区原理及应用方法详解

    摘星怪  /
     / 数据存储
    日常开发中课课家经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。 1. 什么是什么是分表和分区? 有什么区别和联系? 1.1 分表 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些...
    阅读全文 →
  • 【分享】Mysql分区举例—基于时间字段进行分区的方案

    摘星怪  /
     / 数据存储
    MySQL支持的分区类型一共有四种:RANGE,LIST,HASH,KEY。其中,RANGE又可分为原生RANGE和RANGE COLUMNS,LIST分为原生LIST和LIST COLUMNS,HASH分为原生HASH和LINEAR HASH,KEY包含原生KEY和LINEAR HASH。关于这些分区之间的差别,改日另写文章进行阐述。 最近,碰到一个需求,要对表的时间字段(类型:datetime)基于天进行分区。于是遍历MySQL官方文档分区章节,总结如下: 实现方式 主要是以下几种: 1. 基于RANGE 2. 基于RANGE COLUMNS 3. 基于HASH 测试数据 为了测试以上三种方案,特构造了100万的测试数...
    阅读全文 →