处理大型数据表

处理大型数据表

💡 原文英文,约2600词,阅读约需10分钟。
📝

内容提要

本文介绍了处理大型数据库中大表的三种技术:垂直扩展、垂直分片和水平分片。这些技术可以根据表的增长阶段来使用,以实现数据库的可扩展性。

🔎

延伸解读

大表为何成为扩展瓶颈

文章指出,生产数据库虽有成百上千张表,但通常只有少数表会增长到数百GB甚至TB级别。以健身应用为例,exercise_log表随用户每次锻炼新增多行,日增数百万行,最终可达数十亿行,且包含大量频繁访问的历史数据,无法简单视为冷数据。这种单表快速增长是聊天、社交等应用的共性挑战,也是扩展困难的核心原因。

垂直扩展的适用边界与成本

垂直扩展通过提升单机CPU、内存和磁盘来应对增长,在表快速增长但计算尚可时可能只需扩容磁盘。云VM上可在线调整卷大小,而裸金属需手动操作。但文章提醒,当数据库达到多TB、需要数百GB内存和大量核心时,物理机或云VM成本会变得难以承受,且内存争用可能拖慢数据库,此时应考虑垂直分片。

垂直分片:隔离大表与读写负载

垂直分片将大表或读写最重的表移到独立服务器。文章以exercise_log为例,将其迁至新keyspace,原库降配,从而分别扩展存储与计算。使用Vitess的MoveTables工作流可在不停机下复制数据并切换流量,但大表迁移可能耗时数小时。此方案适合单主写入遇到瓶颈时,为后续水平分片做准备。

水平分片的关键:分片键选择

水平分片将单表行分散到多台服务器,Vitess常用哈希分片。文章强调分片键选择至关重要:若按log_id哈希,用户日志会散落所有分片,查询历史需访问多台MySQL,性能极差;改用user_id哈希,同一用户数据落在同一分片,读写集中,分布也更均匀。分片后还能提升写入吞吐、并行备份、故障隔离并可能节省成本。

❓

Q&A

处理大型数据表的主要技术有哪些?

处理大型数据表的主要技术有垂直扩展、垂直分片和水平分片。

什么是垂直扩展,它如何帮助处理大表?

垂直扩展是通过增加服务器的计算和存储能力来处理快速增长的表。

水平分片的关键是什么?

水平分片的关键是选择合适的分片键,以确保数据的均匀分布。

为什么要使用垂直分片?

垂直分片可以将大型表移动到不同的服务器上,以便更好地管理读写负载。

如何选择水平分片的分片策略?

选择水平分片的分片策略时,可以考虑使用哈希分片,以实现数据的均匀分布。

这三种技术适用于数据表的哪个阶段?

这三种技术适用于表的不同增长阶段,通常先进行垂直扩展,然后进行垂直分片,最后使用水平分片。

🏷️

标签

➡️

继续阅读