Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте. До недвнего времени я работал с таблицами не превышающих 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)
)
я уже и не заню к кому обращаться, у меня из знакомых с партициями вооще никто еще не работал, а на русскоязычных форумах такой проблемы не нашел не укого(к своему стыду английского пока не не знаю, пойду на курсы в ближайшее время).
Неактивен
буквально сейчас создал эти три таблички с количеством разбиений чтобы они открывались все. Заполнил две из них данными (в одну 10 млн во вторую около 20 млн). Создал четвертую промежуточную простую таблицу без разбиений, в которую начал заливать данные. на 30 млн-ах записей третья таблица, которая была разбита на партиции перестала открываться и выдает уже уже до боли знакомую ошибку не могу открыть файл(((
Неактивен
Ну, у нас на форуме некоторое время назад обсуждалось сегментирование табличек:
http://sqlinfo.ru/forum/viewtopic.php?id=1439
Основная суть такая: большое количество разделов неизбежно приводит к большому
количеству одновременно открытых файловых дескрипторов. Каждый файлик разбитой
таблички держит на себе один дескриптор, причем открывается таблица вся целиком
всеми разделами, даже если Вы обращаетесь только к одному из них. Соответственно,
проверяйте ulimitы на процессе, значения table_cache, max_connections и т.п.
Неактивен