我正在使用Ruby on Rails 3.0.7和MySQL 5.在我的应用程序中,我有两个数据库表,比如TABLE1和TABLE2,并且出于性能方面的原因,我已经对TABLE2中的一些数据进行了归一化处理, TABLE1的值。现在,在TABLE1中,我需要更新一些涉及的值,当然,我还必须正确更新TABLE2中的非规格化值。正在更新非规范化数据库表
我能做些什么来以高性能的方式更新这些值?也就是说,如果TABLE2包含很多值(1.000.000或更多),那么更新这两个表(技术,实践...)的最佳方法是什么?
更新数据库表所需时间会发生什么?例如,用户在加入涉及那些非规范化值的某些网站页面时可能会遇到一些问题?如果是这样,那是什么,我该如何处理这种情况?
您应该使用触发器(或者两个触发器 - 每个表上一个触发器(如果允许更新这两个表)同步保留这些触发器 - 以便在更改一个表时,更改会传播到另一个表表。 – Flimzy
@Flimzy - 正如你所说,为了更新大型表格会有很多工作......性能呢? – user502052
嗯,这意味着你每次更新两张表时都会更新两张表 - 所以表现可能大概是一半(取决于很多因素) - 但这就是你想要的,对吧?没有保持数据一致所带来的性能下降,就无法保证数据的一致性。现在,如果您的数据不必是实时一致的,您可能可以将传播从一个表格传输到另一个表格,而不是每小时/每天/每周/其他,这可能会更有效,具体取决于您的情况。但根据你的问题中的信息,我不能说这是否适合你。 – Flimzy