Теперь предложенные структуры таблиц: -
data_table
->impressions
->clicks
->ctr
OR
data_table_1
->ctr
data_table_2
->impressions
->clicks
Какие запросы выполняются?
Есть около 500 обновлений в секунду для показов. Существует около 1 обновления для кликов каждую секунду. Для ctr существует около 500 обновлений в секунду.
Теперь мое приложение сортирует данные с помощью ctr. Ctr - это рейтинг кликов, который определяется ctr = clicks/impressions
. Теперь я понял, что если нет обновления клика, то нет необходимости в обновлении ctr, так как увеличиваются все показы для статей, что приводит к уменьшению ctr в тех же отношениях, поэтому, если нет щелчка, ctr не нужно быть обновленным.
В настоящее время запрос на обновление похож на «ОБНОВИТЬ data_table SET. Показы = Показы + 1, CTR = Клики / Показы, ГДЕ что-то = что-то
Это означает, что, хотя 2 поля обновляются одновременно, выполняется только 1 запрос.
Теперь узким местом является то, что эти 500 обновлений вызывают замедление выбора в этой таблице. Есть около 20 вариантов в секунду. Поэтому я подумал о разделении таблиц. Новый стиль таблицы предполагает, что обновления происходят в отдельной таблице, а выбор происходит в отдельной таблице. Таблица данных, которая содержит показы, обновляется очень часто, поэтому наличие обновлений для выполненных показов действительно повышает производительность этой таблицы. Это означает, что выборки в data_table_2 также будут выполняться быстрее, и ctr может обновляться каждый раз, когда кто-то делает щелчок.
Итак, я просто хотел знать, должен ли я использовать новую структуру таблицы или нет. Какие у тебя предложения? Плюсы и минусы моих предложений!