mysql 案例~ 分区表
一 简介:今天来聊聊分区表的概念和维护
二分区的优点:
1.提高查询性能:只需要搜索特定分区,而非整张表,提高了查询速度。
2.节约维护时间:单个分区的数据装载,索引重建,备份,维护远远小于整张表的维护时间
三 分区类型
1 RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。存在maxvalue限制
2 LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
3 HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。
4 KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
三 分区限制和注意事项
1.主键或者唯一索引必须包含分区字段,如primary key (id,username),这里需要注意,分区表不一定会有主键/唯一键.,但是一旦有主键或者唯一键,就必须包含分区字段
2.很多时候,使用分区就不要在使用主键了,否则可能影响性能。
3.每个表最多1024个分区,而且多分区会大量消耗内存,所以不要建立过多不用的分区
4.分区的表不支持外键,相关的逻辑约束需要使用程序来实现。
5.分区后,可能会造成索引失效,需要验证分区可行性。
6.分区表在server层被认为是一张表,所以会共享MDL锁,这点在做DDL操作时非常重要,可能导致锁等待
7.分区规则必须要提前设立好,否则修改会很麻烦
四 分区表管理操作
alter table user drop partition user_3; //删除分区
alter table user add partition partitions 8; //新增hash/key分区
alter table user add partition(partition user_3 values less than maxvalue);//新增range分区
ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES IN(0,1,4,5,8,9,12,13)); //分区合并 po可以为不存在的分区
五 普通表转化为分区表
方案1
1 建立好新的分区表
2 程序导入数据
方案 2
1 alter table table_name partition by命令重建分区表
2 关于分区表字段主键问题要特别注意,因为有的分区类型需要联合主键,所以要对原表进行改造
六 分区表转化为普通表
1 ALTER TABLE T1 REMOVE PARTITIONING 建议用PT-OSC执行,否则会锁表
2 用remove移除分区是仅仅移除分区的定义,并不会删除数据和drop PARTITION不一样,后者会连同数据一起删除
七 分区表扩展
1 如果开始定义的时候分区过少,有可能导致程序插入数据后期报错,因为分区不够用,建议采用存储过程自动扩展,这是最好的方法、
2 对于range分区到达maxvalue的情况 可以采用重建range分区的方法进行
Alter table emp partition by range(salary)
(
partition p1 values less than (2000),
partition p2 values less than (4000)
);
八 5.7 分区新特性
mysql 5.7 分区新特性
1 MySQL 5.7支持 分区 & 物理表 直接交换 的新特性,将历史分区交换到外部物理表,再归档到历史库里
eg ALTER TABLE t1 EXCHANGE PARTITION p20160101 WITH TABLE t1_20160101;
2 mysql 5.7 分区表开始支持icp特性
3 子分区支持ANALYZE,CHECK,OPTIMIZE,REPAIR和TRUNCATE操作;
mysql 案例~ 分区表的更多相关文章
- Mysql的分区表
概论: 分区表一般用作Mysql库表的水平切割(也就是常说的mysql性能优化的几种通用手法"读写分离.分库分表"中的一种),适用于单表的数据量可能很大的场景.因为分区表可以将一个 ...
- mysql使用 分区表使用,常用sql
mysql使用 分区表使用,常用sql 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/84839478未经博主允许不得转载 ...
- mysql 案例 ~ mysql字符集详解
一 谈谈mysql常见的字符集问题 二 字符集统一 1 character_set_server 2 character_set_client 3 java/php等连接字符集 4 chara ...
- mysql案例~非常规操作汇总
一 简介:此文汇总mysql不常见的数据库的操作二 mysql表修改最大自增ID 目的: 修复canal相关问题 语法: alter table a AUTO_INCREMENT=num; 执行速度: ...
- mysql 案例 ~ 常见案例汇总
一 简介:这里汇总了一些mysql常见的问题二 案例场景 问题1 mysql设置了默认慢日志记录1S,为何会记录不超过1S的sql语句 答案 mysql~log_queries_not_usi ...
- mysql案例~mysql主从复制延迟概总
浅谈mysql主从复制延迟 1 概念解读 需要知道以下几点 1 mysql的主从同步上是异步复制,从库是串行化执行 2 mysql 5.7的并行复制能加速从库重做的速度,进一步缓解 主从同步的延迟问题 ...
- Python操作MySQL案例
最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,所以每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块 ...
- mysql 案例~select引起的性能问题
案例1 背景:测试环境下发现大量select查询,而且负载飙升到90+ 排查思路: 1 老规则,按照排错脚本走一圈,规划出几个元素(1 针对库访问的统计 2针对具体语句类型的统计),发现有大量的sel ...
- mysql 案例~ mysql故障恢复
一 :遇到一个朋友的案例 分享下处理流程 二 : 现象 1 mysql无法启动,观察日志发现 InnoDB: Failing assertion: !m_fatal InnoDB: We intent ...
随机推荐
- BZOJ2843极地旅行社&BZOJ1180[CROATIAN2009]OTOCI——LCT
题目描述 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通. 如果是则输出“no”.否则输出“yes”,并且在 ...
- BZOJ2325[ZJOI2011]道馆之战——树链剖分+线段树
题目描述 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中 的每一个冰块都只能经过一次.当一个冰地上的所有冰块都被经过之后,到下一个冰地的楼梯才 ...
- BZOJ3625 [Codeforces Round #250]小朋友和二叉树(生成函数+多项式开根)
设f(n)为权值为n的神犇二叉树个数.考虑如何递推求这个东西. 套路地枚举根节点的左右子树.则f(n)=Σf(i)f(n-i-cj),cj即根的权值.卷积的形式,cj也可以通过卷上一个多项式枚举.可以 ...
- LAMP和LNMP去除index.php访问
使用TP或者Laravel开发的时候,后时候会遇到需要加index.php才能正常访问 LAMP解决方法 1.修改配置 打开配置文件(如:httpd.conf),找到你网站根目录的配置,将AllowO ...
- 洛谷P3515 [POI2011]Lightning Conductor(动态规划,决策单调性,单调队列)
洛谷题目传送门 疯狂%%%几个月前就秒了此题的Tyher巨佬 借着这题总结一下决策单调性优化DP吧.蒟蒻觉得用数形结合的思想能够轻松地理解它. 首先,题目要我们求所有的\(p_i\),那么把式子变一下 ...
- springmvc源码解析MvcNamespaceHandler之<mvc:view-resolvers>
说在前面 本次主要介绍springmvc配置解析. springmvc配置解析 本次介绍MvcNamespaceHandler. 进入到这个方法org.springframework.web.serv ...
- 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表.Hosts_grou ...
- ANDROID OptionMenu 菜单列表
package com.app.menu; import android.os.Bundle; import android.app.Activity; import android.content. ...
- android关闭日志
我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(),Log.e()等 原理: ...
- A1025. PAT Ranking
Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhe ...