有人会问mysql集群,和分表有什么关系吗?虽然它不是实际意义上的分表,但是它起到了分表的浸染。做集群的意义是什么呢?为一个数据库减轻包袱,说白了便是减少sql排队行列步队中的sql的数量。
举个例子:有10个sql要求,如果放在一个数据库做事器的排队行列步队中,他要等很永劫光,如果把这10个sql要求,分配到5个数据库做事器的排队行列步队中,一个数据库做事器的行列步队中只有2个,这样等待韶光是不是大大的缩短了呢?这已经很明显了。
优点:扩展性好,没有多个分表后的繁芜操作(php代码)

缺陷:单个表的数据量还是没有变,一次操作所花的韶光还是那么多,硬件开销大。
2,预先估计会涌现大数据量并且访问频繁的表,将其分为多少个表
这种预估大差不差的,论坛里面揭橥帖子的表,韶光长了这张表肯定很大,几十万,几百万都有可能。 谈天室里面信息表,几十个人在一起一聊一个晚上,韶光长了,这张表的数据肯定很大。像这样的情形很多。以是这种能预估出来的大数据量表,我们就事先分出个N个表,这个N是多少,根据实际情形而定。
优点:避免一张表涌现几百万条数据,缩短了一条sql的实行韶光
缺陷:当一种规则确定时,冲破这条规则会很麻烦,上面的例子中我用的hash算法是crc32,如果我现在不想用这个算法了,改用md5后,会使同一个用户的被存储到不同的表中,这样数据乱套了。扩展性很差。
3,利用merge存储引擎来实现分表
我以为这种方法比较适宜,那些没有事先考虑,而已经涌现了的,数据查询慢的情形。这个时候如果要把已有的大数据量表分开比较痛楚,最痛楚的事便是改代码,由于程序里面的sql语句已经写好了。