|
|
|
Как расставить индексы с партицией?
|
|||
|---|---|---|---|
|
#18+
аблица 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 раз в сутки, когда нет активности на сайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 17:09:27 |
|
||
|
Как расставить индексы с партицией?
|
|||
|---|---|---|---|
|
#18+
inpost Вопрос: Как правильно создать индексы и партиции в данной задаче? Нет, вопросов как минимум два: 1)какие запросы вы собираетесь ускорять 2)по ответам на первый вопрос можно задать второй: а нужны ли вам вообще партиции (и индексы, если уж на то пошло) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 08:49:03 |
|
||
|
Как расставить индексы с партицией?
|
|||
|---|---|---|---|
|
#18+
tanglirinpost Вопрос: Как правильно создать индексы и партиции в данной задаче? Нет, вопросов как минимум два: 1)какие запросы вы собираетесь ускорять 2)по ответам на первый вопрос можно задать второй: а нужны ли вам вообще партиции (и индексы, если уж на то пошло) самый главный вопрос - сколько записей в таблице. если меньше нескольких десятков миллионов - разделы не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 10:51:57 |
|
||
|
Как расставить индексы с партицией?
|
|||
|---|---|---|---|
|
#18+
Основная проблема из соседнего раздела: 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 и прожить так ещё пол года-год. Но всё равно данные через год достигнут такого же объема, что и сейчас, но уже оптимизировать будет некуда, поэтому хотелось бы сразу создать всё правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 14:56:47 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38951179&tid=1833242]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 298ms |

| 0 / 0 |
