Управление запросами из огромной таблицы, которая занимает много времени, чтобы изменить / обновить

у меня есть очень огромная таблица"table1", из которой я постоянно запрашиваю весь день(24×7)

Что происходит в конце дня, скажем, в 12.AM, я запускаю запрос, который бы alter "table1" at row level. это действие занимает около 3-4 часов, пока мой обновленный "table1"не закончит создание.

Но до этого времени я хотел еще спросить от "table1".

Поэтому я решил создать две таблицы. "table1_active" and "table1_passive"

обычно в течение дня я буду запрашивать от "table1_passive"и после обновления «table1_active» я должен переключить мой запрос от "table1_passive"
к "table1_active"

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

Я не знаю, есть ли лучший способ на самом деле установить триггер или кто-нибудь может предложить мне способ сделать это?

1 ответ

  1. По моему опыту, использование вторичной таблицы, как table1_passiveэто рискованно. Вы не знаете точно (как я понимаю), когда процесс обновления завершится, поэтому вы не будете знать, когда вы должны переключать запросы между table1_passiveи table1_active.

    Есть несколько способов улучшить процесс обновления над вашей таблицей, но вы должны иметь в виду, что это временные решения, если table1постоянно растет:

    • Используйте MyISAM в качестве механизма хранения. Вот очень хорошая статья об улучшении обновлений по таблице MyISAM.

    • При обновлении table1на основе предложения where можно использовать индексы, чтобы помочь компоненту database engine найти, какие записи необходимо обновить.

    • Рассмотрите возможность использования разделов для более быстрой работы с таблицей.

    • Если у вас есть эти два стола, вы можете:

      1. Создайте Unique_Index table1_activeи установите на повторяющееся обновление ключа
      2. Update table1_passive.
      3. Используйте bulk insert in table1_activeдля ускорения процесса, база данных будет убедиться, что нет повторяющихся строк на основе ваших критериев.

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

    Если бы мы могли знать структуру таблицы и запрос обновления, который вы используете, возможно, мы могли бы помочь вам лучше 😉

    С уважением и удачи!