Назад | Перейти на главную страницу

«Невозможно создать таблицу» при наличии большого количества разделов

У меня сейчас проблема, которую я не понимаю. Куда бы я ни посмотрел, там написано, что mySQL (5.5) / InnoDB не имеет ограничения таблицы.

Я хотел протестировать сжатие InnoDB и собирался создать пустую копию существующей таблицы и столкнулся со следующей проблемой.

это работает:

CREATE TABLE `hsc` (
    LOTS OF STUFF
) ENGINE=InnoDB  CHARSET=utf8
PARTITION BY RANGE (pid)
SUBPARTITION BY HASH (cons)
SUBPARTITIONS 2
(PARTITION hsc_p0 VALUES LESS THAN (10000) ,
 PARTITION hsc_p1 VALUES LESS THAN (20000) ,
 PARTITION hsc_p2 VALUES LESS THAN (30000) ,
 PARTITION hsc_p3 VALUES LESS THAN (40000) ,
 PARTITION hsc_p4 VALUES LESS THAN (50000) ,
 PARTITION hsc_p40 VALUES LESS THAN (4000000) );

этот не делает:

CREATE TABLE `hsc` (
    LOTS OF STUFF
) ENGINE=InnoDB  CHARSET=utf8
PARTITION BY RANGE (pid)
SUBPARTITION BY HASH (cons)
SUBPARTITIONS 2
(PARTITION hsc_p0 VALUES LESS THAN (10000) ,
 PARTITION hsc_p1 VALUES LESS THAN (20000) ,
 PARTITION hsc_p2 VALUES LESS THAN (30000) ,
 PARTITION hsc_p3 VALUES LESS THAN (40000) ,
 PARTITION hsc_p4 VALUES LESS THAN (50000) ,
 PARTITION hsc_p5 VALUES LESS THAN (75000) ,
 PARTITION hsc_p6 VALUES LESS THAN (100000) ,
 PARTITION hsc_p7 VALUES LESS THAN (125000) ,
 PARTITION hsc_p8 VALUES LESS THAN (150000) ,
 PARTITION hsc_p9 VALUES LESS THAN (175000) ,
 PARTITION hsc_p40 VALUES LESS THAN (4000000) );

ERROR 1005 (HY000): Can't create table 'hsc' (errno: 1)

Его можно воспроизвести, удалив количество разделов и добавив их снова. он не должен ничего делать с именем таблицы, поскольку я пробовал разные имена. на жестком диске также достаточно свободного места.

/dev/simfs         230G   26G  192G  12% /var/lib/mysql.mnt

Ограничений по перегородкам быть не должно

http://dev.mysql.com/doc/refman/5.5/en/partitioning-limitations.html    
Maximum number of partitions.  The maximum possible number of partitions for a given table (that does not use the NDB storage engine) is 1024. This number includes subpartitions.

я увеличил оба open_files

show variables where variable_name LIKE '%open_files%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| innodb_open_files | 512   |
| open_files_limit  | 1536  |
+-------------------+-------+

Без изменений. Есть подсказки, с чего мне начать искать?


ОБНОВЛЕНИЕ: все это работает в среде openvz. Я увидел в users_beancounters, что проблема с numflock, поэтому я увеличил его. но проблема все еще сохраняется.

возможно, это поможет:

ulimit -a

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 515011
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 515011
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

cat / proc / user_beancounters

Version: 2.5
       uid  resource                     held              maxheld              barrier                limit              failcnt
      200:  kmemsize                  9309653             13357056             14372700             14790164                    0
            lockedpages                     0                 1008                 2048                 2048                    0
            privvmpages                675424               686528              1048576              1572864                    0
            shmpages                       33                  673                21504                21504                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            numproc                        49                   90                  240                  240                    0
            physpages                  243761               246945                    0  9223372036854775807                    0
            vmguarpages                     0                    0              1048576              1048576                    0
            oomguarpages                81672                83305              1048576              1048576                    0
            numtcpsock                      6                    8                  360                  360                    0
            numflock                      175                  188                  512                  512                    8
            numpty                          1                    9                   16                   16                    0
            numsiginfo                      0                   48                  256                  256                    0
            tcpsndbuf                  104640               263912              1720320              2703360                    0
            tcprcvbuf                   98304               131072              1720320              2703360                    0
            othersockbuf                32368                89304              1126080              2097152                    0
            dgramrcvbuf                     0                 2312               262144               262144                    0
            numothersock                   19                   28                  360                  360                    0
            dcachesize                2285052              3624426              3409920              3624960                    0
            numfile                       616                  870                 9312                 9312                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            numiptent                      24                   24                  128                  128                    0

решил все это.

Изначально проблема заключалась в блокировке в openvz.

ошибка после того, как я увеличил numflock, где на основе брошенного файла в каталоге данных mysql.

Я отбрасываю таблицу, удаляю оставшиеся файлы из таблицы, и тогда все сработало.