MySQL为什么要分区分表,什么是分区分表

主要原因:在对MySQL的某个表或者该表的某行数据进行操作时,为了保证数据的完整性,需要对表进行表锁定或者行锁定。锁定后别的sql只有在你操作完成后才能进行操作。在这种情况下,分表或者分区将会是一个很好的解决办法。

什么是分表
分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的表名,然后去操作它。
将单个数据库表进行拆分,拆分成多个数据表,然后用户访问的时候,根据一定的算法(如用hash的方式,也可以用求余(取模)的方式),让用户访问不同的表,这样数据分散到多个数据表中,减少了单个数据表的访问压力。提升了数据库访问性能。分表的目的就在于此,减小数据库的负担,缩短查询时间。

什么是分区

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,分区后,表还是一张表,但数据散列到多个位置了。app读写的时候操作的还是表名字,db自动去组织分区的数据。

分区分表都是为了提高mysql在高并发情况下的处理能力,而且互不矛盾,相互结合。

你可能感兴趣的:(MySQL)