powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Альтернативы ALTER'y на большой таблице на нагруженной базе
17 сообщений из 17, страница 1 из 1
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219799
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Есть большая таблица (~ 2 млрд. записей) и к ней идёт порядка 80% всех запросов. В этой таблице нужно сделать ALTER (добавить 1 столбец). Тупо в лоб сделать alter понятное дело нельзя. Рассматривал вариант
Код: sql
1.
insert into table_new ... select ... from table_old


но тоже не подходит, так как после переименования таблиц сбросится кеш, а набор нового кеша сложит базу.
Между этой базой и другой настроена репликация master - master. Версия mysql 5.6.25.
Может кто-то знает какие-то другие варианты сделать alter?
Заранее спасибо.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219810
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, разумнее создать связанную 1:1 таблицу с нужным полем?

skeletorнабор нового кеша сложит базу.
Когда-нибудь всё равно это делать придётся. Почему не сейчас?
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219828
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял про связанную таблицу.

Насчёт кеша: не согласен с "Когда-нибудь всё равно это делать придётся". Мы исходили из следующего: что проще реализовать: alter таблицы или переписать часть кода, что бы это поле выгребалось из другой таблицы. Так вот, после анализа пришли к выводу, что проще сделать alter, нежели переписывать огромные участки кода во многих местах.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219861
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletorпосле анализа пришли к выводу, что проще сделать alter, нежели переписывать огромные участки кода во многих местах.
Фраза неясна. Как может потребоваться переписывание кода, если этого поля раньше не было, т.е. изменения не могут коснуться кода, который это поле не использует? Только новый код, знающий про это поле, будет его использовать...
Ну и... у вас что, структуры и запросы хардкодятся, что ли?

skeletorНасчёт кеша: не согласен с "Когда-нибудь всё равно это делать придётся".
Когда-нибудь или сервис перестартовывается, или весь комп. После рестарта кэш чист как слеза младенца...

skeletorНе понял про связанную таблицу.
Что именно не понято?
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219871
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletorно тоже не подходит, так как после переименования таблиц сбросится кеш, а набор нового кеша сложит базу.о каком именно кэше идет речь?
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219880
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftskeletorно тоже не подходит, так как после переименования таблиц сбросится кеш, а набор нового кеша сложит базу.о каком именно кэше идет речь?
Кеш запросов
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219883
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinaskeletorпосле анализа пришли к выводу, что проще сделать alter, нежели переписывать огромные участки кода во многих местах.
Фраза неясна. Как может потребоваться переписывание кода, если этого поля раньше не было, т.е. изменения не могут коснуться кода, который это поле не использует? Только новый код, знающий про это поле, будет его использовать...
Ну и... у вас что, структуры и запросы хардкодятся, что ли?

skeletorНасчёт кеша: не согласен с "Когда-нибудь всё равно это делать придётся".
Когда-нибудь или сервис перестартовывается, или весь комп. После рестарта кэш чист как слеза младенца...

skeletorНе понял про связанную таблицу.
Что именно не понято?

Не придирайтесь к словам. Я не программист, видимо так написан код (раз мне так объяснили). Насчёт рестарта базы, если какая-то из баз крешится, то переключаем всё на вторую базу и потом малыми порциями включаем нагрузку, что бы прокешировалась база. Пока писал вы меня натолкнули на одну мысль, попробую проверить.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219884
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletormiksoftпропущено...
о каком именно кэше идет речь?
Кеш запросовЭтот кэш и так сбрасывается при каждой модификации таблицы. Конечно, не весь, а результаты тех запросов, которые используют эту таблицу.

Кроме того, кэш запросов обычно бывает довольно небольшой (ибо большой тянет много накладных расходов) и, если что, заполнится обратно довольно быстро.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219892
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletor,
тупо сделать alter. с default.

пользователей остановить, ничего с ними не станет, переживут. Если что, начальству скажешь, что это - бесплатная говносубд, а не Oracle Enterprise Edition, так что за что заплатили, то и получили.

на крайняк не добавляй колонку, а сделай новую таблицу, PK старой плюс новые поля. И join.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219899
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletorAkinaпропущено...

Фраза неясна. Как может потребоваться переписывание кода, если этого поля раньше не было, т.е. изменения не могут коснуться кода, который это поле не использует? Только новый код, знающий про это поле, будет его использовать...
Ну и... у вас что, структуры и запросы хардкодятся, что ли?

пропущено...

Когда-нибудь или сервис перестартовывается, или весь комп. После рестарта кэш чист как слеза младенца...

пропущено...

Что именно не понято?

Не придирайтесь к словам. Я не программист, видимо так написан код (раз мне так объяснили). Насчёт рестарта базы, если какая-то из баз крешится, то переключаем всё на вторую базу и потом малыми порциями включаем нагрузку, что бы прокешировалась база. Пока писал вы меня натолкнули на одну мысль, попробую проверить.


а чего ты тогда этим вообще занимаешься?
оставь это профессионалам, Или хотя-бы тем, кто себья так называет.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219900
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skeletorНе придирайтесь к словам. Я не программист, видимо так написан код (раз мне так объяснили).Я вижу невозможную информацию. И стараюсь прояснить ситуацию. И вместо ответов возмущаться - неконструктивно.
А что программисты врут в надежде минимизировать свои трудозатраты - это понятно.

ALTER TABLE на такой таблице в любом случае растянется как минимум на часы, а то и дни. И всё это время таблица будет недоступна. Так что только создание новой структуры и перекачка данных в неё - пусть и с повышенной нагрузкой, но это можно сделать без остановки основных процессов. Останов БД на время догрузки недостающего хвоста и подмены таблицы - минимальное зло, если выбрана именно модификация структуры.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219911
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по отдельной таблице.

вместо добавления поля в данную таблицу можно создать новую таблицу с новым полем и первичным ключом старой.
это будет быстро и не будет блокировать никого.
приложение при этом должно естественно вставлять запись и в новую таблицу, и брать данные откуда тоже. разумеется, это делать можно не всегда, а только если нужно эти данные сохранить или прочитать.

это - дежурный прием проектирования бд на этапах эксплуатации, в тех условиях, когда невозможно делать alter table. (alter table иногда все же делать можно и нужно).

если бы ты обратился к профессионалам, они наверняка бы тебе это подсказали.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39219931
skeletor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivесли бы ты обратился к профессионалам, они наверняка бы тебе это подсказали.
ну собственно поэтому сюда и написал :)
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39220144
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторALTER TABLE на такой таблице в любом случае растянется как минимум на часы, а то и дни. И всё это время таблица будет недоступна

нечетатель раздела 15.11.1 Overview of Online DDL детектед.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39220163
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторALTER TABLE на такой таблице в любом случае растянется как минимум на часы, а то и дни. И всё это время таблица будет недоступна

нечетатель раздела 15.11.1 Overview of Online DDL детектед.Все равно радости мало.
http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html Add a column

Although ALGORITHM=INPLACE is allowed, the data is reorganized substantially, so it is still an expensive operation.
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39220216
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowнечетатель раздела 15.11.1 Overview of Online DDL детектед.
Add a columnAlthough ALGORITHM=INPLACE is allowed, the data is reorganized substantially, so it is still an expensive operation . ALGORITHM=INPLACE is supported for adding a virtual generated column but not for adding a stored generated column .
Так что как была операция дорогая, так и остаётся...
Что же до доступа - вот у меня счас в одном окне консоли добавляется поле в 8-гиговую таблицу (с ALGORITHM=INPLACE есссно), а в другом простой SELECT сидит и ждёт, когда это безобразие закончится... 5.7.11, InnoDB, file_per_table...
...
Рейтинг: 0 / 0
Альтернативы ALTER'y на большой таблице на нагруженной базе
    #39220477
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaScareCrowнечетатель раздела 15.11.1 Overview of Online DDL детектед.
Add a columnAlthough ALGORITHM=INPLACE is allowed, the data is reorganized substantially, so it is still an expensive operation . ALGORITHM=INPLACE is supported for adding a virtual generated column but not for adding a stored generated column .
Так что как была операция дорогая, так и остаётся...
Что же до доступа - вот у меня счас в одном окне консоли добавляется поле в 8-гиговую таблицу (с ALGORITHM=INPLACE есссно), а в другом простой SELECT сидит и ждёт, когда это безобразие закончится... 5.7.11, InnoDB, file_per_table...


https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Альтернативы ALTER'y на большой таблице на нагруженной базе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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