学习mysql水平分区和实践笔记
SHOW PLUGINS; sql 可以查看partition的Status 是否是ACTIVE的
使用mydatetime 进行水平分区案例:
CREATE TABLE test_users (
`id` INT (10) NOT NULL AUTO_INCREMENT,
`mydatetime` datetime NOT NULL,
`email` VARCHAR (255) NOT NULL,
UNIQUE INDEX (`email`),
PRIMARY KEY (`id`)
);
-- 如果表已创建时的操作
-- 修改主键的类型
ALTER TABLE test_users CHANGE COLUMN `id` `id` INT (10) UNSIGNED NOT NULL;
-- 删除主键
ALTER TABLE test_users DROP PRIMARY KEY;
-- 将 主键id和分区字段mydatetime 同作为主键
ALTER TABLE test_users ADD PRIMARY KEY (id, mydatetime);
-- 给主机 id 加上 自动增长
ALTER TABLE test_users CHANGE COLUMN `id` `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT;
-- 删除索引 email
ALTER TABLE test_users DROP INDEX email;
-- 将 email和mydatetime字段 同作为名为 email的唯一索引
ALTER TABLE test_users ADD UNIQUE KEY `email` (email, mydatetime);
-- 根据 mydatetime的日期值,将小于 2018-12-31放在 p1,小于2019-06-30放在p2,小于最大值的放在p8分区,名字是自己定义的
alter table test_users PARTITION by range(TO_DAYS(mydatetime))(
PARTITION p1 VALUES LESS THAN (TO_DAYS('2018-12-31')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2019-06-30')),
PARTITION p8 VALUES LESS THAN MAXVALUE
);
-- 分析查询语句,测试分区是否有用
EXPLAIN SELECT * FROM test_users WHERE mydatetime <= '2019-07-01';
[Err]1503 - A UNIQUE INDEX must include all columns in the table's partitioning function
[Err] 1486 - Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
尝试1:
[Err] 1503 - A PRIMARY KEY must include all columns in the table's partitioning function
主键需要包含分区的字段
尝试了将原来的主键删除掉,然后再重新创建一个组合主键
[Err]1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
删除主键失败
依次执行下列的sql
ALTER TABLE test_table CHANGE COLUMN `id` `id` int(10) unsigned NOT NULL ;
ALTER TABLE test_table DROP PRIMARY KEY; #删除主键
ALTER TABLE test_table add PRIMARY KEY(id); #添加主键
References
- 故障案例--mysql5.5分区表的一个坑
- mysql 自动分区实践
- MySQL 分区表探索
- MySQL 表分区 A PRIMARY KEY must include all columns in the table's partitioning function
- A primary must include all columns in the table's partitioning location error? 需要和主键,分区的字段作为一个unique keyi进行处理
- [MySQL] AUTO_INCREMENTカラム変更がめんどくさい・・
mysql [err] 1075 - MySQL添加/删除主键、外键、唯一键、索引、自增
- 错误代码:1503 A UNIQUE INDEX must include all columns in the table's partitioning function
学习mysql水平分区和实践笔记的更多相关文章
- 对MySQL交换分区的实践
前言 在介绍交换分区之前,我们先了解一下 mysql 分区. 数据库的分区有两种:水平分区和垂直分区.而MySQL暂时不支持垂直分区,因此接下来说的都是水平分区.水平分区即:以行为单位对表进行分区.比 ...
- MySQL 水平拆分(读书笔记整理)
转:http://blog.csdn.net/mchdba/article/details/46278687 1,水平拆分的介绍 一般来说,简单的水平切分主要是将某个访问极其平凡的表再按照某个字段的某 ...
- mysql水平分区
解决问题:单表数据量过大 ALTER TABLE boc_url_log PARTITION BY RANGE (ulid) ( PARTITION log_1 VALUES LESS THAN () ...
- Linux实战教学笔记29:MySQL数据库企业级应用实践
第二十九节 MySQL数据库企业级应用实践 一,概述 1.1 MySQL介绍 MySQL属于传统关系型数据库产品,它开放式的架构使得用户选择性很强,同时社区开发与维护人数众多.其功能稳定,性能卓越,且 ...
- hadoop2.5.2学习及实践笔记(二)—— 编译源代码及导入源码至eclipse
生产环境中hadoop一般会选择64位版本,官方下载的hadoop安装包中的native库是32位的,因此运行64位版本时,需要自己编译64位的native库,并替换掉自带native库. 源码包下的 ...
- MYSQL之水平分区----MySQL partition分区I(5.1)
一. 分区的概念 二. 为什么使用分区?(优点) 三. 分区类型 四. 子分区 五. 对分区进行修改(增加.删除.分解.合并) 六 ...
- hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览
对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看star ...
- MySQL全面瓦解29:使用Partition功能实现水平分区
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括了 垂直拆分(Scale Up 纵向扩展)和 水平拆分(Scale Out 横向扩展) ,同时简要整理了水平分区的几种策略,现在来回顾一下. ...
- Mysql表分区的选择与实践小结
在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快.这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈. 一. 选择合适的解决方法 1. 分库分表. 分库 ...
随机推荐
- 高级UI晋升之View渲染机制(二)
更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 优化性能一般从渲染,运算与内存,电量三个方面进行,今天开始说聊一聊Android ...
- 用户态和内核态&操作系统
用户态和内核态 内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序. 用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被 ...
- winform textbox 不能唤醒windows 平板的软键盘解决办法
这个问题,研究了将近两个小时,baidu,google,好大一会,windows 平板本身的应用程序,必须浏览器,notepad都是可以自动唤起软键盘的,但是我的winfrom 程序就是不可以,起先怀 ...
- CentOS提示::unknown filesystem type 'ntfs'自动挂载NTFS分区的U盘或者移动硬盘
CentOS默认源里没有NTFS-3G,想要添加ntfs支持,无非是自己下载编译安装或者加源yum安装.重新安装了一个CentOS7,用的是添加aliyun的epel源来yum安装的方式,简单易行. ...
- map方法的简单使用
假设有一个数组a,将a中的数值以2倍的形式放到b数组中 <!DOCTYPE html> <html lang="en"> <head> < ...
- ES6-let cont 关键字
***let1. 作用: * 与var类似, 用于声明一个变量2. 特点: * 在块作用域内有效 * 不能重复声明 * 不会预处理, 不存在提升3. 应用: * 循环遍历加监听 * 使用let取代va ...
- [转]WPF的依赖属性是怎么节约内存的
WPF升级了CLR的属性系统,加入了依赖属性和附加属性.依赖属性的使用有很多好处,其中有两点是我认为最为亮眼的: 1)节省内存的开销; 2)属性值可以通过Binding依赖于其它对象上,这就使得我的数 ...
- leetcode-两个数组交集(包含重复元素)
Python解法代码: class Solution: def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: ...
- C# - *.dll vs *.lib (动态链接库 vs 静态链接库)
静态库 库(Library)就是一段编译好的二进制代码,加上头文件就可以使用. 静态链接库(Windows 下的*.lib, Linux & Mac 下的 .a).之所以叫做静态,是因为静态库 ...
- jQuery 事件 click() 方法,dblclick() 方法
click() 方法 当点击元素时,会发生 click 事件. 当鼠标指针停留在元素上方,然后按下并松开鼠标左键时,就会发生一次 click. click() 方法触发 click 事件,或规定当发生 ...