mysql 动静数据分离
记录一下今天学习到的东西引发的思考,可能有些错误,还望指出
mysql在遇到大量数据时总要分表,对于分表时用join进行分页或者聚合会导致查询很慢,于是我们需要一种方式来完善这个
merge引擎:
这个引擎不储存数据,而是把一组MyISAM数据表当成一个逻辑单元对待,这让我们可以同时对这一组表进行查询。
MyISAM引擎:
5.x版本的默认引擎(现在是innodb)不支持事务,读的速度很快,同时有读写的情况并发量很低(读和写会加锁),适用于储存静态数据。
跟据上面两个引擎的优点,我们可以有一下做法,比如常见的订单的业务,需要读和写,并且有大量的静态数据(历史已完成交易的订单)。可以用以下方案:
1.对于已经交易完成的订单,可以用MyISAM引擎建表按照时间进行分表然后合并到merge表中查找这方面的记录就走merge表
2.对于未完成的订单用innodb引擎建表并储存,并写一个定时任务定时将已完成的订单移交到历史表中#Java#
mysql在遇到大量数据时总要分表,对于分表时用join进行分页或者聚合会导致查询很慢,于是我们需要一种方式来完善这个
merge引擎:
这个引擎不储存数据,而是把一组MyISAM数据表当成一个逻辑单元对待,这让我们可以同时对这一组表进行查询。
MyISAM引擎:
5.x版本的默认引擎(现在是innodb)不支持事务,读的速度很快,同时有读写的情况并发量很低(读和写会加锁),适用于储存静态数据。
跟据上面两个引擎的优点,我们可以有一下做法,比如常见的订单的业务,需要读和写,并且有大量的静态数据(历史已完成交易的订单)。可以用以下方案:
1.对于已经交易完成的订单,可以用MyISAM引擎建表按照时间进行分表然后合并到merge表中查找这方面的记录就走merge表
2.对于未完成的订单用innodb引擎建表并储存,并写一个定时任务定时将已完成的订单移交到历史表中#Java#