mysql数据库的分区与分表(概念性说明)

为什么要分区或者分表

分区、分表都是解决数据量大,查询数据慢的主要手段。

正常情况下

一个innodb表,在没有分区分表情况下。在数据库文件数据中,它是有一个存储表结构的.frm文件和一个存储表数据的.ibd文件

分区

当对一个表进行分区的时候。表面上还是一个表,数据保存在不同的位置上,当读取数据的时候,操作的表名还是原来的表名mysql会自己组织各个分区的数据。关于表的结构信息的.frm还是只有一个的,但是.ibd文件就有多个了。

分表

对一个表进行分表的时候,不管表面上还是实际上,都已经有不同的表,数据库操作的时候,需要你制定具体的表进行操作。此时,分表后,就会出现多.frm,多.ibd文件(毕竟是多个独立表结构了。)

先分区还是先分表

关于这个问题,本人认为没有标准答案。根据自己业务情况来决定。一般情况下,数据量大的时候,考虑先分区,毕竟分区的代价很小。当分区搞不定的时候,考虑分表,表小了,页缓存率也高了,IO读写性能更优了,也降低锁带来的堵塞,提高事务处理效率。小表提升备份与恢复的速度。同时具备很好的横向扩展性。