现在建议的表结构是:-
data_table
->impressions
->clicks
->ctr
或者
data_table_1
->ctr
data_table_2
->impressions
->clicks
执行了哪些查询?展示次数每秒大约有 500 次更新。每秒大约有 1 次点击更新。ctr 每秒大约有 500 次更新。
现在我的应用程序使用 ctr 对数据进行排序。ctr 是由 计算得出的点击率ctr = clicks/impressions
。现在我意识到,除非有点击更新,否则 ctr 不需要更新,因为文章的所有印象都在增加,这会降低相同关系中的 ctr,所以除非有点击,否则 ctr 不需要被更新。
目前更新查询类似于“UPDATE data_table SET 展示次数 = 展示次数 + 1,ctr = 点击次数 / 展示次数 WHERE something = something
这意味着尽管一次更新了 2 个字段,但只执行了 1 个查询。
现在的瓶颈是这 500 次更新导致此表上的选择变慢。每秒大约有 20 次选择。所以我想把桌子分开。新的表格样式建议更新发生在单独的表格上,选择发生在单独的表格上。包含展示次数的数据表更新非常频繁,因此对其执行的展示次数进行更新确实加快了该表的性能。这意味着 data_table_2 上的选择也会更快,并且每次有人点击时都可以更新 ctr。
所以,我只是想知道我是否应该使用新的表结构。你有什么建议?我的建议的优点和缺点!