имхо индекс b-tree в этом плане так же устроен как и партиция. всегда можно поделить индекс на 10 частей. и он будет «меньше». только нужно выбрать одну из этих частей (при этом выбрать одну из 10 частей «копеечная» операция)
есть пруфлинк что в таком виде партиции улучшают производительность?
при этом столько же тиков (или больше) прибавляется учитывая что mysql выбрирает нужную партицию перед запросом.
иначе бы можно было автоматически всем таблицам делать партиции и партиции партиций и всё было бы быстрее.
дело в том что пользвателей, например 10 000, а партиций будет меньше 10 000. например 100. в итоге все запросы распространятся равномерно по партициям.
не слышал что в этом случае у mysql будет выигрыш (если суммарный объём данных для просмотра точно такой же как был, но теперь есть партиции).
всегда сталкивался с ситуацией когда после партицирование к одной из партиций идут обращения чаще чем к другим в один момент времени.
1. только created_date < now()-1 month
2. переносить из таблицы в таблицу скриптами. раз в день.
3. в контроллере который показывает inbox сделать руками логику которая начинает читать из Message_archive, если сообщения в Messages кончились, а далее из таблиц Message_month_year (если человек упорно жмёт на pagination)
если чтото будет смущать можно сделать ещё таблицу в которой для каждого (user, month, year) будет записано кол-во сообщений.
так же можно вначале внедрить логи в файлик, кто какие сообщения читал писал, и в какой бы таблице они были, если была бы эта схема. и посмотреть статистику.
Я тоже за этот вариант. Плюс кэширование memcached. Активные пользователи, часто переписывающиеся будут обращаться к одной таблице т.к. у них сообщения в инбоксе в основном за недавние даты.
Активные не часто переписывающиеся будут брать сообщения из кэша.
Активная запись будет только в одну таблицу.
Можно ещё извратиться в архивную таблицу помещать все сообщения которых нет на первых трёх страницах инбокса.
уточнить с партициями:
1. я так понял это mysql?
2. про партиции — восстановление из бэкапа долгое по сравнению с такой же таблицей без партиций?
3. создание партиций медленное по сравнению с любым другим alter table?
есть пруфлинк что в таком виде партиции улучшают производительность?