美文网首页开发那些事
MySQL数据库分区

MySQL数据库分区

作者: He_Yifeng | 来源:发表于2018-11-24 20:04 被阅读0次

数据库分区处理
如果一张表的数据量太大的话,myd、myi就会变得很大,查找数据就会变的很慢,我接触到的是有关温州出租车网约车GPS数据量的查询,大概数据量为1天4000万条记录,不分区查询速度慢到怀疑人生。在物理上我们可以把数据表分割成不同的小块,查找数据只需要查找需要的那一块数据即可,查询速度大大提升。

我们项目中我只用到了rang分区:
参考mysql分区


range分区

自动分区

create table cb03_cbrfid(
ZWMC  VARCHAR2(50),
DTID  VARCHAR2(50),
RFID  VARCHAR2(50),
CBSBH  VARCHAR2(50),
CBLX  VARCHAR2(50),
NUM  NUMBER(10),
ZDW  VARCHAR2(50) ,
SJ  DATE ,
ZZZ  VARCHAR2(50) ,
ZZXCG  VARCHAR2(50),
JD  NUMBER(19,16),
WD  NUMBER(19,16),
WZ  VARCHAR2(50),
RESERVED1  FLOAT(8),     
RESERVED2  FLOAT(8),    
XXLX  INTEGER ,
GXSJ  DATE )
 partition by range(gxsj)
  interval(numtodsinterval(1,'day'))
  ( partition cbrfid1 values less than(to_date('2017-10-15 00:00:00','yyyy-mm-dd hh24:mi:ss')));

具体的操作:

partition by range (字段名)
(
  partition 分区名 values less than (
        TO_DATE(' 2014-07-25 00:00:00',
         'SYYYY-MM-DD HH24:MI:SS', 
        'NLS_CALENDAR=GREGORIAN')
  )
);

手动分区:

alter table 表名 add partition 分区名 values less than (
        TO_DATE(' 2014-07-27 00:00:00, 
          'SYYYY-MM-DD HH24:MI:SS')
)

最后分区示例:

create table T_WYC_GPS_HISTORY
(
  vehicle_no    VARCHAR2(20),
  vehicle_color VARCHAR2(8),
  alarm_id      VARCHAR2(32),
  status        VARCHAR2(32),
  lat           VARCHAR2(32),
  lon           VARCHAR2(32),
  speed         VARCHAR2(16),
  direction     VARCHAR2(8),
  geometry      MDSYS.SDO_GEOMETRY,
  load_time     DATE,
  pre_geohash   VARCHAR2(20),
  last_geohash  VARCHAR2(20),
  platform_id   INTEGER
)
partition by range (LOAD_TIME)
(
  partition T_WYC_GPS_HISTORY_20180226 values less than (TO_DATE(' 2018-02-27 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    tablespace WZYG_WYC_GPS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 8M
      next 1M
      minextents 1
      maxextents unlimited
    ),
  partition T_WYC_GPS_HISTORY_20180227 values less than (TO_DATE(' 2018-02-28 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    tablespace USERS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 8M
      next 1M
      minextents 1
      maxextents unlimited
    ),
  partition T_WYC_GPS_HISTORY_20180228 values less than (TO_DATE(' 2018-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    tablespace USERS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 8M
      next 1M
      minextents 1
      maxextents unlimited
    ),

相关文章

  • mysql分库分表

    课程内容 mysql分区 水平切分 垂直切分 1. mysql分区 1.1 什么是分区? mysql数据库中的数据...

  • [转]MYSQL--表分区、查看,建立,删除

    一、 mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果...

  • 对MySQL交换分区的实践

    前言 在介绍交换分区之前,我们先了解一下 mysql 分区。 数据库的分区有两种:水平分区和垂直分区。而MySQL...

  • MySQL的分区、分表、集群、优化

    MySQL的分区 MySQL分区表是在数据库层面,MySQL自己实现的分表功能,在很大程度上简化了分表的难度。物理...

  • Mysql数据库分区(PARTITION)操作记录

    mysql的数据库分区是什么? mysql的数据库分区,是将数据表的数据文件和索引文件按照规则分别存储在不同文件中...

  • MySQL分区

    什么是数据库分区:以mysql为例,mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/da...

  • mysql分区详解

    一,什么是数据库分区前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。m...

  • 数据库的分区:水平分区,垂直分区

    它是一种物理数据库设计技术,MySQL数据库默认使用水平分区。2.1 水平分区:对表的行进行分区,不同分组中物理分...

  • 深入理解MySQL分区(Partition)

    什么是数据库分区? Mysql数据库中的数据是以文件的形式保存在磁盘上的,默认放在mysql/data路径,不同的...

  • 数据库分区Partitioning, 2022-07-16

    (2022.07.16 Sat) 数据库特别是MySQL的分区(partitioning)是一种数据库设计技术,用...

网友评论

    本文标题:MySQL数据库分区

    本文链接:https://www.haomeiwen.com/subject/aewyqqtx.html