mysql5.7 分区表_mysql分区表学习
大家好,又见面了,我是你们的朋友全栈君。
一:怎样对已有数据的表进行表分区
可以直接alter table进行修改。
如:
USE dba;
ALTER TABLE t3 PARTITION BY RANGE(id)
(
PARTITION p1 VALUES LESS THAN(5),
PARTITION p2 VALUES LESS THAN (10),
PARTITIONp3 VALUES LESS THAN maxvalue
);
二:分区表的限制
2.1 不支持外键
当表中一个字段建了外键,引用另一个表字段时,在该表上无法创建分区表。会报错.
Mysql 5.5:
Error Code: 1217
Cannot delete or update a parent row: aforeign key constraint fails
Mysql 5.7:
ERROR 1506 (HY000): Foreign keys are notyet supported in conjunction with partitioning
2.2 分区键必须是INT类型,或者通过表达式返回INT类型
分区键必须是INT类型,或者通过表达式返回INT类型,可以为NULL。唯一的例外是当分区类型为KEY分区的时候,可以使用其他类型的列作为分区键(BLOB or TEXT列除外)
2.3如果表中有主键和唯一索引,按主键字段进行分区时,唯一索引列应该包含分区键。
例如:t4表有个主键和唯一索引。
变成分区表时会报错:
ALTER TABLE t4PARTITION BY RANGE(id)
(
PARTITION p1VALUES LESS THAN(2),
PARTITION p2VALUES LESS THAN maxvalue
)
Error Code: 1503
A UNIQUE INDEX must include all columns in the table’spartitioning function
唯一索引应该这样创建:
CREATE UNIQUEINDEX ind_age ON t4(id,age) ;
再按主键分区,就不会报错了。
2.4 目前mysql不支持空间类型和临时表类型进行分区。不支持全文索引
对临时表分区时,会报错:
Error Code: 1562
Cannot create temporary table withpartitions
CREATE TABLE t10(
id INT,
title VARCHAR(30),
FULLTEXT (title)
) ENGINE=MYISAM
PARTITION BY RANGE(id)
(
PARTITION p1 VALUES LESS THAN(9),
PARTITION p2 VALUES LESS THAN maxvalue
);
报错:
Error Code: 1214
The used table type doesn’t supportFULLTEXT indexes
对有空间类型列的表分区时,报错:
Error Code: 1178
The storage engine for the table doesn’tsupport GEOMETRY
2.5 对象限制
下面这些对象在不能出现在分区表达式
Stored functions, stored procedures, UDFs, orplugins.
Declared variables or user variables.
2.6 运算限制
支持加减乘等运算出现在分区表达式,但是运算后的结果必须是一个INT或者NULL。
支持DIV,不支持/
|, &, ^, <>, and ~ 不允许出现在分区表达式中
2.7 sql_mode限制
官方强烈建议你在创建分区表后,永远别改变mysql的sql_mode。因为在不同的模式下,某些函数或者运算返回的结果可能会不一样。
2.8 不支持query_cache
2.9 分区键不能是一个子查询
即使子查询返回的是int值或者null.
2.10 子分区
只有RANG和LIST分区能进行子分区。HASH和KEY分区不能进行子分区。
子分区必须是HASHorKEY类型。
2.11 分区表不支持INSERTDELAYED
SQL代码
mysql> insert DELAYED into user_msg_pvalues(18156629,0,0,0,0,0,0,0,0,0);
ERROR 1616 (HY000): DELAYED option not supportedfor table ‘user_msg_p’
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143812.html原文链接:https://javaforall.cn
相关文章
- mysql慢查询优化方法_MySQL查询优化
- MySQL索引和主键:提升查询性能的必备工具(mysql索引和主键)
- MySQL源码分析,掌握MySQL核心技术(mysql源码学习)
- 深入学习:PHP如何配置MySQL(php如何配置mysql)
- MySQL:数据库的力量与活力(mysqls)
- 查看MySQL版本:一步一步操作(怎么查mysql版本)
- MySQL入门学习指南(mysql学习教程)
- 快速入门MySQL,21分钟轻松掌握数据库技能!(21分钟学习mysql)
- 学习MySQL正则表达式提升操作效率(mysql使用正则表达式)
- 深入学习计算机二级数据库MySQL:解密其运作机制和数据管理核心(计算机二级数据库mysql)
- 操作MySQL的基本操作:一步一步学习(mysql的基本)
- 技巧MySQL:学习高效的SQL技巧(mysql高效sql)
- 学习MySQL命令行操作:CMD指南(mysql命令执行cmd)
- 学习MySQL中文语言学习之路(mysql中文语言)
- MySQL:轻量级高性能数据库系统概述(mysql数据库描述)
- MySQL添加表数据:简单易行(mysql添加表的数据)
- MySQL视图索引:让你更轻松快捷管理数据(mysql 视图索引)
- 深入浅出MySQL中的Code学习实用编程技巧(mysql中code)
- MySQL学习笔记写循环语句优化与技巧(mysql中写循环语句)
- MySQL 学会使用循环优化数据处理(mysql中写循环)
- 如何保证MySQL安全学习使用mysqlsafe进程(mysql_safe进程)
- MySQL中使用zlib压缩数据的方法(mysql zlib)
- MySQL服务无法自动启动,如何解决(mysql 不能自动启动)
- 探究MySQL缺失的功能和应对措施(mysql不支持的功能)