mysql表分区 partition
表分区 partition
当一张表的数据非常多的时候,比如单个.myd文件都达到10G, 这时,必然读取起来效率降低.
可不可以把表的数据分开在几张表上? 1: 从业务角度可以解决.. (分表,水平分割),比如, 通过id%10 , user0 , user1....user9, 这10张表 根据不同的余数,来插入或查询某张表. 2: 通过mysql的分区功能,而不是通过代码来控制,再建表的时候指定分区的规则,mysql将会根据指定的规则,把数据放在不同的表文件上,相当于在文件上,被拆成了小块.但是,给客户的界面,还是1张表.对用户来说是透明的。 常用的规则:一般是根据某列的范围来分区, 也可以某列的散点值来分区. 示例: 按列的范围来分区
以用户表为例, uid
uid [1,100万) ---> user partition u0 放在第一张表里
uid[100万, 200万) ---> user partition u1 放在第二张表里
uid [200万, MAX] --> user partion u2 放在第三张表里
分区 按range范围分区,根据id的范围来分区,
create table goods (
id int,
uname char(10)
)engine myisam
partition by range(id) (
partition p1 values less than (10), //id小于10的在一个区域
partition p2 values less than (20), //id小于20的在一个区域
partition p3 values less than MAXVALUE //其他在p3
);
按散点值分区
有一张省表
create table area(
aid int,
zone char(10)
)engine myisam; insert into area values (1,’bj’),(2,’ah’),(3,’xb’);
pid 主键 |
prov 省名 |
1 |
北京 |
2 |
安徽 |
... |
|
35 |
西藏 |
user 表,按省来拆分,
uid 主键 |
pid 省份 |
uname 用户名 |
1 |
1 |
张北京 |
15 |
2 |
赵安徽 |
create table user (
uid int,
aid int,
uname char(10)
)engine myisam
partition by list(aid) (
partition bj values in (1),
partition ah values in (2),
partition xb values in (4,5,6)
);
//7是没有的区,会报错。
insert into user values (1,1,’11’),(2,2,’22’),(3,4,’44’),(4,5,’55’),(5,6,’66’),(6,7,’77’);
注意: 在使用分区的时候,注意,分区的那个列,值不要为NULL
(如果不小心为NULL,mysql为理解为0,尽量执行之) 注 :分区甚至可以按照表达式的返回值,计算所属区.
但用表达式,不如直接用值来得快. 根据情况而定. 比如,用 partition by range (year(regtime)) 可以按注册年份来分区.
mysql表分区 partition的更多相关文章
- MySQL表分区技术
MySQL表分区技术 MySQL有4种分区类型: 1.RANGE 分区 - 连续区间的分区 - 基于属于一个给定连续区间的列值,把多行分配给分区: 2.LIST 分区 - 离散区间的分区 - 类似于按 ...
- Mysql表分区的选择与实践小结
在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快.这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈. 一. 选择合适的解决方法 1. 分库分表. 分库 ...
- Mysql 表分区和性能
以下内容节选自<Mysql技术内幕InnoDB存储引擎> mysql表分区: 分区功能并不是所有存储引擎都支持的,如CSV.MERGE等就不支持.mysql数据库支持的分区类型为水平分区( ...
- Mysql 表分区
是否支持分区:mysql> show variables like '%partition%';+-----------------------+-------+| Variable_name ...
- MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...
- Mysql表分区几种方式
自5.1开始对分区(Partition)有支持,一张表最多1024个分区 查询分区数据: SELECT * from table PARTITION(p0) = 水平分区(根据列属性按行分)= 举个简 ...
- mysql表分区(摘自 MySQL表的四种分区类型)
一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...
- MySQL表分区
MySQL的表分区 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以 ...
- mysql表分区、查看分区
原文地址:http://blog.csdn.net/feihong247/article/details/7885199 一. mysql分区简介 数据库分区 数据库分区是一种物理数据库设 ...
随机推荐
- POJ 1067: Wythoff Game【博弈】
经典的威佐夫博奕把黄金分割常数乘以k(k=m-n)即为奇异点,此时奇异点是用小数据观察出来的,具体的数学证明,观察到黄金分割常数是无理数,再加上高斯函数[kφ]的形势将自然数分割成两个等价类很容易想到 ...
- 栅格网络流(cogs 750)
[问题描述] Bob 觉得一般图的最大流问题太难了,他不知道如何解决,于是他想尝试一个简单点的:栅格网络中的最大流问题,这个虽说简单了一点,但对 Bob 来说依旧太难,现在他有个麻烦需要你帮忙:给你一 ...
- 【Codeforces Round #504 (Div. 1 + Div. 2) 】
A:https://www.cnblogs.com/myx12345/p/9843678.html B:https://www.cnblogs.com/myx12345/p/9843709.html ...
- 封装的一个Worker方法,利用线程处理运行时间较长的js代码
function webWorker(targetFile,content){ var promise=new Promise(function(resolve,reject){ var web=ne ...
- 三类(创结行),23种设计模式,速记理解法!PHP
一,创建型设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳 ...
- css3 画半圆和1/4圆
半圆: #circle1 { width: 100px; height: 200px; background-color: #a72525; -webkit-border-radius: 100px ...
- dbms_metadata.get_ddl的使用总结
https://blog.csdn.net/newhappy2008/article/details/34823339
- 前端跨域调请求 nginx反向代理
用 本地pc的目录,请求192.168.3.246的接口,以/api为标识 运行命令: 启动 nginx -s start 重启 nginx -s relaod 停止 nginx -s stop 查看 ...
- codevs——1503 愚蠢的宠物
1503 愚蠢的宠物 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 大家都知道,sheep有两 ...
- Bootstrap全局CSS样式之button和图片
.btn-default--button的默认样式. .btn-primary--button的首选样式: .btn-success--button的成功样式: .btn-info--button的一 ...