Bug #40227 | I can't create partitions over 8 number in mysql cluster. | ||
---|---|---|---|
Submitted: | 22 Oct 2008 0:45 | Modified: | 28 Oct 2008 5:41 |
Reporter: | ws lee | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Cluster: Cluster (NDB) storage engine | Severity: | S3 (Non-critical) |
Version: | mysql-5.1-telco-6.3 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | 5.1, 5.1-telco-6.2 bzr, mysql5.1.27-ndb6.3.17 |
[22 Oct 2008 0:45]
ws lee
[22 Oct 2008 5:46]
Jonas Oreland
do you have any benchmark showing that it's a good idea to have many partitions on an 2-node cluster?
[22 Oct 2008 5:55]
Sveta Smirnova
Thank you for the report. Verified as described.
[22 Oct 2008 6:42]
ws lee
To. Jonas Oreland t_default and t_part8 are same table and have same data. only partition number is not same. mysql> select count(*) from t_default; +----------+ | count(*) | +----------+ | 1463340 | +----------+ 1 row in set (0.04 sec) mysql> select count(*) from t_part8; +----------+ | count(*) | +----------+ | 1463340 | +----------+ 1 row in set (0.00 sec) mysql> select table_name,partition_name from information_schema.partitions where table_schema='test' and table_name in ('t_default','t_part8') order by table_name,partition_name; +------------+----------------+ | table_name | partition_name | +------------+----------------+ | t_default | p0 | | t_default | p1 | | t_part8 | p0 | | t_part8 | p1 | | t_part8 | p2 | | t_part8 | p3 | | t_part8 | p4 | | t_part8 | p5 | | t_part8 | p6 | | t_part8 | p7 | +------------+----------------+ 10 rows in set (0.00 sec) created_t column has not index. mysql> select max(created_t) from t_default; +---------------------+ | max(created_t) | +---------------------+ | 2008-10-22 11:10:38 | +---------------------+ 1 row in set (16.51 sec) mysql> select max(created_t) from t_default; +---------------------+ | max(created_t) | +---------------------+ | 2008-10-22 11:10:38 | +---------------------+ 1 row in set (16.62 sec) mysql> select max(created_t) from t_part8; +---------------------+ | max(created_t) | +---------------------+ | 2008-10-22 11:10:38 | +---------------------+ 1 row in set (5.11 sec) mysql> select max(created_t) from t_part8; +---------------------+ | max(created_t) | +---------------------+ | 2008-10-22 11:10:38 | +---------------------+ 1 row in set (5.15 sec) Like the upper, 8 partition talbe is faster than 2 partion table, 3 times.
[23 Oct 2008 11:14]
Jonas Oreland
good angle.
[24 Oct 2008 11:15]
Frazer Clement
Hi, It looks like the extra partitions you create have the effect of giving you a bigger result batch size - the number of rows sent from the NDBD nodes to the MySQLD node at a time - this is speeding up some scans. You should be able to get the same/better speedup by keeping the default partitioning, and increasing the batch size configuration for your MySQLD. http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-api-definition.html Did you have any other reason for using partitioning? Having multiple key partitions per node is not generally useful, unless you hit hard limits on the number of rows/partition. It adds memory and some CPU overhead in the data nodes. Frazer
[28 Oct 2008 5:41]
ws lee
To. Frazer Clement http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-api-definition.html BatchByteSize=1M BatchSize=992 MaxScanBatchSize=16M According to upper parameter, Table full scan becamed faster. and upper parameter + 8 paration becamed more and more faster. many partion is useful full scan alomost case.