首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为表中的所有分区设置公共数据目录

为表中的所有分区设置公共数据目录
EN

Stack Overflow用户
提问于 2018-02-06 11:31:33
回答 1查看 260关注 0票数 0

我正在尝试用DATA DIRECTORY在另一个驱动器上创建一个分区表

代码语言:javascript
运行
复制
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/stats_tables/test/db/mysql/';
Query OK, 0 rows affected (0.03 sec)

mysql> \! ls /stats_tables/test/db/mysql/db_test/
t1.ibd
mysql> drop table t1;
Query OK, 0 rows affected (0.01 sec)

因此,我们看到在驱动器上成功地创建了一个未分区的表。现在,让我们对分区表进行相同的尝试:

代码语言:javascript
运行
复制
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) DATA DIRECTORY = '/stats_tables/test/db/mysql/' PARTITION BY HASH ( c1 ) PARTITIONS 10;
Query OK, 0 rows affected (0.34 sec)

mysql> \! ls /stats_tables/test/db/mysql/db_test/
mysql> \! ls /defa_storage/test/db/mysql/db_test/t1* | xargs -n1 basename
t1.frm
t1.par
t1#P#p0.ibd
t1#P#p1.ibd
t1#P#p2.ibd
t1#P#p3.ibd
t1#P#p4.ibd
t1#P#p5.ibd
t1#P#p6.ibd
t1#P#p7.ibd
t1#P#p8.ibd
t1#P#p9.ibd

我们看到,在本例中,它是在常规数据目录下创建的。这在MySQL 5.5文档中有很好的解释

当使用InnoDB存储引擎为表定义分区时,数据目录和索引目录选项没有任何效果。

尽管我使用的是版本5.6,而且在其文件中也没有提到这样的限制。

无论如何,是否有一种方法可以为我的所有DATA DIRECTORY分区设置一个通用的BY HASH

EN

回答 1

Stack Overflow用户

发布于 2018-02-06 14:23:29

最后,我发现实际上可以以这种方式控制创建的分区:

代码语言:javascript
运行
复制
CREATE TABLE ...
PARTITION BY HASH( ... )
(
    PARTITION p0 DATA DIRECTORY = '/another/directory',
    PARTITION p1 DATA DIRECTORY = '/another/directory', 
    PARTITION p2 DATA DIRECTORY = '/another/directory', 
    PARTITION p3 DATA DIRECTORY = '/another/directory', 
    ...
);

最后一部分可以很容易地由任何脚本语言生成,比如Python:

代码语言:javascript
运行
复制
max_partitions = 100
for i in range(0, max_partitions):
  print("PARTITION p" + str(i) + " DATA DIRECTORY = '/another/directory',")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48642067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档