现在所提出的表结构是: -50/50插入和选择。创建两个表或一个表
data_table
->impressions
->clicks
->ctr
OR
data_table_1
->ctr
data_table_2
->impressions
->clicks
执行什么疑问? 展示次数每秒约有500次更新。每秒约有1次点击更新。中心每秒约有500次更新。
现在我的应用程序使用ctr对数据进行排序。 ctr是由ctr = clicks/impressions
制定的点击率。现在我已经意识到,除非有点击更新,否则ctr不需要更新,因为文章的所有印象正在增加,这会降低同一关系中的ctr,因此除非有点击,否则ctr不需要被更新。
目前更新查询是像“UPDATE data_table SET曝光=展示+ 1,CTR =点击/展示WHERE东西=东西
这意味着,虽然2个字段被一次更新仅执行1查询。
现在的瓶颈是这500个更新导致这个表上的选择减慢每秒约有20个选择所以我想分离表格新的表格样式提出更新发生在单独的表和选择发生在一个单独的表上包含印象的数据表被更新得非常频繁,因此对印象进行更新perf以此为基础确实加快了这张桌子的表现。这意味着data_table_2上的选择也会更快,并且每次有人点击时都可以更新ctr。
所以,我只是想知道我是否应该使用新的表格结构。你有什么建议?我的建议的优点和缺点!
为什么'ctr'列甚至存在,考虑到它是从其他列派生的?为什么你不能只用一个视图来投影'ctr'? – cdhowie
你使用这些表的数据库引擎是什么? –