SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.10.2009 16:12:26

1loyd
Участник
Зарегистрирован: 23.10.2009
Сообщений: 2

партицирование и ошибка открытия файла

Здравствуйте. До недвнего времени я работал с таблицами не превышающих 500 тысяч записей и посему мне хватало индексации полей и правильного распределения данных по таблицам. Но недавно пришлось начать работать с большими объемами данных от 20 млню до 70 млн. записей.
Я начал использовать партицирование создал 3 талицы с разбиение. Первые две нормально открываются, а третья выдает ошибку окрытия файла таблицы с расширением .frm .
Начал уменьшать количество партиций в таблице - все стало нормальным. Потом опять бац!!! м- и одна из трех разбитых таблиц не открываеца. Удаляю одну из трех таблиц и та которая не окрывалась вновь окрывается.. Вообще не понимаю почему так происходит((
Вот стркутура создаваемых таблиц:
1)
CREATE TABLE MAIN (
STR_ID     int(11) ,
STR_LEVEL int(11) ,
STR_ID_PARENT int(11) ,
STR_ID_CHILD int(11) ,
TEX_ID int(11) ,
TYP_ID int(11) ,
STR_TYPE int(11) ,
INDEX `STR_ID` (`STR_ID`),
INDEX `STR_LEVEL` (`STR_LEVEL`),
INDEX `TYP_ID` (`TYP_ID`)
) ENGINE = MYISAM
PARTITION BY RANGE(TYP_ID) (
PARTITION aa1 VALUES LESS THAN(200),
PARTITION aa2 VALUES LESS THAN(400),
PARTITION aa3 VALUES LESS THAN(600)
....
...

PARTITION aa200 VALUES LESS THAN(52000)
)"

2) CREATE TABLE NUMBER (
ART_IDD    int(11) ,
SEARCH_NUMBER varchar(20) ,
BRA_ID int(11) ,
ARL_KIND int(11),
DISPLAY_NUMBER varchar(30) ,
INDEX `ART_IDD` (`ART_IDD`),
INDEX `SEARCH_NUMBER` (`SEARCH_NUMBER`)
) ENGINE = MYISAM
PARTITION BY RANGE(ART_IDD) (
PARTITION aa1 VALUES LESS THAN(120000),
PARTITION aa2 VALUES LESS THAN(290610),
PARTITION aa3 VALUES LESS THAN(461220),
...
....

PARTITION aa190 VALUES LESS THAN(20422590)
)"

3)
CREATE ARTICLE (
ART_ID     int(11) ,
ART_ARTICLE_NR varchar(20) ,
ART_SUP_ID int(11) ,
ART_COMPLETE_DES_ID int(11),
INDEX `ART_ID` (`ART_ID`)
) ENGINE = MYISAM
PARTITION BY RANGE(ART_ID) (
PARTITION pa1 VALUES LESS THAN(67000),
PARTITION pa2 VALUES LESS THAN(134110),
...
...
PARTITION pa60 VALUES LESS THAN(2550070)
)

я уже и не заню к кому обращаться, у меня из знакомых с партициями вооще никто еще не работал, а на русскоязычных форумах такой проблемы не нашел не укого(к своему стыду английского пока не не знаю, пойду на курсы в ближайшее время).

Неактивен

 

#2 23.10.2009 16:56:13

1loyd
Участник
Зарегистрирован: 23.10.2009
Сообщений: 2

Re: партицирование и ошибка открытия файла

буквально сейчас создал эти три таблички с количеством разбиений чтобы они открывались все. Заполнил две из них данными (в одну 10 млн во вторую около 20 млн).  Создал четвертую промежуточную простую таблицу без разбиений, в которую начал заливать данные. на 30 млн-ах записей третья таблица, которая была разбита на партиции перестала открываться и выдает уже уже до боли знакомую ошибку не могу открыть файл(((

Неактивен

 

#3 23.10.2009 17:17:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: партицирование и ошибка открытия файла

Ну, у нас на форуме некоторое время назад обсуждалось сегментирование табличек:
http://sqlinfo.ru/forum/viewtopic.php?id=1439

Основная суть такая: большое количество разделов неизбежно приводит к большому
количеству одновременно открытых файловых дескрипторов. Каждый файлик разбитой
таблички держит на себе один дескриптор, причем открывается таблица вся целиком
всеми разделами, даже если Вы обращаетесь только к одному из них. Соответственно,
проверяйте ulimitы на процессе, значения table_cache, max_connections и т.п.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson