我正在考虑加入一个由许多(〜8)规范化的表非规范化的饲喂表上添加我的数据库中一些非规范化的信息,专门用于提高核心使用select查询时间在我的网站上的情况。MySQL的非规范化与触发器,具体咨询
与查询当前方法的问题是:
慢速查询时间,有8和12之间的连接(一些左的连接)来访问此信息,使用情况下,该对于某些查询可能需要〜3000ms。
表锁定/阻塞,当信息在一天或一周的繁忙时间进行更新,(因为我使用MyISAM表)查询被锁定/阻塞,这可能会导致进一步的问题(连接耗尽,性能越差)
我使用Hibernate(3.5.2),MySQL 5.0中(所有的MyISAM表)和Java 1.6
我想一些具体的建议(最好是基于具体经验)约到底什么才是更新非规格化表的最好方法。
下面,我想起
- 创建与INNODB型非规范化表,让我得到行级锁,而不是表锁
- 在正确规范化表创建触发器更新反规格表
我在寻找:
- 问题 - 我可能没有想到的事情会影响我期望的结果。
- 特定的MySql设置可以提高性能,减少非规格化表上的锁定/阻塞。
- 为此场景编写触发器的最佳方法。
- ?
让我知道是否有任何其他信息需要帮助回答这个问题。
干杯。
非规范化的数据是否严格数字?非规范化操作是否严格代数? – 2011-12-27 15:48:22
你在说多少数据? 10行? 10M行?你可能会更好地服务于更多/更好/覆盖索引。查询是静态的吗?您也可以预先缓存它。 '解释器'对你的查询说了什么? – ethrbunny 2011-12-27 15:55:38
操作都是代数(我认为),没有像字符串比较或全文字符串搜索 – 2011-12-27 16:10:01