gpt4 book ai didi

mysql - 为表中的所有分区设置公共(public)数据目录

转载 作者:行者123 更新时间:2023-11-29 10:24:07 26 4
gpt4 key购买 nike

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

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)

因此我们看到驱动器上已成功创建未分区表。现在让我们对分区表尝试同样的操作:

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 documentation中有完美的解释:

The DATA DIRECTORY and INDEX DIRECTORY options have no effect when defining partitions for tables using the InnoDB storage engine.

虽然我使用的是5.6版本,并且its documentation中没有提到这样的限制.

无论如何,有没有办法为我的所有 BY HASH 分区设置一个通用的 DATA DIRECTORY

最佳答案

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

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:

max_partitions = 100
for i in range(0, max_partitions):
print("PARTITION p" + str(i) + " DATA DIRECTORY = '/another/directory',")

关于mysql - 为表中的所有分区设置公共(public)数据目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com