MySQL 表分区A
在MySQL中表的分区类型总的来说有四种:
第一种:range分区、基于一个给定的区间范围,把数据分配到不同的分区。
第二种:list 分区、基本枚举的值列表进行分区。
第三种:hast 分区、基于分区个数把数据分到不同的分区。
第四种:key 分区、与hash分区差不多。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
第一种:range 分区、在MySQL 5.1中只支持int 类型的字段进行分区、5.5后增加了对datetime 与varchar 的支持 只是要把range 改成range columns 才可以
例一:int 类的range分区 create table t3(x int, y int) partition by range (x) (partition p0 values less than(100),partition p1 values less than(200));
例二:为表增加一个分区
alter table t3 add partition (partition p2 values less than(maxvalue));
例三:varchar or datetime 类型的分区
create table t4(x varchar(32),y varchar(32)) partition by range columns (x) (partition p0 values less than('100'),partition p2 values less than(maxvalue));
第二种:list 分区、在list 分区中不存在values less than(maxvalues) 这样的定义方式;也就是说插入的值如果列表中没有列出就会报错。
list 也是支持 varchar 这样的数据类型的只是要加 columns 这个关键字
例一:create table t5(x int,y int) partition by list (x) (partition p0 values in (1,3,5,7,9),partition p1 values in (2,4,6,8));
例二:create table t6(x varchar(100),y varchar(100)) partition by list columns (x) (partition p0 values in ('a'),partition p1 values in ('b'));
第三种:hash 分区、主要用来分散热点读,确保数据在各个分区中尽可能平均的分布。普通hash 用的是取模算法、打个比方如果分四个区、
新插入的数据会到哪个分区当中去是根据分区键除四取模得到的。然而这个会带来问题,如我们把分区加到5的时候以前的老数据都会重新算
一次才可以确定这行数据要存在哪个分区里。这会引起性能问题。
create table t7(x int,y int) partition by hash (x) partitions 5;-- hash(expr) expr 如果为一个返回整数的表达式也是可以的。
第四种:key 分区、和hash分区相差不大。它有两大优点一它支持text,blob 之外的所有数据类型、二它可以指定多个列。
create table t8(x varchar(32),y varchar(32)) partition by key(x,y) partitions 4;
MySQL 表分区A的更多相关文章
- MySQL表分区技术
MySQL表分区技术 MySQL有4种分区类型: 1.RANGE 分区 - 连续区间的分区 - 基于属于一个给定连续区间的列值,把多行分配给分区: 2.LIST 分区 - 离散区间的分区 - 类似于按 ...
- Mysql 表分区和性能
以下内容节选自<Mysql技术内幕InnoDB存储引擎> mysql表分区: 分区功能并不是所有存储引擎都支持的,如CSV.MERGE等就不支持.mysql数据库支持的分区类型为水平分区( ...
- Mysql表分区的选择与实践小结
在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快.这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈. 一. 选择合适的解决方法 1. 分库分表. 分库 ...
- Mysql 表分区
是否支持分区:mysql> show variables like '%partition%';+-----------------------+-------+| Variable_name ...
- MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...
- mysql表分区(摘自 MySQL表的四种分区类型)
一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...
- MySQL表分区
MySQL的表分区 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以 ...
- mysql表分区、查看分区
原文地址:http://blog.csdn.net/feihong247/article/details/7885199 一. mysql分区简介 数据库分区 数据库分区是一种物理数据库设 ...
- MYSQL 表分区的 3 方法
背景知识: 表分区是把逻辑上同一范围的数据保存到同一个文件中,就和超市一样,把同类商品放在同一个区域,把不同的商品放在不同的地方.不同的是超市中 是根据用途分类的,表分区是根据它的取值区间来分的. 分 ...
- mysql表分区简述
一. 简介 数据库分区 数据库分区是一种物理数据库设计技术.虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用来说分区完全是 ...
随机推荐
- unix网络编程笔记
TCP连接状态转换图:
- linux c 头文件
//1.Linux中一些头文件的作用: #include <assert.h> //ANSI C.提供断言,assert(表达式) #include <glib.h> //GC ...
- 得到IP包的数据意义(简单实现例子)
#include <stdio.h> #include <unistd.h> #include <linux/if_ether.h> #include <li ...
- Glib程序使用Valgrind查找内存泄露
G_DEBUG=gc-friendly G_SLICE=always-malloc //glib有缓存 故需使用 上述两条设置环境变量 G_SLICE和G_DEBUG排除由内存分配机制带来的 ...
- AspectJ AOP例子
最近在学习Spring AOP,其中涉及到AspectJ的AOP框架.主要参考:http://howtodoinjava.com/spring/spring-aop/spring-aop-aspect ...
- python第三天---collections类
collection系列 1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. 我们从中挑选一些相对常用的方法来举例: 在上面的例子我们可以看出,counter方法返 ...
- Android TXT文件读写
package com.wirelessqa.helper; import java.io.FileInputStream; import java.io.FileOutputStream; impo ...
- SMTP协议分析
SMTP协议分析 第1章. SMTP概述 1.1. SMTP在邮件通信中的位置 SMTP,即简单邮件传送协议,所相应RFC文档为RFC821.同http等多数应用层协议一样,它工作在C/S模 ...
- JS把字符串转换为数字的方法
方法: (1)Number(),强制类型转换,接受一个参数. (2)parseInt(),把字符串转换为整形数字,可以接受一个或两个参数,其中第二个参数代表转换的基数,能够正确的将二进制.八进制.十 ...
- framework层和native层实现联网控制(iptable方式)
最近工作中,需要开发一个功能----联网控制,这个功能其实用过root的安卓机应该都知道,禁止某个应用连接移动网络或者wifi. root后,通过su去执行iptable的命令就可以根据uid去控制应 ...