高性能mysql 第7章 mysql高级特性之分区表
分区表:
分区表是一个独立的逻辑表,底层通过多个物理表实现。
mysql实现分区表的方式是对底层表的封装。这意味着没有全局索引,索引是建立在底层的每个表上的(跟ORACLE不一样)。
用到分区表的几种情况:
- 数据量非常大,无法全部放到内存中。
- 只有部分数据是热点数据,其他数据是历史数据。
限制:
- 一个表只能有1024个分区,作者在100个以下是稳定的,太多会有性能问题。
- 分区表无法使用外键约束。
- PARTITION BY RANGE分区表达式必须是整数或者返回整数的表达式。
- PARTITIONED BY RANGE COLUMNS分区可以接受整形,日期型,字符型作为分区参数。
- 所有的分区都必须使用相同的存储引擎。
会出现的问题:
- 如果使用PARTITION BY RANGE,所有在分区表达式上的null值(本身就是null或者使用一个非法值的时候)会被放在第一个分区。在做查询的时候,不仅会查询where所在的分区,还会查询第一个null所在的分区。如果第一个分区很大,那么将会有性能隐患。解决方法,把第一个分区的数据量减少。或者做一个空分区为第一个分区。
附上PARTITION BY RANGE例子:
- fname VARCHAR(30),
- lname VARCHAR(30),
- RANGE Partitioning
- 3001
- )
- PARTITION BY RANGE (store_id) (
- PARTITION p0 VALUES LESS THAN (6),
- PARTITION p1 VALUES LESS THAN (11),
- PARTITION p2 VALUES LESS THAN (16),
- PARTITION p3 VALUES LESS THAN (21)
- )
- 分区列和索引列不匹配。例如在a列上建立了分区,在b列上建立了索引,在使用b=?进行检索的时候,如果没有a的条件来限制要扫描的分区,那么将要在每个分区上查找b索引。如果分区比较多,也是性能隐患。
EXPLAIN PARTITIONS 查看使用了哪些分区
- PARTITION BY RANGE(id)
- (
- PARTITION p0 VALUES LESS THAN (3),
- PARTITION p1 VALUES LESS THAN (7),
- PARTITION p2 VALUES LESS THAN (9),
- PARTITION p3 VALUES LESS THAN (11)
- );
- (1, 'desk organiser', '2003-10-15'),
- (2, 'CD player', '1993-11-05'),
- Obtaining Information About Partitions
- 3044
- (3, 'TV set', '1996-03-10'),
- (4, 'bookcase', '1982-01-10'),
- (5, 'exercise bike', '2004-05-09'),
- (6, 'sofa', '1987-06-05'),
- (7, 'popcorn maker', '2001-11-22'),
- (8, 'aquarium', '1992-08-04'),
- (9, 'study desk', '1984-09-16'),
- (10, 'lava lamp', '1998-12-25');
- *************************** 1. row ***************************
- id: 1
- select_type: SIMPLE
- table: trb1
- partitions: p0,p1,p2,p3
- type: ALL
- possible_keys: NULL
- key_len: NULL
- ref: NULL
- rows: 10
- Extra: Using filesort
- *************************** 1. row ***************************
- id: 1
- select_type: SIMPLE
- table: trb1
- partitions: p0,p1
- type: ALL
- possible_keys: NULL
- key_len: NULL
- ref: NULL
- rows: 10
高性能mysql 第7章 mysql高级特性之分区表的更多相关文章
- 高性能mysql 第1章 mysql架构与历史
mysql逻辑架构图: 第一层 客户端 第二层(服务层):针对所有类型的存储引擎可以公共提取的部分.将存储引擎抽离之后的其他部分都在这里.如:查询解析,分析优化,内置函数,存储过程,触发器,视图. 第 ...
- MySQL高级特性之分区表
对于用户而言,分区表是一个独立的逻辑表,但是在底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装,对分区表的请求都会通过句柄对象转化成对存储引擎的接口调用 意义 MySQL在创 ...
- 《高性能MySQL》——第一章MySQL的架构与历史
1.可以使用SHOW TABLE STATUS查询表的相关信息. 2.默认存储引擎是InnoDB,如果没有什么很特殊的要求,InnoDB引擎是我们最好的选择. 3.mysql的infobright引擎 ...
- 高性能mysql笔记 第一章 mysql架构
1.1 mysql逻辑结构 第一层: 负责连接处理,授权认证,安全等事情 第二层:负责mysql的大部分核心功能 ,查询解析,分析,优化,缓存和所有的内置函数,所有跨存储引擎的功能都在这一层实现,, ...
- java 第七章 面向对象高级特性
一.类的继承 (一)继承的含义 1.在Java中定义一个类时,让该类通过关键字extends继承一个已有的类,这就是类的继承(泛化). 2.被继承的类称为父类(超类,基类),新的类称为子类(派生类). ...
- mysql笔记04 MySQL高级特性
MySQL高级特性 1. 分区表:分区表是一种粗粒度的.简易的索引策略,适用于大数据量的过滤场景.最适合的场景是,在没有合适的索引时,对几个分区进行全表扫描,或者是只有一个分区和索引是热点,而且这个分 ...
- 【MySQL高级特性】高性能MySQL第七章
2017-07-25 14:15:43 前言:MYSQL从5.0和5.1版本开始引入了很多高级特性,例如分区.触发器等,这对有其他关系型数据库使用 背景的用户来说可能并不陌生.这些新特性吸引了很多用户 ...
- 干货:鲜为人用的MySQL高级特性与玩法!
上一篇文章<万字总结:学习MySQL优化原理,这一篇就够了!>文末给大家留有两个开放的问题: 有非常多的程序员在分享时都会抛出这样一个观点:尽可能不要使用存储过程,存储过程非常不容易维护, ...
- MySQL高级特性
MySQL管理 用户管理 CREATE USER username IDENTIFIED BY 'password'; 新建用户 CREATE USER@'%' IDENTIFIED BY 'pass ...
随机推荐
- axios在Vue中的简单应用(一)
1.安装axios: npm install --save axios vue-axios 2.安装qs: qs.stringify(data)可以解决data数据格式问题 npm install - ...
- ios 后台进程弹窗
// http://iphonedevwiki.net/index.php/CFUserNotification // https://kunnan.github.io/2018/05/14/com. ...
- Unity中的动画系统和Timeline(1) 普通动画创建
学习使用版本:Unity2017.1.1 目标:给一个Cube创建动画 一:第一种创建方法 1 Windows —— Animation,打开Aniamtion动画界面,此时显示 因为此时没有任何动画 ...
- linux如何设置磁盘配额?
环境:CentOS7 需求: zhang3 用户在 /dev/sdb1 上,只能使用100M的空间,建立 200个文件. 注意事项:XFS 不能对 / 开启配额 ...
- PJzhang:从js文件中寻找子域名的SubDomainizer
猫宁!!! 有些专门针对企业客户的网站,可能没有供公开注册的页面,但是在js文件中可能会隐藏他们的注册接口,当然这也是一种安全风险,就像有些后台是一定不能不小心放外网一个道理. 最近看到一篇文章提 ...
- PI膜概述
一.概述 1.简述 聚酞亚胺薄膜又称PI薄膜(polyimide filin)是一种含有酞亚胺或丁二酞亚胺的绝缘类高分子材料.是目前工程塑料中耐热性最好的品种之一. 2.发展简史 1908年,PI聚合 ...
- 【AMAD】betamax -- 一个ruby-VCR的模仿品,只支持requests
简介 动机 作用 用法 个人评分 简介 betamax1会记录你的HTTP操作,可以让你在测试的时候不必重复进行真实的请求. 动机 如果你的代码需要和外部资源一起运作,那么测试这段代码的方法就叫做集成 ...
- KVM虚拟化储存管理(3)
一.KVM 存储虚拟化介绍 KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种型: Vo ...
- nginx一些高级配置
参数: https://www.wangbokun.com/%E8%BF%90%E7%BB%B4/2018/07/21/Nginx.html 免费证书等 1/ nginx代理hue限制上传文件大小 ...
- luoguP2822-组合数问题(基础DP)
题目链接:https://www.luogu.org/problemnew/show/P2822 题意:输入T和k,有T组询问.每组询问输入n.m,求C(i,j)能模k的个数(0<=i<= ...