MySQL 5: работа с очень большими объёмами данных
Вопрос такой: как оптимизировать работу БД или запросы так, чтобы inner или left join-ы по таблицам, где у каждой ещё по where, работали максимально быстро?
Индексы, конечно, использую. Только нет уверенности, что использую их наиболее оптимально. Как вариант сейчас рассматриваю разбиение одной миллиардной таблицы на много примерно десятимиллионных.
Я к тому, что разбиение таблицы на более мелкие в сущности и есть этот самый Map, а объединение аналитики - Reduce шаг.
Индексы, конечно, использую. Только нет уверенности, что использую их наиболее оптимально.
EXPLAIN поможет построить запрос оптимально. а show index - покажет кардинальность индексов в таблице, т. е. пользует ли MySQL их вообще.
Как вариант сейчас рассматриваю разбиение одной миллиардной таблицы на много примерно десятимиллионных.
и уложить базу join'ами между этими таблицами? :)
вообще странен выбор MySQL. не самый лучший выбор для того, чтобы ворочать гигантскими объемами данных. да еще, если нужны сложные запросы.
EXPLAIN использую, но есть ощущение, что не всегда могу его интерпретировать правильно в том плане, что понять, насколько оптимальный получился запрос.
Обижаешь:) Если сплитить таблицу, то так, чтобы не надо было джоинить, конечно. Просто собирать результат как сумму нескольких запросов. Только не уверен, что это будет производительней, ведь машина-то одна.
А что в таких ситуациях нужно? Oracle? MySQL использую просто потому, что он уже стоит на сервере и начинались задачки с сотен тысяч записей.
Я к тому, что разбиение таблицы на более мелкие в сущности и есть этот самый Map, а объединение аналитики - Reduce шаг.
Разве Map/Reduce - это не для кластеров? Дело в том, что у меня сейчас только одна машина, пусть и мощная. И надо придумать, как же ворочать запросы для огромных таблиц в рамках одного многоядерного процессора и дискового пространства.
Я не являюсь специалистом в области датамайнинга, но являюсь сторонником подхода "сперва посмотреть как делается правильно" (ну, или на то, что очень похоже на "правильно"), так вот задача действительно похожа на те, которые решается подобными системами. :rolleyes:
З.Ы. А вдруг еще одну машинку под проект выделят, всяко бывает же. ;)
А что в таких ситуациях нужно? Oracle? MySQL использую просто потому, что он уже стоит на сервере и начинались задачки с сотен тысяч записей.
например - PostgreSQL