MYSQL的一个表中的数据已经达到了2000万条
数据查询很慢很慢了, 不知道如何改进?现在的方法都是做了很多缓存表,但是数据都不实时了。我执行这样一条语句 select max(id) from unit_keywords 用了 7 秒,机器性能比较好,64位,4核,8G内存
数据查询很慢很慢了, 不知道如何改进?现在的方法都是做了很多缓存表,但是数据都不实时了。我执行这样一条语句 select max(id) from unit_keywords 用了 7 秒,机器性能比较好,64位,4核,8G内存
也许你的配置是小型数据库用的
用一个表来记录最大的哪个ID
给unit_keywords表加一个触发器添加数据把ID更新到记录最大ID的哪个表就行.
我想应该是你们的业务同时存在对这个表进行SELECT、INSERT和UPDATE的操作,甚至还可能会有DELETE。 事实上,很多业务为了追求性能,是采用MySql的MyISAM表,并将业务进行优化,仅保留SELECT和INSERT操作的。 这是因为INSERT无需锁表,而SELECT之间也不会互锁。 至于需要更新数据的问题,完全可以通过将需要更新的字段剥离到新表中,对新表进行UPDATE的方法来进行(当然,这是在UPDATE操作并不太频繁的情况下,太频繁的话就没有意义了)。另外就是根据业务的查询子句,建立相应的索引。 MySql的Explain指令可以起到很大的参考作用。
而缓存表的问题,则建议你们通过另外的缓存服务比如APC或者Memcache之类来实现,并确保在更新数据的同时对缓存进行更新。不清楚你的表结构,只是说明些常见做法。 如果可以的话,建议你将show create table的结果放出来会更利于分析。