I have a table that I would like to partition in MYSQL 5.5. That I know how to do, but what I also need is to specify a disk for each of my partitions.
For example, I would like to put:
P01 in c:\
P02 in d:\
.......
and so on.
I'm currently using this statement: (which doesn't fulfil my requirements, but works perfectly)
ALTER TABLE transaction_transaction
PARTITION BY RANGE (effectiveDate_)(
PARTITION p01 VALUES Less Than (1288562400000),
PARTITION p02 VALUES Less Than (1293660000000),
PARTITION p03 VALUES Less Than (1298757600000),
PARTITION p04 VALUES Less Than (1303855200000),
PARTITION p05 VALUES Less Than (1308952800000),
PARTITION p06 VALUES Less Than (1314050400000),
PARTITION p07 VALUES Less Than (1319148000000),
PARTITION p08 VALUES Less Than (1324245600000),
PARTITION p09 VALUES Less Than (1329343200000),
PARTITION p10 VALUES Less Than (1334440800000),
PARTITION p11 VALUES Less Than (1339538400000),
PARTITION p12 VALUES Less Than (1344636000000),
PARTITION p13 VALUES Less Than (1349733600000),
PARTITION p14 VALUES Less Than (1354831200000),
PARTITION p15 VALUES Less Than (1359928800000),
PARTITION p16 VALUES Less Than (1365026400000),
PARTITION p17 VALUES Less Than (1370124000000)
);
解决方案...
PARTITION p0
VALUES LESS THAN (1288562400000)
DATA DIRECTORY ="C:\\foo\\bar"
INDEX DIRECTORY ="C:\\foo\\baz",
...
Mind that this needs NO_DIR_IN_CREATE to be off
As user963602 points out, this doesn't directly work on windows due to a MySQL bug, see my comment for a workaround