Как в MySQL можно работать с большим объемом данных - от 10 млн строк в таблицах?
Ответы
Начиная с версии 5.1 в MySQL появилась возможность разбивать таблицу на партиции/разделы. То есть если у вас таьблица состоит из 30 млн строк то вы можете ее разбить на 60 разделов по 500 тысяч строк каждый) и по сути если вы будете обращатьсяк одному разделу, а не к всей таблице.
на хабре - http://habrahabr.ru/blogs/mysql/39918/
Но есть одно НО.
Физически каждый раздел это два файла. И чем больше у вас разделов тем больше у вас файлов(файловых дескрипторов). При обращении к таблице открываются все разделы. То есть если у вас 60 разделов то будут открыты все 120. Это вызывает ошибку окрытия одного из файлов(раздела) таблицы с расширением .frm. Для решения этой проблемы нужно увеличить в конфиге MySQL - my.conf(для винды не помню названия расширения) значения параметра table_cache. Стандартно 64.
table_cache - Количество открытых таблиц для ВСЕХ потоков. Увеличение значения приведет к увеличению количества используемых дескрипторов файла. MySQL необходимо 2 дескриптора для каждой открытой таблицы.
Я увеличил до 1000))) все работает))
Пример 4 таблицы - 50 млн, 20 млн и 2 по несколько тысяч строк. Запрос состоит из нескольких джойнов - максимум 2 секунды)) МАКСИМУМ!!!
понимаю сумбурно, но если что спрашивайте)
- Автор: vick
- 01.11.2009 23:52
FAQStorage.com