我正在尝试跨越多个磁盘划分一个非常大的(100M行)表,以获得空间并提高吞吐量。我安装,格式化并将两个1TB SAS磁盘作为/ db1和/ db2安装到我的Dell Poweredge服务器中以保存表。我的create语句是(为简洁省略一些行):
DROP TABLE IF EXISTS allreads;
CREATE TABLE allreads (
uuid int(11) NOT NULL AUTO_INCREMENT,
sample_id int(11) NOT NULL,
uid int(11) NOT NULL,
rid char(100) NOT NULL,
seq text(1000) NOT NULL DEFAULT '',
v char(30) NOT NULL DEFAULT '',
d char(30) NOT NULL DEFAULT '',
j char(30) NOT NULL DEFAULT '',
c char(30) NOT NULL DEFAULT '',
pep char(100) NOT NULL DEFAULT '',
PRIMARY KEY (uuid,sample_id),
KEY index_v (v),
KEY index_j (j),
KEY index_cdr3 (pep)
) ENGINE=InnoDB
AUTO_INCREMENT=1
DEFAULT CHARSET=utf8
PARTITION BY RANGE(sample_id)
SUBPARTITION BY HASH(uuid) (
PARTITION p0 VALUES LESS THAN (4500) (
SUBPARTITION p0a
DATA DIRECTORY='/db1/allreads'
INDEX DIRECTORY='/db1/allreads',
SUBPARTITION pob
DATA DIRECTORY='/db1/allreads'
INDEX DIRECTORY='/db1/allreads'
),
PARTITION P1 VALUES LESS THAN (9000) (
SUBPARTITION p1a
DATA DIRECTORY='/db2/allreads'
INDEX DIRECTORY='/db2/allreads',
SUBPARTITION p1b
DATA DIRECTORY='/db2/allreads'
INDEX DIRECTORY='/db2/allreads'
)
)
;
我几乎逐字地从MySQL 5.5手册中获取了分区位。
在/ db1或/ db2中没有创建任何内容,分区会在默认表空间中结束
sudo ls -l /data/mysql/cdr3/
total 13530388
-rw-rw---- 1 mysql mysql 13654 Aug 27 10:24 allreads.frm
-rw-rw---- 1 mysql mysql 60 Aug 27 10:24 allreads.par
-rw-rw---- 1 mysql mysql 147456 Aug 27 10:24 allreads#P#p0#SP#p0a.ibd
-rw-rw---- 1 mysql mysql 147456 Aug 27 10:24 allreads#P#p0#SP#pob.ibd
-rw-rw---- 1 mysql mysql 503316480 Aug 27 10:41 allreads#P#P1#SP#p1a.ibd
-rw-rw---- 1 mysql mysql 503316480 Aug 27 10:41 allreads#P#P1#SP#p1b.ibd
-rw-rw---- 1 mysql mysql 65 Aug 14 13:05 db.opt
我看到分区名称中的拼写错误,P1和pob,肯定不会是它。如果需要,我可以提供my.cnf行。
我看不出与手册相关的陈述有什么问题。谁能告诉我我做错了什么?有没有人让这个功能起作用?
我正在使用5.5.38-0ubuntu0.14.04.1-log(Ubuntu)
答案 0 :(得分:1)
版本5.5.38不支持InnoDB的DATA DIRECTORY语句。将新磁盘重新格式化为RAID,因此问题没有实际意义。