MySQL分区表有哪些限制因素

参考答案

MySQL分区表的限制因素:

1.  禁止构建

分区表达式不支持以下几种构建:

  • 存储过程,存储函数,UDFS或者插件。
  • 声明变量或者用户变量。

2.  算术和逻辑运算符

分区表达式支持+,-,*算术运算,但是不支持DIV和/运算。

 

3. 服务器SQL模式

如果要用用户自定义分区的表,在创建分区表时的SQL模式是不保留的。

4. 文件系统操作

分区或者重新分区(比如ALTER TABLE …PARTITION BY ...REORGANIZE PARTITION, 或者REMOVE PARTITIONING )操作取决于文件系统的实现。

 

5. 分区的最大个数

如果不是用NDB作为存储引擎的分区表,支持分区(这里子分区也包含在内)最大个数是8192。

6.不支持Query cache

分区表不支持query cache,在分区表的查询中自动避开了query cache。也就是说在分区表的查询语句中query cache是不起作用的。

 

7. 每个分区一个key caches

在MySQL 5.7版本中,可以通过CACHE INDEX和LOAD INDEX INTO CACHE来使用MyISAM分区表的key cache。可以为一个,几个或者所有分区都定义key cache,这样可以把一个,几个或者所有分区的索引预加载到key cache中。

8.不支持InnoDB分区表的外键

使用InnoDB引擎的分区表不支持外键。下面的两种具体情况来阐述:

  1. 在InnoDB表不能使用包含有外键的自定义分区;如果已经使用了外键的InnoDB表,则不能被分区。
  2. InnoDB表不能包含一个和用户自定义分区表相关的外键;使用了用户自定义分区的InnoDB表,不能包含和外键相关的列。

列出的限制的范围,包括使用InnoDB存储引擎的所有表。

违反这些限制的CREATE TABLE和ALTER TABLE语句,是不被允许的。

 

9. ALTER TABLE … ORDER BY

如果在分区表上执行ALTER TABLE … ORDER BY的话,会导致每个分区的行排序。

 

10. REPLACE语句在修改primary key上的效率

在某些情况下,需要修改表的primary key,如果你的应用程序使用了REPLACE语句,这些语句的结果可能会被大幅度修改。

11. 全文索引

分区表不支持全文索引或者搜索,即使分区表的存储引擎是InnoDB或者MyISAM也不行。

 

12. 空间列

分区表不支持空间列,比如点或者几何。

 

13.临时表

不能对临时表进行分区(Bug #17497)。

 

14. 日志表

不能对日志表进行分区,如果强制执行ALTER TABLE … PARTITION BY … 语句会报错。

 

15. 分区键的数据类型

分区键必须是整形或者结果是整形的表达式。不能用结果为ENUM类型的表达式。

下面两种情况例外:

  • 当用LINER分区时,可以使用除TEXT或者BLOBS以外的数据类型作为分区键,因为MySQL内部的 hash函数会从这些列中产生正确的数据类型。
  • 当用RANGE,LIST,DATE或者DATETIME列分区的话,可能会用string。

16. 子查询

即使子查询避开整形值或者NULL值,分区键不能子查询。

17. 子分区的问题

子分区必须使用HASH或者KEY分区,只有RANGE和LIST分区支持被子分区。

SUBPARTITION BY KEY要求显示指定子分区列,不像PARTITION BY KEY可以省略(这种情况下会默认使用表的primary key)。

18. 数据字典和索引字典选项

分区表的数据字典和索引字典受以下因素制约:

  • 表级的数据字典和索引字典被忽略(Bug #32091)。
  • 在Windows系统上,MyISAM分区表不支持独立分区或子分区的数据字典和索引字典选项。但是支持InnoDB分区表的独立分区或者子分区的数据字典。

19. 修复和重建分区表

分区表支持CHECK TABLE、 OPTIMIZE TABLE、ANALYZE TABLE、以及REPAIR TABLE语句。

分区表不支持mysqlcheck、myisamchk、以及myisampack操作。

20.导出选项

在MySQL 5.7.4以前的版本,不支持InnoDB分区表的FLUSH TABLES语句的导出选项(Bug #16943907)。

 

以上,是MySQL面试题【MySQL分区表有哪些限制因素】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

👇阅读作者更多技术干货👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧