余杭门户网站,邮件营销 wordpress,商业网站是怎么做的,手机网站有什么区别前言 垂直分表是分库分表中分表操作上一个重要的实现方式#xff0c;利用垂直分表可以提高数据的处理效率和查询速度#xff0c;本节主要围绕 垂直分表为什么能够加快查询速度 展开说明#xff0c;以mysql查询的底层流程为例。 垂直分表是将一张表按列分为多张表#xff0c… 前言 垂直分表是分库分表中分表操作上一个重要的实现方式利用垂直分表可以提高数据的处理效率和查询速度本节主要围绕 垂直分表为什么能够加快查询速度 展开说明以mysql查询的底层流程为例。 垂直分表是将一张表按列分为多张表每张表的结构都不相同多张表通过主键进行关联从而组成完整的数据。垂直分表可以将热点数据经常查询、更新频繁的列分离出来放在独立的表中
原因表层 这里先从表层说一下垂直分表为什么可以加快操作和查询效率 查询性能提高垂直分表可以将热点数据经常查询、更新频繁的列分离出来放在独立的表中这样查询这些数据时就不需要查询整个表只需要查询较小的数据集从而提高了查询性能。数据冗余度提高垂直分表中的数据是按照列进行分离的这样可以提高数据的冗余度即重复存储一些数据以备不时之需。这样即使某个列的数据发生更改也只需要更新相应的表不会影响其他表的数据从而提高了数据的安全性。并发处理能力提高垂直分表可以将不同的列存储在不同的表或数据库中这样可以并行处理不同的表或数据库提高了并发处理能力。 原因底层 减少I/O操作MySQL在执行查询时需要读取表中的数据而读取磁盘上的数据是需要消耗一定的I/O操作。如果一个表的数据量很大那么读取整个表的数据就需要花费很长的时间。垂直分表将表按照列进行拆分将不同的列存储在不同的表中这样在查询时只需要读取需要的列从而减少了I/O操作提高了查询效率。减少锁的开销在并发处理时需要对表进行加锁以保护数据的一致性。如果一个表的数据量很大那么在对这个表进行加锁时就会花费很长的时间并且也会占用很多的内存。垂直分表将不同的列存储在不同的表中可以并行处理不同的表从而减少了锁的开销提高了并发处理能力。索引的使用垂直分表将不同的列存储在不同的表中可以根据列的重要性和使用频率建立相应的索引。对于经常查询的列可以建立更精细的索引而对于不经常查询的列则不需要建立索引。这样可以使索引的使用更加合理从而提高查询效率。数据量的减少垂直分表将一张表按照列进行拆分将不同的列存储在不同的表中这样每个表的数据量就会减少很多。如果一个表的数据量很大那么在对这个表进行查询时就会花费很长的时间。而垂直分表将数据分散到多个表中每个表的数据量减少了很多从而减少了查询时间。 以下例子按照索引形式说明 数据库表中的数据以页为单位存储在服务器的磁盘中若不进行垂直分表在数据量很大的情况下一页可以存储的行数很少因为有很多列每次查询时按照页将一整页数据加载进内存一次IO一页若一页中存储的行数很少则可能会进行多次IO才能找到目标所在行而进行垂直分表之后将热点列单独取出放到了一张新表中此时因为列减少了每页存储的行数就增加了所需能找到目标所在行的IO操作次数就减少了。因此垂直分表可以使数据库的查询操作变快。