MYSQL分区表详解

分区表对用户来说是一个独立的逻辑表,但是底层是多个物理字表组成的。分区代码实际上是对一组底层表的句柄对象封装。对分区表的请求,都会通过句柄对象转化成储存引擎的接口调用。所以分区对于SQL层来说是一个完全封装底层实现的黑盒子,对应用是透明的。但是底层每个分区都有个使用#分割命名的表文件。

Mysql实现分区的方式--对底层表的封装--意味着索引也按照分区的子表定义的。但是没有全局索引。

和其他数据库一样patition by关键字定义分区,存放分区数据。在执行查询是,优化器会根据分区定义过滤我们不需要的分区,这样无需扫描所有分区。

分区的一个主要的目的是将数据按照一个教粗的粒度分在不同的表中。这样做可以将所有相关的数据放在一起。批量删除和更新操作就会特别的快。

适用场景:

1. 表非常大无法加载内存,或者只有表尾部分数据有有点数据,其他都是历史数据。

2. 分区表数据更好维护。比如删除批量数据通过整个分区。还可以对独立的分区进去优化,检查,和修复等。

3. 分区表可以分散到不同的物理设备上面,高效利用设备。

4. 可以避免某些特殊的瓶颈。例如InnoDB的单个索引互斥访问。 ext3文件系统的inode锁竞争等。

5. 在数据量特别大的情景,可以分区进行备份或者恢复。

分区局限

1. 一个分区表最多只能有1024个分区。

2. 分区字典如果有主键和唯一索引的列,那么所有的主键列和唯一索引列必须包含进来。

3. 分区表无法使用外键约束。

5. 5.1版本中,分区表达式必须是整数,或者整数的表达式。在5.5后,某些场景可以直接使用列进行分区。

分区原理

---未完待续

原文地址:https://www.cnblogs.com/Jesse-Li/p/9966262.html

时间: 2024-10-16 20:56:27

MYSQL分区表详解的相关文章

mysql 分区表详解

项目中要一张库表实现 list分区.并且支持多种数据库. oracle 很顺利,只是mysql 听说5.1版本就已经支持了, 可是试了很多个版本,都不行,后来查到原因是要5.5 以上版本 分区才支持 varchar, 可是试到 5.6 都一直报错: "VALUES value for partition 'P_XX' must have type INT" 后来才发现.原来没有查对资料,走了弯路.是LIST COLUMNS才支持 varchar类型的分区字段. mysql 官方文档 

MySQL Sharding详解

转自(http://blog.sina.com.cn/s/blog_821512b50101hyc1.html) MySQL Sharding详解     一 背景 我们知道,当数据库中的数据量越来越大时,不论是读还是写,压力都会变得越来越大.采用MySQL Replication多master多slave方案,在上层做负载均衡,虽然能够一定程度上缓解压力.但是当一张表中的数据变得非常庞大时,压力还是 非常大的.试想,如果一张表中的数据量达到了千万甚至上亿级别的时候,不管是建索引,优化缓存等,都

MySQL存储过程详解 mysql 存储过程

MySQL存储过程详解  mysql 存储过程 (2010-12-13 10:59:38) 转载▼ 标签: it 分类: mysql mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保

MySQL存储过程详解 mysql 存储过程(转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html)

转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和

MySQL 数据类型 详解

MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补. 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~83

Mysql数据类型详解

MySQL数据类型包括 1.整数类型,浮点数类型和定点数类型 2.时间和日期类型 3.字符串类型 4.二进制类型 整数类型 标准的SQL中支持INTEGER,SMALLINT这两类整数类型,MySQL除了这两个还有其他的,见下表 类型 大小 范围(有符号) 范围(无符号) 默认宽度 TINYINT 1 字节 (-128,127) (0,255) 4 SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 6 MEDIUMINT 3 字节 (-8 388 608,8 3

MySQL 数据类型 详解 (转载)

数值类型 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补. 表列出了各种数值类型以及它们的允许范围和占用的内存空间. 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65

mysql索引详解,摘自《MySQL 5权威指南》

本文介绍了数据库索引,及其优.缺点.针对MySQL索引的特点.应用进行了详细的描述.分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用.本文摘自<MySQL 5权威指南>(3rd)的8.9节.(2007.07.05最后更新)        索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.注:[1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢.每修改数据记录,索引

MySQL安装详解

MySQL安装详解 [下载地址:http://dev.mysql.com/downloads/] 参考文献:http://dev.mysql.com/doc/refman/5.1/zh/installing.html 步骤1:选择安装类型 有3种安装类型:Typical(典型安装).Complete(完全安装)和Custom(定制安装). Typical(典型安装)安装只安装MySQL服务器.mysql命令行客户端和命令行实用程序.命令行客户端和实用程序包括mysqldump.myisamchk