powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как расставить индексы с партицией?
5 сообщений из 5, страница 1 из 1
Как расставить индексы с партицией?
    #38951179
inpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
аблица 1 (таблица сообщений, привязка по id_parent к таблице переписок между А и Б):
`id` AUTO_INCREMENT
`id_parent` (привязка к другой таблице)
`text`

Используются запросы:
DELETE FROM `table1` WHERE `id_parent` = 1 AND `id` = 1
SELECT ... WHERE `id_parent` = 1 ORDER BY `id` DESC

Хочу создать партиции по полю `id_parent`.
Если без партиций, то я бы создал следующие индексы:
1) PK `id` (для первого)
2) `id_parent` + `id` (для второго запроса)

Для партиций надо индекс объединить AUTO_INCREMENT вместе с колонкой для разбития, итого PK: `id`+`id_parent`. Создать `id_parent` + `id` не получается из-за ошибки "Incorrect table definition; there can be only one auto column and it must be defined as a key".

Вопрос: Как правильно создать индексы и партиции в данной задаче?

Знакомый советует создать лишь один PK `id` + `id_parent`, а запросы переписать так:
SELECT ... WHERE `id` > 0 AND `id_parent` = 1 ORDER BY `id` DESC . Мне кажется это немного странным костылём и проще было бы создать 2 составных индекса: PK `id` + `id_parent` и обычный `id_parent` + `id`.

Помогите разобраться как грамотно это делается...
П.С. Объемы операций в сутки: 400-450 тысяч INSERT, 400-450 тысяч DELETE, и несколько десятков миллионов SELECT. Конечно же я удаляю 1 раз в сутки, когда нет активности на сайте.
...
Рейтинг: 0 / 0
Как расставить индексы с партицией?
    #38951396
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inpost Вопрос: Как правильно создать индексы и партиции в данной задаче? Нет, вопросов как минимум два:
1)какие запросы вы собираетесь ускорять
2)по ответам на первый вопрос можно задать второй: а нужны ли вам вообще партиции (и индексы, если уж на то пошло)
...
Рейтинг: 0 / 0
Как расставить индексы с партицией?
    #38951515
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirinpost Вопрос: Как правильно создать индексы и партиции в данной задаче? Нет, вопросов как минимум два:
1)какие запросы вы собираетесь ускорять
2)по ответам на первый вопрос можно задать второй: а нужны ли вам вообще партиции (и индексы, если уж на то пошло)

самый главный вопрос - сколько записей в таблице. если меньше нескольких десятков миллионов - разделы не нужны.
...
Рейтинг: 0 / 0
Как расставить индексы с партицией?
    #38951832
inpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Основная проблема из соседнего раздела:
MySQL падает.
Вторая проблема, которую я ранее ещё несколько лет назад стал замечать, что если в таблице 40млн. записей и весит таблица 20GB, то она начинала раньше крашиться. Сейчас вот другая проблема - мускул начинает лишнее жрать и умирает без повода. Вот эта тема: http://www.sql.ru/forum/1153583-a/padaet-mysql-mysqld-safe-mysqld-restarted-bez-drugih-logov

автор"самый главный вопрос - сколько записей в таблице. если меньше нескольких десятков миллионов - разделы не нужны."
40млн. сейчас. Рост будет в любом случае. По прогнозам через 2-3 года будет 60-80млн.

автор"1)какие запросы вы собираетесь ускорять"
Кроме запросов, что я выше показал более не используются. Повторюсь:
DELETE FROM `table1` WHERE `id_parent` = 1 AND `id` = 1
SELECT ... WHERE `id_parent` = 1 ORDER BY `id` DESC

автор"2)по ответам на первый вопрос можно задать второй: а нужны ли вам вообще партиции (и индексы, если уж на то пошло)"
На таблицу в 40млн. записей индексы же нужны. Партиции нужны, так как я итак расширяюсь.

_____________________________

Смотрите какое дело, причина прошлой темы натолкнула меня на мысль полного рефакторинга. Я хочу старые таблицы заменить на новые, в итоге уберу лишние пару индексов + 8 ненужных полей, благо я набрался опыта, чтобы всё сделать значительно лучше. Таким образом я смогу размер таблицы сократить на 1/3 и прожить так ещё пол года-год. Но всё равно данные через год достигнут такого же объема, что и сейчас, но уже оптимизировать будет некуда, поэтому хотелось бы сразу создать всё правильно.
...
Рейтинг: 0 / 0
Как расставить индексы с партицией?
    #38951975
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inpost,

Ну партиции тебе место не съэкономят.
Да, если такие таблицы, делать партиции есть смысл, делай штук 40-100.
Как делать -- на 100% зависит от задачи.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как расставить индексы с партицией?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]