PHP面试之分库分表

2019-10-11  本文已影响0人  梅先森森森森森森

真题

简述MySQL分表操作和分区操作的工作原理,分别说说分区和分表的使用场景和各自的优缺点。

分区表的原理

工作原理

对用户而言,分区表是一个独立的逻辑表,但是底层 MYSQL将其分成了多个物理子表,这对用户来说是透明的,每一个分区表都会使用一个独立的表文件。

创建表时使用 partition by子句定义每个分区存放的数据,执行查询时,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询只需要查询所需数据在的分区。

分区的主要目的是将数据按照一个较粗的粒度分在不同的表中,这样可以将相关的数据存放在一起,而且如果想一次性删除整个分区的数据也很方便。

使用场景

限制

分库分表的原理

工作原理

通过一些hash算法或工具实现将一张数据表垂直或者水平进行物理分割。

使用场景

分表方式

水平分割

表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度

image

使用场景

水平分表缺点

垂直分割

把主键和一些列放在一个表,然后把主键和另外的列放在另一张表中。

image

使用场景

垂直分表缺点

分表的缺点

延伸:MySQL的主从复制原理及负载均衡

MySQL的主从复制原理

主从复制解决的问题

上一篇下一篇

猜你喜欢

热点阅读