LINUX.ORG.RU
ФорумAdmin

Недоумения тред: таблица партиционирована, но файл frm всего один!

 ,


0

1

ОТВЕТ: https://www.packtpub.com/packtlib/book/Application-Development/9781783981540/...

Собственно, сделал кучку alter table'ов, данные в таблице разлились по партициям, что видно в information_schema.partitions. Но при этом файл данных для этой таблицы есть только один (всегда было так, что для каждой партиции - свой файл).

Собственно, почему могло так статься?

 CREATE TABLE `history` (
  `itemid` bigint(20) unsigned NOT NULL,
  `clock` int(11) NOT NULL DEFAULT '0',
  `value` double(16,4) NOT NULL DEFAULT '0.0000',
  `ns` int(11) NOT NULL DEFAULT '0',
  KEY `history_1` (`itemid`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
/*!50100 PARTITION BY RANGE (clock)
(PARTITION p2016_02_21 VALUES LESS THAN (1456002000) ENGINE = InnoDB,
 PARTITION p2016_02_22 VALUES LESS THAN (1456174800) ENGINE = InnoDB,
 PARTITION p2016_02_23 VALUES LESS THAN (1456261200) ENGINE = InnoDB,
 PARTITION p2016_02_24 VALUES LESS THAN (1456347600) ENGINE = InnoDB,
 PARTITION p2016_02_25 VALUES LESS THAN (1456434000) ENGINE = InnoDB,
 PARTITION p2016_02_26 VALUES LESS THAN (1456520400) ENGINE = InnoDB,
 PARTITION p2016_02_27 VALUES LESS THAN (1456606800) ENGINE = InnoDB,
 PARTITION p2016_02_28 VALUES LESS THAN (1456693200) ENGINE = InnoDB,
 PARTITION p2016_02_29 VALUES LESS THAN (1456779600) ENGINE = InnoDB,
 PARTITION p2016_03_01 VALUES LESS THAN (1456866000) ENGINE = InnoDB,
 PARTITION p2016_03_02 VALUES LESS THAN (1456952400) ENGINE = InnoDB,
 PARTITION p2016_03_03 VALUES LESS THAN (1457038800) ENGINE = InnoDB,
 PARTITION p2016_03_04 VALUES LESS THAN (1457125200) ENGINE = InnoDB,
 PARTITION p2016_03_05 VALUES LESS THAN (1457211600) ENGINE = InnoDB) */

И при этом:

$ find /zbxdb/data/zabbix/ -name 'history*'
/zbxdb/data/zabbix/history.frm
/zbxdb/data/zabbix/history_uint.frm
/zbxdb/data/zabbix/history_str.frm
/zbxdb/data/zabbix/history_log.frm
/zbxdb/data/zabbix/history_text.frm
/zbxdb/data/zabbix/history.par
/zbxdb/data/zabbix/history_log.par
/zbxdb/data/zabbix/history_str.par
/zbxdb/data/zabbix/history_text.par
/zbxdb/data/zabbix/history_uint.par

★★★★★

Последнее исправление: DRVTiny (всего исправлений: 2)

Извиняюсь за глупый вопрос, но у вас точно innodb_file_per_table не выставлен в 0?

znenyegvkby
()

ОТВЕТ:

Вопрос снят. Увидел. Справедливости ради стоит отметить что данный параметр отключен по умолчанию в mariaDB версиях 5.3 и ниже.

znenyegvkby
()

По-хорошему раз уж ты дошёл до партиционирования, то делай file_per_table и раскидывай партишены по разным дискам для ускорения :)

blind_oracle ★★★★★
()
Ответ на: комментарий от znenyegvkby

Выключен. На это я и напоролся - из-за того, что на остальных серверах стоит MySQL Enterprise 5.7 и 5.6, где innodb_file_per_table включен.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_f...

Permitted Values (>= 5.5.7) Default OFF
Permitted Values (<= 5.5.6) Default ON

https://mariadb.com/kb/en/mariadb/xtradbinnodb-server-system-variables/#innod...

Default Value: ON (>= MariaDB 5.5), OFF (<= MariaDB 5.3)

Вот и попробуй их понять после этого :) Я давно уже перестал воспринимать их как что-то одно, стараюсь по возможности документацию читать отдельно, ну их к лешему. Хотя раньше практически все между ними сходилось, если возникали проблемы.

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

А еще доки устаревшие. Если на MySQL перейти сразу на 5.7, то

http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_f...

Permitted Values Default ON

Как я понял, раз версию перестали указывать, то теперь перманентно innodb_file_per_table будет включен.

znenyegvkby
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.